4#include <gtkmm/window.h>
5#include <gtkmm/applicationwindow.h>
7#include <gtkmm/progressbar.h>
8#include <gtkmm/spinner.h>
9#include <gtkmm/label.h>
11#include <gtkmm/button.h>
12#include <gtkmm/builder.h>
13#include <gtkmm/cssprovider.h>
15#include <glibmm/dispatcher.h>
16#include <giomm/settings.h>
17#include <giomm/actiongroup.h>
22#include "nlohmann/json.hpp"
29#include "../common/TeXEngine.hh"
48 virtual void add_cell(
const DTree&, DTree::iterator,
bool)
override;
273 std::string
save(
const std::string&
fn)
const;
349#if GTKMM_MINOR_VERSION>=10
int quit(void *)
Definition Server.cc:328
The Cadabra notebook application.
Definition Cadabra.hh:12
Base class which talks to the server and sends Action objects back to the DocumentThread.
Definition ComputeThread.hh:29
Definition DataCell.hh:116
A base class with all the logic to manipulate a Cadabra notebook document.
Definition DocumentThread.hh:41
ComputeThread * compute
Definition DocumentThread.hh:160
Abstract base class with methods that need to be implemented by any GUI.
Definition GUIBase.hh:16
Each notebook has one main window which controls it.
Definition NotebookWindow.hh:41
void on_file_quit()
Definition NotebookWindow.cc:2596
virtual void load_from_string(const std::string ¬ebook_contents) override
Load a new notebook from a JSON string.
Definition NotebookWindow.cc:2308
void on_view_split()
Definition NotebookWindow.cc:2804
bool kernel_spinner_status
Definition NotebookWindow.hh:178
virtual void process_data() override
When the ComputeThread needs to modify the document, it stores an ActionBase object on the stack (see...
Definition NotebookWindow.cc:1161
virtual void set_compute_thread(ComputeThread *compute) override
Let the notebook know about the ComputeThread so that it can send cells for evaluation.
Definition NotebookWindow.cc:2919
bool cell_content_erase(int, int, DTree::iterator, int)
Definition NotebookWindow.cc:2075
Gtk::Box mainbox
Definition NotebookWindow.hh:154
void tex_run_async()
Definition NotebookWindow.cc:1224
std::unique_ptr< DiffViewer > diffviewer
Definition NotebookWindow.hh:165
bool on_copy_as_latex(const DTree::iterator it)
Definition NotebookWindow.cc:2182
Gtk::Label kernel_label
Definition NotebookWindow.hh:179
Glib::RefPtr< Gio::SimpleAction > action_fontsize
Definition NotebookWindow.hh:344
virtual void set_progress(const std::string &msg, int cur_step, int total_steps) override
Definition NotebookWindow.cc:1644
std::string progress_string
Definition NotebookWindow.hh:186
void on_tools_options()
Definition NotebookWindow.cc:3422
void on_file_export_html()
Definition NotebookWindow.cc:2433
virtual void on_connect() override
Network status is propagated from the ComputeThread to the GUI using the following methods.
Definition NotebookWindow.cc:1168
std::recursive_mutex tex_need_width_mutex
Definition NotebookWindow.hh:329
bool on_scroll_changed()
Definition NotebookWindow.cc:1965
void propagate_global_hide_flag()
Definition NotebookWindow.cc:3274
bool tex_running
Definition NotebookWindow.hh:331
double display_scale
Definition NotebookWindow.hh:71
Glib::RefPtr< Gtk::CssProvider > css_provider
Definition NotebookWindow.hh:322
void on_edit_copy(const Glib::VariantBase &)
Definition NotebookWindow.cc:2614
void compare_to_file()
Definition NotebookWindow.cc:3059
void on_scroll_size_allocate(Gtk::Allocation &)
Definition NotebookWindow.cc:1978
Glib::Dispatcher dispatch_update_status
Definition NotebookWindow.hh:193
virtual bool on_configure_event(GdkEventConfigure *cfg) override
Definition NotebookWindow.cc:1061
void on_crash_window_closed(int)
Definition NotebookWindow.cc:1329
void on_prefs_choose_colours()
Definition NotebookWindow.cc:3399
int status_col
Definition NotebookWindow.hh:188
void on_run_cell()
Definition NotebookWindow.cc:2825
void on_search_text_changed()
Search handling.
Definition NotebookWindow.cc:2729
int tex_need_width
Definition NotebookWindow.hh:332
int last_configure_width
Definition NotebookWindow.hh:326
void select_range(const DTree &, DTree::iterator, int start, int len)
Definition NotebookWindow.cc:1857
void process_todo_queue()
Todo deque processing logic.
Definition NotebookWindow.cc:1277
void on_edit_undo(const Glib::VariantBase &)
Definition NotebookWindow.cc:2604
void on_prefs_hide_input_cells(const Glib::VariantBase &vb)
Definition NotebookWindow.cc:3257
virtual void remove_cell(const DTree &, DTree::iterator) override
Remove a single cell together with all its child cells.
Definition NotebookWindow.cc:1678
double progress_frac
Definition NotebookWindow.hh:187
virtual size_t get_cursor_position(const DTree &, DTree::iterator) override
Retrieve the position of the cursor in the current cell.
Definition NotebookWindow.cc:1879
Gtk::Button tool_restart
Definition NotebookWindow.hh:151
Glib::RefPtr< Gio::SimpleActionGroup > actiongroup
Definition NotebookWindow.hh:145
void compare_git_latest()
Definition NotebookWindow.cc:3131
Glib::Dispatcher dispatcher
Definition NotebookWindow.hh:141
virtual bool on_unhandled_error(const std::exception &err) override
Definition NotebookWindow.cc:1105
void interactive_execute()
Definition NotebookWindow.cc:2116
void on_edit_find()
Definition NotebookWindow.cc:2721
Gtk::Box toolbar
Definition NotebookWindow.hh:149
std::string kernel_string
Definition NotebookWindow.hh:186
Glib::RefPtr< Gio::SimpleAction > action_undo
Definition NotebookWindow.hh:343
void handle_thread_tex_error()
Handle a TeX error which occurred on a threaded TeX run (activated by tex_run_async) and is stored in...
Definition NotebookWindow.cc:1098
bool read_only
Definition NotebookWindow.hh:209
DTree::iterator selected_cell
Definition NotebookWindow.hh:128
Gtk::Button tool_run
Definition NotebookWindow.hh:151
Glib::RefPtr< Gio::SimpleAction > action_paste
Definition NotebookWindow.hh:344
Gtk::Label status_label
Definition NotebookWindow.hh:179
Glib::RefPtr< Gio::SimpleAction > action_hide_input_cells
Definition NotebookWindow.hh:345
void on_edit_paste()
Definition NotebookWindow.cc:2626
void on_realize() override
Definition NotebookWindow.cc:80
Glib::RefPtr< Cadabra > cdbapp
Definition NotebookWindow.hh:133
void on_file_export_python()
Definition NotebookWindow.cc:2482
std::mutex status_mutex
Definition NotebookWindow.hh:185
Gtk::Label top_label
Definition NotebookWindow.hh:179
Gtk::SearchBar searchbar
Definition NotebookWindow.hh:155
void refresh_highlighting()
Definition NotebookWindow.cc:3528
std::string last_find_string
Definition NotebookWindow.hh:336
Gtk::ProgressBar progressbar
Definition NotebookWindow.hh:176
Gtk::CheckButton search_case_insensitive
Definition NotebookWindow.hh:158
void on_help_about()
Definition NotebookWindow.cc:2924
virtual void dim_output_cells(DTree::iterator it) override
Dim all output cells of the visual cells corresponding to the given document cell.
Definition NotebookWindow.cc:2088
void resize_codeinput_texview_all(int width)
Definition NotebookWindow.cc:1003
Gtk::Label search_result
Definition NotebookWindow.hh:159
void on_edit_insert_below()
Definition NotebookWindow.cc:2683
void on_edit_insert_above()
Definition NotebookWindow.cc:2667
void on_prefs_use_defaults()
Definition NotebookWindow.cc:3406
std::string run_git_command(const std::string &args)
Definition NotebookWindow.cc:3086
void on_help() const
Definition NotebookWindow.cc:2886
Glib::Dispatcher dispatch_tex_error
Definition NotebookWindow.hh:193
void on_edit_split()
Definition NotebookWindow.cc:2766
virtual bool on_key_press_event(GdkEventKey *) override
Definition NotebookWindow.cc:1334
std::string clipboard_cdb
Definition NotebookWindow.hh:270
void on_help_register()
Definition NotebookWindow.cc:2955
Gtk::Button tool_restart_and_run_all
Definition NotebookWindow.hh:151
void update_title()
Definition NotebookWindow.cc:1117
Gtk::Button tool_stop
Definition NotebookWindow.hh:151
std::vector< Glib::RefPtr< Gio::SimpleAction > > default_actions
Definition NotebookWindow.hh:135
std::unique_ptr< std::thread > tex_thread
Definition NotebookWindow.hh:330
void on_edit_delete()
Definition NotebookWindow.cc:2701
bool is_configured
Definition NotebookWindow.hh:338
void on_edit_redo(const Glib::VariantBase &)
Definition NotebookWindow.cc:2609
void on_clipboard_get(Gtk::SelectionData &, guint info)
Clipboard handling.
Definition NotebookWindow.cc:3622
Gtk::Paned dragbox
Definition NotebookWindow.hh:153
std::string clipboard_txt
Definition NotebookWindow.hh:270
void on_prefs_microtex(bool on)
Definition NotebookWindow.cc:3367
void on_prefs_highlight_syntax(bool on)
Definition NotebookWindow.cc:3335
Gtk::Box supermainbox
Definition NotebookWindow.hh:152
void on_file_save_as_jupyter()
Definition NotebookWindow.cc:2400
virtual void position_cursor(const DTree &, DTree::iterator, int pos) override
Position the cursor in the current canvas in the widget corresponding to the indicated cell.
Definition NotebookWindow.cc:1812
Glib::RefPtr< Gio::SimpleAction > action_copy
Definition NotebookWindow.hh:343
bool on_first_redraw()
Definition NotebookWindow.cc:2329
void set_stop_sensitive(bool)
Definition NotebookWindow.cc:1153
void on_clipboard_clear()
Definition NotebookWindow.cc:3635
void unselect_output_cell()
Definition NotebookWindow.cc:3547
std::string tex_error_string
Definition NotebookWindow.hh:333
void scroll_cell_into_view(DTree::iterator cell)
Definition NotebookWindow.cc:1900
void on_file_export_latex()
Definition NotebookWindow.cc:2454
void on_run_stop()
Definition NotebookWindow.cc:2855
double scale
Definition NotebookWindow.hh:70
void on_prefs_font_size(int num)
Definition NotebookWindow.cc:3299
std::pair< DTree::iterator, size_t > last_find_location
Definition NotebookWindow.hh:335
void select_git_path()
Functionality for the diff viewer.
Definition NotebookWindow.cc:3049
void on_text_scaling_factor_changed(const std::string &key)
Definition NotebookWindow.cc:3026
bool crash_window_hidden
Definition NotebookWindow.hh:293
std::vector< NotebookCanvas * > canvasses
Definition NotebookWindow.hh:169
virtual void on_disconnect(const std::string &) override
Definition NotebookWindow.cc:1193
bool cell_complete_request(DTree::iterator it, int pos, int i)
Definition NotebookWindow.cc:2123
void on_ignore_cell_on_import()
Definition NotebookWindow.cc:2784
void on_prefs_auto_close_latex(const Glib::VariantBase &vb)
Definition NotebookWindow.cc:3245
virtual void on_interactive_output(const nlohmann::json &msg) override
Definition NotebookWindow.cc:1639
void on_file_new()
Definition NotebookWindow.cc:2242
void refresh_after_tex_engine_run()
Refresh the display after a TeX engine run has completed.
Definition NotebookWindow.cc:1092
Glib::RefPtr< Gio::SimpleAction > action_redo
Definition NotebookWindow.hh:343
bool quit_safeguard(bool quit)
Definition NotebookWindow.cc:2558
virtual void on_network_error() override
Definition NotebookWindow.cc:1201
void on_outbox_copy(Glib::RefPtr< Gtk::Clipboard > refClipboard, DTree::iterator it)
Definition NotebookWindow.cc:3587
virtual bool on_delete_event(GdkEventAny *) override
Definition NotebookWindow.cc:950
TeXEngine engine
Definition NotebookWindow.hh:69
void on_edit_cell_is_python()
Definition NotebookWindow.cc:2773
Glib::RefPtr< Gio::SimpleAction > action_console
Definition NotebookWindow.hh:346
std::string save(const std::string &fn) const
Definition NotebookWindow.cc:2533
void on_kernel_restart()
Definition NotebookWindow.cc:2861
bool run_all_after_restart
Definition NotebookWindow.hh:339
void on_prefs_set_cv(int vis)
Definition NotebookWindow.cc:960
Glib::RefPtr< Gtk::Builder > uimanager
Definition NotebookWindow.hh:146
void on_file_save()
Definition NotebookWindow.cc:2340
void scroll_current_cell_into_view()
Definition NotebookWindow.cc:1892
Gtk::Button tool_save_as
Definition NotebookWindow.hh:150
void on_run_runtocursor()
Definition NotebookWindow.cc:2838
Gtk::Button tool_run_to
Definition NotebookWindow.hh:151
void on_file_save_as()
Definition NotebookWindow.cc:2363
void on_kernel_restart_and_run_all()
Definition NotebookWindow.cc:2879
bool idle_handler()
Definition NotebookWindow.cc:3536
Gtk::Button tool_save
Definition NotebookWindow.hh:150
void compare_git_choose()
Definition NotebookWindow.cc:3163
void set_title_prefix(const std::string &)
Definition NotebookWindow.cc:1112
bool cell_got_focus(DTree::iterator, int)
Definition NotebookWindow.cc:2105
bool on_tex_error(const std::string &, DTree::iterator)
Definition NotebookWindow.cc:2189
Gtk::SearchEntry searchentry
Definition NotebookWindow.hh:157
bool modified
Definition NotebookWindow.hh:209
void update_status()
Definition NotebookWindow.cc:1660
Gtk::Dialog console_win
Definition NotebookWindow.hh:163
void on_edit_cell_is_latex()
Definition NotebookWindow.cc:2793
bool cell_toggle_visibility(DTree::iterator it, int)
Definition NotebookWindow.cc:1995
Glib::RefPtr< Gio::SimpleAction > action_highlight
Definition NotebookWindow.hh:344
void on_view_close(const Glib::VariantBase &)
Definition NotebookWindow.cc:2814
Console console
Definition NotebookWindow.hh:162
int status_line
Definition NotebookWindow.hh:188
Glib::RefPtr< Gio::SimpleAction > action_stop
Definition NotebookWindow.hh:346
void on_tools_clear_cache()
Definition NotebookWindow.cc:3510
Gtk::Box search_hbox
Definition NotebookWindow.hh:156
void compare_git_specific()
Definition NotebookWindow.cc:3218
bool handle_outbox_select(GdkEventButton *, DTree::iterator it)
Definition NotebookWindow.cc:3562
virtual void update_cell(const DTree &, DTree::iterator) override
The basic manipulations that a GUI needs to implement are adding, removing and updating (refreshing t...
Definition NotebookWindow.cc:1778
std::string name
Definition NotebookWindow.hh:208
void on_slider_changed(std::string variable, double value)
Definition NotebookWindow.cc:1972
void set_statusbar_message(const std::string &message="", int line=-1, int col=-1)
Definition NotebookWindow.cc:1142
bool cell_content_execute(DTree::iterator, bool shift_enter_pressed)
Definition NotebookWindow.cc:2142
virtual void add_cell(const DTree &, DTree::iterator, bool) override
Add a GUI cell corresponding to the document cell at the iterator.
Definition NotebookWindow.cc:1398
bool cell_content_changed(DTree::iterator it, int i)
Definition NotebookWindow.cc:2052
~NotebookWindow()
Definition NotebookWindow.cc:871
Glib::RefPtr< Gio::SimpleAction > action_microtex
Definition NotebookWindow.hh:346
Gtk::Button tool_open
Definition NotebookWindow.hh:150
std::string geometry_string
Definition NotebookWindow.hh:208
void compare_git(const std::string &commit_hash)
Definition NotebookWindow.cc:3113
void on_file_open()
Definition NotebookWindow.cc:2269
std::string status_string
Definition NotebookWindow.hh:186
virtual void on_kernel_runstatus(bool) override
Definition NotebookWindow.cc:1208
void on_file_export_html_segment()
Definition NotebookWindow.cc:2506
Glib::Dispatcher dispatch_refresh
Definition NotebookWindow.hh:193
Gtk::Spinner kernel_spinner
Definition NotebookWindow.hh:177
Glib::RefPtr< Gio::Settings > settings
Definition NotebookWindow.hh:323
virtual void hide_visual_cells(DTree::iterator it) override
Hide all visual cells (on all canvasses) corresponding to a given document cell.
Definition NotebookWindow.cc:2168
Gtk::Box statusbarbox
Definition NotebookWindow.hh:160
void on_file_close()
Definition NotebookWindow.cc:2255
Glib::RefPtr< Gio::SimpleAction > action_view_close
Definition NotebookWindow.hh:344
bool cell_content_insert(const std::string &, int, DTree::iterator, int)
Definition NotebookWindow.cc:2063
void load_css()
Definition NotebookWindow.cc:875
int current_canvas
Definition NotebookWindow.hh:170
Glib::RefPtr< Gio::SimpleAction > action_auto_close_latex
Definition NotebookWindow.hh:345
std::string title_prefix
Definition NotebookWindow.hh:208
void set_name(const std::string &)
Definition NotebookWindow.cc:2302
void resize_codeinput_texview(DTree::iterator, int width)
Definition NotebookWindow.cc:1016
Glib::RefPtr< Gio::SimpleAction > action_register
Definition NotebookWindow.hh:346
virtual void remove_all_cells() override
Remove all GUI cells from the display (used as a quick way to clear all before loading a new document...
Definition NotebookWindow.cc:1759
Gtk::Box topbox
Definition NotebookWindow.hh:148
TeXEngine is used to convert LaTeX strings into PNG images.
Definition TeXEngine.hh:23
Functions to handle the exchange properties of two or more symbols in a product.
Definition Adjform.cc:83
void set(rset_t::iterator &num, multiplier_t fac)
Definition Storage.cc:1179