GNU Octave 7.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
main-window.h
Go to the documentation of this file.
1////////////////////////////////////////////////////////////////////////
2//
3// Copyright (C) 2011-2022 The Octave Project Developers
4//
5// See the file COPYRIGHT.md in the top-level directory of this
6// distribution or <https://octave.org/copyright/>.
7//
8// This file is part of Octave.
9//
10// Octave is free software: you can redistribute it and/or modify it
11// under the terms of the GNU General Public License as published by
12// the Free Software Foundation, either version 3 of the License, or
13// (at your option) any later version.
14//
15// Octave is distributed in the hope that it will be useful, but
16// WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License for more details.
19//
20// You should have received a copy of the GNU General Public License
21// along with Octave; see the file COPYING. If not, see
22// <https://www.gnu.org/licenses/>.
23//
24////////////////////////////////////////////////////////////////////////
25
26#if ! defined (octave_main_window_h)
27#define octave_main_window_h 1
28
29// Qt includes
30#include <QCloseEvent>
31#include <QComboBox>
32#include <QMainWindow>
33#include <QPointer>
34#include <QQueue>
35#include <QStatusBar>
36#include <QTabWidget>
37#include <QThread>
38#include <QToolBar>
39#include <QToolButton>
40#include <QTranslator>
41
42// Editor includes
45
46// Own includes
47#include "dialog.h"
49#include "files-dock-widget.h"
50#include "find-files-dialog.h"
51#include "history-dock-widget.h"
52#include "interpreter-qobject.h"
53#include "led-indicator.h"
54#include "octave-dock-widget.h"
55#include "octave-qobject.h"
57#include "set-path-dialog.h"
59#include "variable-editor.h"
60#include "workspace-view.h"
61
62class octave_value;
63
64namespace octave
65{
66 class interpreter;
67
68 class settings_dialog;
69
70 //! Represents the main window.
71
72 class main_window : public QMainWindow
73 {
74 Q_OBJECT
75
76 public:
77
78 typedef std::pair <std::string, std::string> name_pair;
79 typedef std::pair <int, int> int_pair;
80
81 main_window (base_qobject& oct_qobj);
82
83 ~main_window (void);
84
86
87 bool command_window_has_focus (void) const;
88
89 void focus_command_window (void);
90
91 bool confirm_shutdown (void);
92
93 signals:
94
95 // Note: CLOSE_GUI_SIGNAL is currently only used by the new
96 // experimental terminal widget.
97 void close_gui_signal (void);
98
101
104 void init_window_menu (void);
105 void new_file_signal (const QString&);
106 void open_file_signal (const QString&);
107 void open_file_signal (const QString& file, const QString& enc, int line);
109
110 void show_community_news_signal (int serial);
112
114
115 void insert_debugger_pointer_signal (const QString& file, int line);
116 void delete_debugger_pointer_signal (const QString& file, int line);
117 void update_breakpoint_marker_signal (bool insert, const QString& file,
118 int line, const QString& cond);
119
122 void selectAll_signal (void);
123 void undo_signal (void);
124
126
128
131
132 public slots:
133
134 void focus_changed (QWidget *w_old, QWidget *w_new);
135 void focus_window (const QString& win_name);
136 void request_reload_settings (void);
137
138 void report_status_message (const QString& statusMessage);
140 void handle_load_workspace_request (const QString& file = QString ());
141 void handle_open_any_request (const QString& file = QString ());
145 void handle_undo_request (void);
146 void modify_path (const QStringList& dir_list, bool rm, bool subdirs);
147 void edit_mfile (const QString&, int);
148 void file_remove_proxy (const QString& o, const QString& n);
150 void open_bug_tracker_page (void);
151 void open_octave_packages_page (void);
152 void open_contribute_page (void);
153 void open_donate_page (void);
154 void process_settings_dialog_request (const QString& desired_tab
155 = QString ());
156
157 void show_about_octave (void);
159 bool update_by_worker = false);
160 void prepare_to_exit (void);
161 void go_to_previous_widget (void);
162 void reset_windows (void);
163 void do_reset_windows (bool show = true, bool save = true,
164 bool force_all = false);
165
166 void update_octave_directory (const QString& dir);
167 void browse_for_directory (void);
168 void set_current_working_directory (const QString& dir);
169 void change_directory_up (void);
170 void accept_directory_line_edit (void);
171
172 void execute_command_in_terminal (const QString& dir);
173 void run_file_in_terminal (const QFileInfo& info);
174
175 void handle_new_figure_request (void);
176
177 void handle_enter_debugger (void);
178 void handle_exit_debugger (void);
179 void debug_continue (void);
180 void debug_step_into (void);
181 void debug_step_over (void);
182 void debug_step_out (void);
183 void debug_quit (void);
184 void editor_tabs_changed (bool, bool);
185
186 void request_open_file (void);
187 void request_new_script (const QString& commands = QString ());
188 void request_new_function (bool triggered = true);
189 void handle_edit_mfile_request (const QString& name, const QString& file,
190 const QString& curr_dir, int line);
191
192 void handle_insert_debugger_pointer_request (const QString& file, int line);
193 void handle_delete_debugger_pointer_request (const QString& file, int line);
195 const QString& file, int line,
196 const QString& cond);
197
198 void read_settings (void);
199 void init_terminal_size (void);
201 void write_settings (void);
202
203 void copyClipboard (void);
204 void pasteClipboard (void);
205 void selectAll (void);
206
207 void handle_gui_status_update (const QString& feature, const QString& status);
208
209 void focus_console_after_command (void);
210
211 void profiler_session (void);
212 void profiler_session_resume (void);
213 void profiler_stop (void);
215 void profiler_show (void);
216
217 void handle_octave_ready ();
218
220
221 //! Find files dialog.
222 //!@{
223 void find_files (const QString& startdir = QDir::currentPath ());
224 void find_files_finished (int) { }
225 //!@}
226
227 void set_screen_size (int ht, int wd);
228
229 //! Handling the clipboard.
230 //!@{
231 void clipboard_has_changed (void);
232 void clear_clipboard ();
233 //!@}
234
235 //! Returns a list of dock widgets.
236
238 {
239 return dock_widget_list ();
240 }
241
242 private slots:
243
244 void disable_menu_shortcuts (bool disable);
245 void restore_create_file_setting (void);
246 void set_file_encoding (const QString& new_encoding);
247 void request_open_files (const QStringList& open_file_names);
248
249 void warning_function_not_found (const QString& message);
250
251 protected:
252
253 void closeEvent (QCloseEvent *closeEvent);
254
255 private:
256
257 void adopt_dock_widgets (void);
258
259 void adopt_terminal_widget (void);
260 void adopt_documentation_widget (void);
261 void adopt_file_browser_widget (void);
262 void adopt_history_widget (void);
263 void adopt_workspace_widget (void);
264 void adopt_editor_widget (void);
266
267 void construct_central_widget (void);
268
269 void construct (void);
270
271 void construct_octave_qt_link (void);
272
273 QAction * add_action (QMenu *menu, const QIcon& icon,
274 const QString& text, const char *member,
275 const QWidget *receiver = nullptr);
276
277 QMenu * m_add_menu (QMenuBar *p, QString text);
278 void construct_menu_bar (void);
280 void construct_new_menu (QMenu *p);
282 QAction * construct_debug_menu_item (const char *icon, const QString& item,
283 const char *member);
285 QAction * construct_window_menu_item (QMenu *p, const QString& item,
286 bool checkable, QWidget *);
291
293
294 void construct_tool_bar (void);
295
296 void configure_shortcuts (void);
297
299
300 void update_default_encoding (const QString& default_encoding);
301
302 void get_screen_geometry (int& width, int& height);
303 void set_default_geometry (void);
304 void resize_dock (QDockWidget *dw, int width, int height);
305
307
308 QHash<QMenu *, QStringList> m_hash_menu_text;
309
311
313
314 //! Toolbar.
315
316 QStatusBar *m_status_bar;
318
319 //! Dock widgets.
320 //!@{
321 QPointer<terminal_dock_widget> m_command_window;
322 QPointer<history_dock_widget> m_history_window;
323 QPointer<files_dock_widget> m_file_browser_window;
324 QPointer<documentation_dock_widget> m_doc_browser_window;
325 QPointer<file_editor_interface> m_editor_window;
326 QPointer<workspace_view> m_workspace_window;
327 QPointer<variable_editor> m_variable_editor_window;
328 //!@}
329
332
335
337
339
341
346 QAction *m_debug_quit;
347
357
367
372
389
397
400
401 //! For Toolbars.
402 //!@{
404 static const int current_directory_max_visible = 16;
405 static const int current_directory_max_count = 16;
407 //!@}
408
409 //! Settings dialog as guarded pointer (set to 0 when deleted).
410
411 QPointer<settings_dialog> m_settings_dlg;
412
413 //! Find files dialog.
414
416
417 //! Set path dialog
418 QPointer<set_path_dialog> m_set_path_dlg;
419
420 //! Release notes window.
421
423
424 QClipboard *m_clipboard;
425
426 //! Some class global flags.
427 //!@{
433
434 //! Flag for closing the whole application.
435
437 //!@}
438
440 };
441}
442
443#endif
Base class for Octave interfaces that use Qt.
Represents the main window.
Definition: main-window.h:73
QHash< QMenu *, QStringList > m_hash_menu_text
Definition: main-window.h:308
void debug_step_over(void)
QAction * m_reset_windows_action
Definition: main-window.h:388
bool command_window_has_focus(void) const
Definition: main-window.cc:477
void adopt_dock_widgets(void)
Definition: main-window.cc:218
void construct_edit_menu(QMenuBar *p)
QList< octave_dock_widget * > get_dock_widget_list(void)
Returns a list of dock widgets.
Definition: main-window.h:237
void handle_update_breakpoint_marker_request(bool insert, const QString &file, int line, const QString &cond)
QAction * m_save_workspace_action
Definition: main-window.h:353
void construct_window_menu(QMenuBar *p)
void change_directory_up(void)
void make_dock_widget_connections(octave_dock_widget *dw)
Definition: main-window.cc:453
void warning_function_not_found(const QString &message)
QAction * m_new_function_action
Definition: main-window.h:349
void file_remove_proxy(const QString &o, const QString &n)
Definition: main-window.cc:823
QPointer< files_dock_widget > m_file_browser_window
Dock widgets.
Definition: main-window.h:323
octave_dock_widget * m_previous_dock
Definition: main-window.h:333
QAction * m_ondisk_doc_action
Definition: main-window.h:390
bool m_prevent_readline_conflicts
Some class global flags.
Definition: main-window.h:428
static const int current_directory_max_count
For Toolbars.
Definition: main-window.h:405
external_editor_interface * m_external_editor
Definition: main-window.h:330
QAction * m_release_notes_action
Definition: main-window.h:398
QAction * m_show_workspace_action
Definition: main-window.h:375
QAction * m_documentation_action
Definition: main-window.h:385
QAction * m_copy_action
Definition: main-window.h:358
void construct_help_menu(QMenuBar *p)
QAction * m_octave_packages_action
Definition: main-window.h:393
void handle_exit_debugger(void)
QAction * m_clear_clipboard_action
Definition: main-window.h:360
void report_status_message(const QString &statusMessage)
Definition: main-window.cc:650
QAction * m_show_variable_editor_action
Definition: main-window.h:379
void settings_changed(const gui_settings *)
QStatusBar * m_status_bar
Toolbar.
Definition: main-window.h:316
void interpreter_event(const meth_callback &meth)
void notice_settings(const gui_settings *settings, bool update_by_worker=false)
Definition: main-window.cc:900
void undo_signal(void)
void do_reset_windows(bool show=true, bool save=true, bool force_all=false)
octave_dock_widget * m_active_dock
Definition: main-window.h:334
QAction * m_show_file_browser_action
Definition: main-window.h:376
void set_window_layout(gui_settings *settings)
QAction * m_about_octave_action
Definition: main-window.h:396
QPointer< set_path_dialog > m_set_path_dlg
Set path dialog.
Definition: main-window.h:418
void handle_clear_command_window_request(void)
Definition: main-window.cc:748
void handle_gui_status_update(const QString &feature, const QString &status)
QAction * m_previous_dock_action
Definition: main-window.h:387
QPointer< settings_dialog > m_settings_dlg
Settings dialog as guarded pointer (set to 0 when deleted).
Definition: main-window.h:411
QAction * m_editor_action
Definition: main-window.h:384
void handle_save_workspace_request(void)
Definition: main-window.cc:655
void handle_clear_workspace_request(void)
Definition: main-window.cc:737
void set_current_working_directory(const QString &dir)
void construct_tools_menu(QMenuBar *p)
QPointer< workspace_view > m_workspace_window
Dock widgets.
Definition: main-window.h:326
bool m_suppress_dbg_location
Some class global flags.
Definition: main-window.h:430
find_files_dialog * m_find_files_dlg
Find files dialog.
Definition: main-window.h:415
void construct_tool_bar(void)
void find_files_finished(int)
Find files dialog.
Definition: main-window.h:224
QLineEdit * m_current_directory_line_edit
For Toolbars.
Definition: main-window.h:406
bool m_closing
Flag for closing the whole application.
Definition: main-window.h:436
void adopt_editor_widget(void)
Definition: main-window.cc:342
void construct_documentation_menu(QMenu *p)
void handle_open_any_request(const QString &file=QString())
Definition: main-window.cc:713
QAction * m_profiler_show
Definition: main-window.h:371
QAction * m_history_action
Definition: main-window.h:381
void clear_clipboard()
Handling the clipboard.
void init_window_menu(void)
void focus_command_window(void)
Definition: main-window.cc:482
void show_release_notes_signal(void)
QAction * m_developer_action
Definition: main-window.h:395
void profiler_stop(void)
static const int current_directory_max_visible
For Toolbars.
Definition: main-window.h:404
QPointer< documentation_dock_widget > m_doc_browser_window
Dock widgets.
Definition: main-window.h:324
QAction * m_select_all_action
Definition: main-window.h:366
QAction * m_command_window_action
Definition: main-window.h:380
void construct_debug_menu(QMenuBar *p)
void init_terminal_size(void)
void editor_tabs_changed(bool, bool)
void handle_clear_history_request(void)
Definition: main-window.cc:760
void get_screen_geometry(int &width, int &height)
QAction * m_preferences_action
Definition: main-window.h:355
void run_file_in_terminal(const QFileInfo &info)
void handle_profiler_status_update(bool)
void accept_directory_line_edit(void)
void handle_set_path_dialog_request(void)
void focus_console_after_command(void)
QAction * m_find_files_action
Definition: main-window.h:365
QAction * m_debug_step_out
Definition: main-window.h:345
void focus_changed(QWidget *w_old, QWidget *w_new)
Definition: main-window.cc:528
void write_settings(void)
void construct_central_widget(void)
void request_open_file(void)
QClipboard * m_clipboard
Definition: main-window.h:424
void editor_focus_changed(bool)
QAction * m_undo_action
Definition: main-window.h:361
QToolBar * m_main_tool_bar
Definition: main-window.h:336
void interpreter_event(const fcn_callback &fcn)
void warning_function_not_found_signal(const QString &message)
void request_new_function(bool triggered=true)
QAction * m_show_documentation_action
Definition: main-window.h:378
QAction * m_open_action
Definition: main-window.h:350
QPointer< terminal_dock_widget > m_command_window
Dock widgets.
Definition: main-window.h:321
QPointer< variable_editor > m_variable_editor_window
Dock widgets.
Definition: main-window.h:327
void open_bug_tracker_page(void)
Definition: main-window.cc:851
void request_new_script(const QString &commands=QString())
QAction * m_clear_command_window_action
Definition: main-window.h:362
void profiler_session_resume(void)
void modify_path(const QStringList &dir_list, bool rm, bool subdirs)
Definition: main-window.cc:790
void new_file_signal(const QString &)
QMenuBar * m_editor_menubar
Definition: main-window.h:340
QAction * m_contribute_action
Definition: main-window.h:394
void set_default_geometry(void)
void disable_menu_shortcuts(bool disable)
void handle_edit_mfile_request(const QString &name, const QString &file, const QString &curr_dir, int line)
void profiler_show(void)
bool confirm_shutdown(void)
Definition: main-window.cc:499
QAction * m_paste_action
Definition: main-window.h:359
main_window(base_qobject &oct_qobj)
Definition: main-window.cc:95
QAction * m_show_history_action
Definition: main-window.h:374
QAction * m_show_command_window_action
Definition: main-window.h:373
void handle_insert_debugger_pointer_request(const QString &file, int line)
void adopt_file_browser_widget(void)
Definition: main-window.cc:291
QComboBox * m_current_directory_combo_box
For Toolbars.
Definition: main-window.h:403
QAction * m_online_doc_action
Definition: main-window.h:391
void active_dock_changed(octave_dock_widget *, octave_dock_widget *)
QAction * m_profiler_stop
Definition: main-window.h:370
QAction * construct_debug_menu_item(const char *icon, const QString &item, const char *member)
void adopt_variable_editor_widget(void)
Definition: main-window.cc:446
void browse_for_directory(void)
void update_default_encoding(const QString &default_encoding)
QAction * m_variable_editor_action
Definition: main-window.h:386
QAction * m_clear_workspace_action
Definition: main-window.h:364
void read_settings(void)
void close_gui_signal(void)
void handle_new_figure_request(void)
void construct_file_menu(QMenuBar *p)
void open_octave_packages_page(void)
Definition: main-window.cc:856
QAction * m_file_browser_action
Definition: main-window.h:383
void adopt_workspace_widget(void)
Definition: main-window.cc:332
void adopt_documentation_widget(void)
Definition: main-window.cc:284
bool m_prevent_readline_conflicts_menu
Some class global flags.
Definition: main-window.h:429
void open_contribute_page(void)
Definition: main-window.cc:861
void pasteClipboard(void)
void construct_news_menu(QMenuBar *p)
bool m_editor_is_octave_file
Some class global flags.
Definition: main-window.h:432
void focus_window(const QString &win_name)
Definition: main-window.cc:487
QAction * m_debug_step_over
Definition: main-window.h:344
void update_breakpoint_marker_signal(bool insert, const QString &file, int line, const QString &cond)
QList< octave_dock_widget * > dock_widget_list(void)
std::pair< int, int > int_pair
Definition: main-window.h:79
QAction * m_load_workspace_action
Definition: main-window.h:352
void add_actions_signal(QList< QAction * > action_list)
void debug_step_into(void)
QPointer< history_dock_widget > m_history_window
Dock widgets.
Definition: main-window.h:322
void edit_mfile(const QString &, int)
Definition: main-window.cc:818
QString m_default_encoding
Definition: main-window.h:310
QPointer< file_editor_interface > m_editor_window
Dock widgets.
Definition: main-window.h:325
void step_into_file_signal(void)
QAction * m_clear_command_history_action
Definition: main-window.h:363
void handle_enter_debugger(void)
void set_file_encoding(const QString &new_encoding)
QAction * m_new_figure_action
Definition: main-window.h:351
QAction * m_report_bug_action
Definition: main-window.h:392
QAction * m_profiler_resume
Definition: main-window.h:369
QWidget * m_release_notes_window
Release notes window.
Definition: main-window.h:422
void construct_new_menu(QMenu *p)
QAction * m_debug_continue
Definition: main-window.h:342
void configure_shortcuts(void)
void clipboard_has_changed(void)
Handling the clipboard.
void debug_continue(void)
QAction * m_exit_action
Definition: main-window.h:356
void adopt_history_widget(void)
Definition: main-window.cc:319
base_qobject & m_octave_qobj
Definition: main-window.h:306
std::pair< std::string, std::string > name_pair
Definition: main-window.h:78
void show_community_news_signal(int serial)
void pasteClipboard_signal(void)
QAction * add_action(QMenu *menu, const QIcon &icon, const QString &text, const char *member, const QWidget *receiver=nullptr)
QAction * m_current_news_action
Definition: main-window.h:399
QAction * m_set_path_action
Definition: main-window.h:354
void execute_command_in_terminal(const QString &dir)
void handle_delete_debugger_pointer_request(const QString &file, int line)
void find_files(const QString &startdir=QDir::currentPath())
Find files dialog.
void open_file_signal(const QString &file, const QString &enc, int line)
QAction * m_show_editor_action
Definition: main-window.h:377
void resize_dock(QDockWidget *dw, int width, int height)
QWidget * m_active_editor
Definition: main-window.h:331
void reset_windows(void)
QAction * m_profiler_start
Definition: main-window.h:368
void update_gui_lexer_signal(bool)
void selectAll_signal(void)
QAction * m_new_script_action
Definition: main-window.h:348
void insert_debugger_pointer_signal(const QString &file, int line)
void show_about_octave(void)
Definition: main-window.cc:891
led_indicator * m_profiler_status_indicator
Definition: main-window.h:317
void copyClipboard(void)
void handle_load_workspace_request(const QString &file=QString())
Definition: main-window.cc:680
void request_reload_settings(void)
Definition: main-window.cc:641
void restore_create_file_setting(void)
void construct_octave_qt_link(void)
void open_donate_page(void)
Definition: main-window.cc:866
void update_octave_directory(const QString &dir)
void handle_undo_request(void)
Definition: main-window.cc:773
void profiler_session(void)
bool m_editor_has_tabs
Some class global flags.
Definition: main-window.h:431
void request_open_files(const QStringList &open_file_names)
void closeEvent(QCloseEvent *closeEvent)
void set_screen_size(int ht, int wd)
void process_settings_dialog_request(const QString &desired_tab=QString())
Definition: main-window.cc:871
void open_online_documentation_page(void)
Definition: main-window.cc:845
void delete_debugger_pointer_signal(const QString &file, int line)
void copyClipboard_signal(void)
void debug_step_out(void)
void prepare_to_exit(void)
void construct_menu_bar(void)
QAction * m_debug_quit
Definition: main-window.h:346
void adopt_terminal_widget(void)
Definition: main-window.cc:231
void go_to_previous_widget(void)
void init_terminal_size_signal(void)
void open_file_signal(const QString &)
QAction * m_debug_step_into
Definition: main-window.h:343
QAction * m_workspace_action
Definition: main-window.h:382
QMenu * m_add_menu(QMenuBar *p, QString text)
QAction * construct_window_menu_item(QMenu *p, const QString &item, bool checkable, QWidget *)
void message(const char *name, const char *fmt,...)
Definition: error.cc:948
OCTAVE_NAMESPACE_BEGIN typedef std::function< void(void)> fcn_callback
Definition: event-manager.h:47
std::function< void(interpreter &)> meth_callback
Definition: event-manager.h:48
QString name