annotate libgui/src/main-window.cc @ 28300:0c6dcf803529

Remove support for Qt4 in Octave 7. * configure.ac: Change QT_VERSIONS variable to just "5". * m4/acinclude.m4 (OCTAVE_CHECK_FUNC_QABSTRACTITEMMODEL_BEGINRESETMODEL, OCTAVE_CHECK_FUNC_QCOMBOBOX_SETCURRENTTEXT, OCTAVE_CHECK_FUNC_QHEADERVIEW_SETSECTIONRESIZEMODE, OCTAVE_CHECK_FUNC_QHEADERVIEW_SETSECTIONSCLICKABLE, OCTAVE_CHECK_FUNC_QHEADERVIEW_SETSECTIONSMOVABLE, OCTAVE_CHECK_FUNC_QINSTALLMESSAGEHANDLER, OCTAVE_CHECK_FUNC_QLINEEDIT_SETPLACEHOLDERTEXT, OCTAVE_CHECK_FUNC_QMOUSEEVENT_LOCALPOS, OCTAVE_CHECK_FUNC_QOBJECT_FINDCHILDREN_ACCEPTS_FINDCHILDOPTIONS, OCTAVE_CHECK_FUNC_QTABWIDGET_SETMOVABLE, OCTAVE_CHECK_FUNC_QWHEELEVENT_ANGLEDELTA, OCTAVE_CHECK_FUNC_QTMESSAGEHANDLER_ACCEPTS_QMESSAGELOGCONTEXT, OCTAVE_CHECK_MEMBER_QFONT_FORCE_INTEGER_METRICS, OCTAVE_CHECK_MEMBER_QFONT_MONOSPACE, OCTAVE_HAVE_QGUIAPPLICATION): Remove obsolete macros * m4/acinclude.m4 (HAVE_QT_SCINTILLA): Remove option '4' in case statement for Qt version. * m4/acinclude.m4 (OCTAVE_HAVE_QT): Remove test for Qt4 and AC_DEFINE for HAVE_QT. * m4/acinclude.m4 (OCTAVE_CHECK_QT_VERSION): Remove option '4' in case statement for $qt_version. Remove test for $qt_version = 4 calling pkg_config. Delete calls to macros that were removed. * Canvas.cc (select_object): Remove HAVE_QMOUSEEVENT_LOCALPOS conditionals. * QtHandlesUtils.cc (makeScrollEventStruct): Remove HAVE_QWHEELEVENT_ANGLEDELTA conditional. * Table.cc (updateEnable, updateRearrangeableColumns): Remove HAVE_QT4 conditional. * files-dock-widget.cc (files_dock_widget): Remove HAVE_QHEADERVIEW_SETSECTIONSCLICKABLE conditional. * find-files-dialog.cc (find_files_dialog): Remove HAVE_QHEADERVIEW_SETSECTIONSCLICKABLE conditional. * file-editor.cc (file_editor_tab_widget): Remove HAVE_QTABWIDGET_SETMOVABLE conditional. * find-dialog.cc (init_search_text): Remove HAVE_QCOMBOBOX_SETCURRENTTEXT conditional. * main-window.cc (display_community_news): Remove QOBJECT_FINDCHILDREN_ACCEPTS_FINDCHILDOPTIONS conditional. * octave-qobject.cc (message_handler): Remove QTMESSAGEHANDLER_ACCEPTS_QMESSAGELOGCONTEXT conditional. * octave-qobject.cc (base_qobject): Remove HAVE_QINSTALLMESSAGEHANDLER, HAVE_QT4 conditionals. * resource-manager.cc (get_default_font_family): Remove HAVE_QFONT_MONOSPACE conditional. * shortcut-manager.cc (enter_shortcut::keyPressEvent): Remove HAVE_QGUIAPPLICATION conditional. * shortcut-manager.cc (shortcut_manager::fill_treewidget): Remove HAVE_QHEADERVIEW_SETSECTIONRESIZEMODE conditional. * tab-bar.cc (move_tab_left, move_tab_right, switch_tab): Remove HAVE_QTABWIDGET_SETMOVABLE conditional. * variable-editor.cc (variable_dock_widget, change_floating, change_fullscreen): Remove HAVE_QGUIAPPLICATION conditional. * variable-editor.cc (variable_editor_view, setModel): Remove HAVE_QHEADERVIEW_SETSECTIONRESIZEMODE conditional. * variable-editor.cc (construct_tool_bar): Remove QOBJECT_FINDCHILDREN_ACCEPTS_FINDCHILDOPTIONS conditional. * variable-editor.h (class variable_dock_widget): Remove HAVE_QGUIAPPLICATION conditional. * workspace-view.cc (workspace_view): Remove HAVE_QHEADERVIEW_SETSECTIONSCLICKABLE conditionals.
author Rik <rik@octave.org>
date Sat, 16 May 2020 13:32:24 -0700
parents c20b7290c778
children ec764709312e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
3 // Copyright (C) 2011-2020 The Octave Project Developers
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
25
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
26 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21203
diff changeset
27 # include "config.h"
15286
ae9079bbc627 Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents: 15274
diff changeset
28 #endif
ae9079bbc627 Add '#include <config.h>' to C++ files in libgui/src
Rik <rik@octave.org>
parents: 15274
diff changeset
29
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
30 #include <utility>
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
31
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
32 #include <QAction>
15257
7ee62f559a73 Fix compilation under Windows with GUI and LLVM enabled.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15204
diff changeset
33 #include <QApplication>
27648
2952471e29a7 eliminate global access to resource_manager in qterminal widget
John W. Eaton <jwe@octave.org>
parents: 27631
diff changeset
34 #include <QClipboard>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
35 #include <QDateTime>
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
36 #include <QDebug>
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
37 #include <QDesktopServices>
16391
a695ee2dc17e * main-window.cc: Include <QDesktopWidget>
John W. Eaton <jwe@octave.org>
parents: 16386
diff changeset
38 #include <QDesktopWidget>
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
39 #include <QFileDialog>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
40 #include <QIcon>
23385
41639665aa34 improve opening files from gui when built without qscintilla (bug #39179)
Torsten <mttl@mailbox.org>
parents: 23380
diff changeset
41 #include <QInputDialog>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
42 #include <QKeySequence>
15257
7ee62f559a73 Fix compilation under Windows with GUI and LLVM enabled.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15204
diff changeset
43 #include <QLabel>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
44 #include <QMenu>
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
45 #include <QMenuBar>
13626
cc90c62ada21 Removed terminal, instead now using QPlainTextEdit, which looks much nicer and is not that error-prone...
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13620
diff changeset
46 #include <QMessageBox>
14670
7fbea449737d Restructured menus, added toolbar and current directory line edit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14669
diff changeset
47 #include <QStyle>
25956
2201f82db233 Add missing QStyleFactory header (Bug #54881)
John Donoghue
parents: 25944
diff changeset
48 #include <QStyleFactory>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
49 #include <QStyleFactory>
25042
ba5af45bbfc4 documentation widget based on qt help engine (bug #53006)
Torsten <mttl@mailbox.org>
parents: 25024
diff changeset
50 #include <QTextBrowser>
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
51 #include <QTextCodec>
17764
811b5a562680 Format release notes as preformatted text in the GUI (bug #40367)
Mike Miller <mtmiller@ieee.org>
parents: 17744
diff changeset
52 #include <QTextStream>
17939
16cf38c39915 display community news in simple window; check timestamp and serial number
John W. Eaton <jwe@octave.org>
parents: 17936
diff changeset
53 #include <QThread>
21439
912b8828193b * main-window.cc: include QTimer header file
Mike Miller <mtmiller@octave.org>
parents: 21428
diff changeset
54 #include <QTimer>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
55 #include <QToolBar>
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16499
diff changeset
56
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
57 #if defined (HAVE_QSCINTILLA)
21203
710e700cdd7f maint: Clean up naming and indentation of #ifdef blocks in libgui
Rik <rik@octave.org>
parents: 21158
diff changeset
58 # include "file-editor.h"
16290
d07aeecb2d22 build: Add more #ifdefs to build GUI when Qscintilla is not present.
Rik <rik@octave.org>
parents: 16176
diff changeset
59 #endif
27664
bd7decacf32e avoid unnecessary includes of gui-preference header files
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27653
diff changeset
60 #include "gui-preferences-cs.h"
27665
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
61 #include "gui-preferences-dw.h"
27560
3fcc650de22f split gui-preferences.h into one file per widget
John W. Eaton <jwe@octave.org>
parents: 27556
diff changeset
62 #include "gui-preferences-ed.h"
27671
61883a1a80a1 don't include gui-preferences-global.h in gui-preferences.h
John W. Eaton <jwe@octave.org>
parents: 27669
diff changeset
63 #include "gui-preferences-global.h"
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27409
diff changeset
64 #include "gui-preferences-mw.h"
27613
deb8877f2c34 use symbolic constants for preferences key and default values in news reader
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27611
diff changeset
65 #include "gui-preferences-nr.h"
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
66 #include "gui-preferences-sc.h"
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
67 #include "gui-settings.h"
27196
d993642352d0 rename octave_interpreter object in GUI
John W. Eaton <jwe@octave.org>
parents: 27194
diff changeset
68 #include "interpreter-qobject.h"
14707
674740c44c09 Changed various files to matche file naming conventions.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14703
diff changeset
69 #include "main-window.h"
27193
01e73e1664ff move news reader widget to separate file
John W. Eaton <jwe@octave.org>
parents: 27118
diff changeset
70 #include "news-reader.h"
27197
b8c0d5ad024f refactor and rename some qt application objects
John W. Eaton <jwe@octave.org>
parents: 27196
diff changeset
71 #include "octave-qobject.h"
14707
674740c44c09 Changed various files to matche file naming conventions.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14703
diff changeset
72 #include "settings-dialog.h"
18611
086093fbdc1a first implementation of a shortcut manager (bug #41217)
Torsten <ttl@justmail.de>
parents: 18575
diff changeset
73 #include "shortcut-manager.h"
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
74 #include "welcome-wizard.h"
13501
86d6c3b90ad7 Added new gui files.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
75
17939
16cf38c39915 display community news in simple window; check timestamp and serial number
John W. Eaton <jwe@octave.org>
parents: 17936
diff changeset
76 #include "Array.h"
16468
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 16460
diff changeset
77 #include "cmd-edit.h"
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
78 #include "oct-env.h"
17939
16cf38c39915 display community news in simple window; check timestamp and serial number
John W. Eaton <jwe@octave.org>
parents: 17936
diff changeset
79 #include "url-transfer.h"
16468
0f143f68078d use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents: 16460
diff changeset
80
19893
67cb2f421255 restore include statement removed in changeset c7c50030e76c
John W. Eaton <jwe@octave.org>
parents: 19882
diff changeset
81 #include "builtin-defun-decls.h"
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
82 #include "defaults.h"
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
83 #include "defun.h"
23599
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23497
diff changeset
84 #include "interpreter-private.h"
23773
5ff24576b783 defer installing qt graphics toolkit until interpreter is ready
John W. Eaton <jwe@octave.org>
parents: 23721
diff changeset
85 #include "interpreter.h"
27396
930c0fbc003b move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents: 27393
diff changeset
86 #include "load-path.h"
23479
06bf3a0b08bf maint: Use "" instead of <> for our own include files.
John W. Eaton <jwe@octave.org>
parents: 23457
diff changeset
87 #include "oct-map.h"
22089
c2c668b3051b use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents: 22022
diff changeset
88 #include "octave.h"
25408
ce725103ebf1 Fallback to open.m for opening files in the gui file browser (bug #50543)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25407
diff changeset
89 #include "parse.h"
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 26115
diff changeset
90 #include "syminfo.h"
24362
3fc24b792a24 avoid including symtab.h, symscope.h, or symrec.h unnecessarily
John W. Eaton <jwe@octave.org>
parents: 24361
diff changeset
91 #include "symscope.h"
23479
06bf3a0b08bf maint: Use "" instead of <> for our own include files.
John W. Eaton <jwe@octave.org>
parents: 23457
diff changeset
92 #include "utils.h"
15404
f52a62a6db3a eliminate copy and paste copyright info in GUI about info box
John W. Eaton <jwe@octave.org>
parents: 15402
diff changeset
93 #include "version.h"
23380
c319e6d737f2 Backed out changeset 7332287221a9
Torsten <mttl@mailbox.org>
parents: 23379
diff changeset
94
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
95 namespace octave
23119
3107d3717cc2 refactor and simplify interpreter startup in GUI
John W. Eaton <jwe@octave.org>
parents: 23092
diff changeset
96 {
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27042
diff changeset
97 static file_editor_interface *
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
98 create_default_editor (QWidget *p, base_qobject& oct_qobj)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
99 {
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27042
diff changeset
100 #if defined (HAVE_QSCINTILLA)
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
101 return new file_editor (p, oct_qobj);
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27042
diff changeset
102 #else
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27042
diff changeset
103 octave_unused_parameter (p);
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
104 octave_unused_parameter (oct_qobj);
27101
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27042
diff changeset
105
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27042
diff changeset
106 return 0;
097774bed4ed move some static functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27042
diff changeset
107 #endif
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
108 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
109
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
110 main_window::main_window (base_qobject& oct_qobj)
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27613
diff changeset
111 : QMainWindow (), m_octave_qobj (oct_qobj),
26227
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
112 m_workspace_model (nullptr),
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
113 m_status_bar (nullptr), m_command_window (nullptr),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
114 m_history_window (nullptr), m_file_browser_window (nullptr),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
115 m_doc_browser_window (nullptr), m_editor_window (nullptr),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
116 m_workspace_window (nullptr), m_variable_editor_window (nullptr),
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
117 m_external_editor (new external_editor_interface (this, m_octave_qobj)),
27298
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
118 m_active_editor (m_external_editor), m_settings_dlg (nullptr),
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
119 m_find_files_dlg (nullptr), m_set_path_dlg (nullptr),
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
120 m_release_notes_window (nullptr), m_community_news_window (nullptr),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
121 m_clipboard (QApplication::clipboard ()),
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
122 m_prevent_readline_conflicts (true), m_suppress_dbg_location (true),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
123 m_closing (false), m_file_encoding (QString ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
124 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
125 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
126
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
127 if (rmgr.is_first_run ())
25938
6fec0e305268 Backed out changeset 2ab0a9b66388
John W. Eaton <jwe@octave.org>
parents: 25937
diff changeset
128 {
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
129 // Before wizard.
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
130 m_octave_qobj.config_translators ();
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
131
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
132 welcome_wizard welcomeWizard (m_octave_qobj);
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
133
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
134 if (welcomeWizard.exec () == QDialog::Rejected)
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
135 exit (1);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
136
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
137 // Install settings file.
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
138 rmgr.reload_settings ();
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
139 }
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
140 else
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
141 {
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
142 // Get settings file.
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
143 rmgr.reload_settings ();
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
144
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
145 // After settings.
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
146 m_octave_qobj.config_translators ();
25938
6fec0e305268 Backed out changeset 2ab0a9b66388
John W. Eaton <jwe@octave.org>
parents: 25937
diff changeset
147 }
6fec0e305268 Backed out changeset 2ab0a9b66388
John W. Eaton <jwe@octave.org>
parents: 25937
diff changeset
148
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
149 rmgr.update_network_settings ();
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
150
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
151 // We provide specific terminal capabilities, so ensure that
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
152 // TERM is always set appropriately.
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
153
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
154 #if defined (OCTAVE_USE_WINDOWS_API)
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
155 sys::env::putenv ("TERM", "cygwin");
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
156 #else
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
157 sys::env::putenv ("TERM", "xterm");
25046
a4c687fec320 gui: set Qt Application and Desktop metadata for desktop integration (bug #53102)
Mike Miller <mtmiller@octave.org>
parents: 25042
diff changeset
158 #endif
a4c687fec320 gui: set Qt Application and Desktop metadata for desktop integration (bug #53102)
Mike Miller <mtmiller@octave.org>
parents: 25042
diff changeset
159
27630
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
160 // FIXME: can we do this job when creating the shortcut manager?
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
161 // A quick look shows that it may require some coordination with the
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
162 // resource manager. Startup is complicated, but maybe we can make
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
163 // it simpler?
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
164 shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
165 scmgr.init_data ();
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
166
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
167 construct_central_widget ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
168
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
169 m_workspace_model = new workspace_model (m_octave_qobj);
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
170 m_status_bar = new QStatusBar ();
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
171 m_command_window = new terminal_dock_widget (this, m_octave_qobj);
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
172 m_history_window = new history_dock_widget (this, m_octave_qobj);
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
173 m_file_browser_window = new files_dock_widget (this, m_octave_qobj);
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
174 m_doc_browser_window = new documentation_dock_widget (this, m_octave_qobj);
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
175 m_editor_window = create_default_editor (this, m_octave_qobj);
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
176 m_variable_editor_window = new variable_editor (this, m_octave_qobj);
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
177 m_workspace_window = new workspace_view (this, m_octave_qobj);
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
178
27860
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
179 m_previous_dock = m_command_window;
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
180
27929
265b386f8b20 maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents: 27923
diff changeset
181 // Set active editor depending on editor window. If the latter is
27267
d75c7b4f7645 fix using external editor when built without qscintilla (regression from ceb508ea92ee)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27263
diff changeset
182 // not initialized (qscintilla not present), use the external editor.
d75c7b4f7645 fix using external editor when built without qscintilla (regression from ceb508ea92ee)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27263
diff changeset
183 if (m_editor_window)
d75c7b4f7645 fix using external editor when built without qscintilla (regression from ceb508ea92ee)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27263
diff changeset
184 m_active_editor = m_editor_window;
d75c7b4f7645 fix using external editor when built without qscintilla (regression from ceb508ea92ee)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27263
diff changeset
185 else
d75c7b4f7645 fix using external editor when built without qscintilla (regression from ceb508ea92ee)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27263
diff changeset
186 m_active_editor = m_external_editor;
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
187
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
188 #if defined (HAVE_QGUIAPPLICATION_SETDESKTOPFILENAME)
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
189 QGuiApplication::setDesktopFileName ("org.octave.Octave.desktop");
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
190 #endif
25938
6fec0e305268 Backed out changeset 2ab0a9b66388
John W. Eaton <jwe@octave.org>
parents: 25937
diff changeset
191
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
192 QApplication *qapp = m_octave_qobj.qapplication ();
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
193
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
194 m_default_style = qapp->style ()->objectName ();
26227
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
195
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
196 gui_settings *settings = rmgr.get_settings ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
197
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
198 bool connect_to_web = true;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
199 QDateTime last_checked;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
200 int serial = 0;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
201 m_active_dock = nullptr;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
202
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
203 if (settings)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
204 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
205 connect_to_web
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
206 = settings->value (nr_allow_connection).toBool ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
207
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
208 last_checked
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
209 = settings->value (nr_last_time).toDateTime ();
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
210
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
211 serial = settings->value (nr_last_news).toInt ();
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
212 m_default_encoding = settings->value (ed_default_enc).toString ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
213 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
214
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
215 QDateTime current = QDateTime::currentDateTime ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
216 QDateTime one_day_ago = current.addDays (-1);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
217
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
218 if (connect_to_web
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
219 && (! last_checked.isValid () || one_day_ago > last_checked))
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
220 load_and_display_community_news (serial);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
221
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
222 construct_octave_qt_link ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
223
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
224 // We have to set up all our windows, before we finally launch
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
225 // octave.
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
226
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
227 construct ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
228
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
229 read_settings ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
230
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
231 init_terminal_size ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
232
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
233 // Connect signals for changes in visibility now before window is
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
234 // shown.
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
235
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
236 connect_visibility_changed ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
237
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
238 focus_command_window ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
239 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
240
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
241 main_window::~main_window (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
242 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
243 // Destroy the terminal first so that STDERR stream is redirected back
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
244 // to its original pipe to capture error messages at exit.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
245
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
246 delete m_editor_window; // first one for dialogs of modified editor-tabs
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
247 delete m_external_editor;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
248 delete m_command_window;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
249 delete m_workspace_window;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
250 delete m_doc_browser_window;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
251 delete m_file_browser_window;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
252 delete m_history_window;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
253 delete m_status_bar;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
254 delete m_workspace_model;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
255 delete m_variable_editor_window;
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
256
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
257 delete m_find_files_dlg;
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
258 delete m_release_notes_window;
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
259 delete m_community_news_window;
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
260 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
261
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
262 bool main_window::command_window_has_focus (void) const
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
263 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
264 return m_command_window->has_focus ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
265 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
266
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
267 void main_window::focus_command_window (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
268 {
27281
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27277
diff changeset
269 m_command_window->activate ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
270 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
271
27669
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
272 void main_window::focus_window (const QString& win_name)
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
273 {
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
274 if (win_name == "command")
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
275 m_command_window->activate ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
276 else if (win_name == "history")
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
277 m_history_window->activate ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
278 else if (win_name == "workspace")
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
279 m_workspace_window->activate ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
280 else if (win_name == "filebrowser")
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
281 m_file_browser_window->activate ();
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
282 }
271b5cd640d7 Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27665
diff changeset
283
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
284 bool main_window::confirm_shutdown (void)
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
285 {
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
286 bool closenow = true;
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
287
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
288 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
289 gui_settings *settings = rmgr.get_settings ();
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
290
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
291 if (settings->value (global_prompt_to_exit.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
292 global_prompt_to_exit.def).toBool ())
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
293 {
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
294 int ans = QMessageBox::question (this, tr ("Octave"),
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
295 tr ("Are you sure you want to exit Octave?"),
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
296 (QMessageBox::Ok
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
297 | QMessageBox::Cancel),
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
298 QMessageBox::Ok);
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
299
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
300 if (ans != QMessageBox::Ok)
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
301 closenow = false;
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
302 }
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
303
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
304 #if defined (HAVE_QSCINTILLA)
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
305 if (closenow)
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
306 closenow = m_editor_window->check_closing ();
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
307 #endif
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
308
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
309 return closenow;
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
310 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
311
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
312 // catch focus changes and determine the active dock widget
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
313 void main_window::focus_changed (QWidget *, QWidget *new_widget)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
314 {
24772
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
315 // If there is no new widget (e.g., when pressing <alt> and the global
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
316 // menu gets active), we can return immediately
24772
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
317 if (! new_widget)
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
318 return;
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
319
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
320 octave_dock_widget *dock = nullptr;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
321 QWidget *w_new = new_widget; // get a copy of new focus widget
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
322 QWidget *start = w_new; // Save it as start of our search
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
323 int count = 0; // fallback to prevent endless loop
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
324
24772
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
325 QList<octave_dock_widget *> w_list = dock_widget_list ();
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
326
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
327 while (w_new && w_new != m_main_tool_bar && count < 100)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
328 {
24772
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
329 // Go through all dock widgets and check whether the current widget
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
330 // with focus is a child of one of them.
27676
ea7d36e9f197 use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents: 27672
diff changeset
331 for (auto w : w_list)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
332 {
24772
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
333 if (w->isAncestorOf (w_new))
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
334 dock = w;
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
335 }
24772
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
336
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
337 if (dock)
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
338 break;
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
339
27956
2310164737b3 fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 27041
diff changeset
340 // If not yet found (in case w_new is not a child of its dock widget),
24772
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
341 // test next widget in the focus chain
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
342 w_new = qobject_cast<QWidget *> (w_new->previousInFocusChain ());
24772
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
343
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
344 // Measures preventing an endless loop
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
345 if (w_new == start)
24772
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
346 break; // We have arrived where we began ==> exit loop
860860e2e69e fix focus change between dock widgets of gui
Torsten <mttl@mailbox.org>
parents: 24729
diff changeset
347 count++; // Limited number of trials
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
348 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
349
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
350 // editor needs extra handling
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
351 octave_dock_widget *edit_dock_widget
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
352 = static_cast<octave_dock_widget *> (m_editor_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
353 // if new dock has focus, emit signal and store active focus
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
354 // except editor changes to a dialog (dock=0)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
355 if ((dock || m_active_dock != edit_dock_widget) && (dock != m_active_dock))
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
356 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
357 // signal to all dock widgets for updating the style
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
358 emit active_dock_changed (m_active_dock, dock);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
359
26555
84e0e0b6493e * main-window.cc (focus_changed): prevent accessing null pointer (bug #55440)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
360 if (dock)
84e0e0b6493e * main-window.cc (focus_changed): prevent accessing null pointer (bug #55440)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
361 {
84e0e0b6493e * main-window.cc (focus_changed): prevent accessing null pointer (bug #55440)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
362 QList<QDockWidget *> tabbed = tabifiedDockWidgets (dock);
84e0e0b6493e * main-window.cc (focus_changed): prevent accessing null pointer (bug #55440)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
363 if (tabbed.contains (m_active_dock))
84e0e0b6493e * main-window.cc (focus_changed): prevent accessing null pointer (bug #55440)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
364 dock->set_predecessor_widget (m_active_dock);
84e0e0b6493e * main-window.cc (focus_changed): prevent accessing null pointer (bug #55440)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
365 }
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
366
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
367 if (edit_dock_widget == dock)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
368 emit editor_focus_changed (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
369 else if (edit_dock_widget == m_active_dock)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
370 emit editor_focus_changed (false);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
371
27860
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
372 if (m_active_dock)
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
373 m_previous_dock = m_active_dock;
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
374 m_active_dock = dock;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
375 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
376 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
377
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
378 void main_window::request_reload_settings (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
379 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
380 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
381 gui_settings *settings = rmgr.get_settings ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
382
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
383 if (settings)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
384 emit settings_changed (settings);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
385 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
386
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
387 void main_window::report_status_message (const QString& statusMessage)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
388 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
389 m_status_bar->showMessage (statusMessage, 1000);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
390 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
391
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
392 void main_window::handle_save_workspace_request (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
393 {
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
394 // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
395 int opts = 0; // No options by default.
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
396 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
397 gui_settings *settings = rmgr.get_settings ();
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
398 if (! settings->value (global_use_native_dialogs.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
399 global_use_native_dialogs.def).toBool ())
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
400 opts = QFileDialog::DontUseNativeDialog;
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
401
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
402 QString file
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
403 = QFileDialog::getSaveFileName (this, tr ("Save Workspace As"), ".",
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
404 nullptr, nullptr, QFileDialog::Option (opts));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
405
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
406 if (! file.isEmpty ())
25723
22544083fe2c use common callback for workspace actions initiated by gui
Torsten <mttl@mailbox.org>
parents: 25703
diff changeset
407 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
408 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
409 ([file] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
410 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
411 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
412
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
413 Fsave (interp, ovl (file.toStdString ()));
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
414 });
25723
22544083fe2c use common callback for workspace actions initiated by gui
Torsten <mttl@mailbox.org>
parents: 25703
diff changeset
415 }
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
416 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
417
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
418 void main_window::handle_load_workspace_request (const QString& file_arg)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
419 {
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
420 // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
421 int opts = 0; // No options by default.
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
422 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
423 gui_settings *settings = rmgr.get_settings ();
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
424 if (! settings->value (global_use_native_dialogs.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
425 global_use_native_dialogs.def).toBool ())
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
426 opts = QFileDialog::DontUseNativeDialog;
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
427
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
428 QString file = file_arg;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
429
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
430 if (file.isEmpty ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
431 file = QFileDialog::getOpenFileName (this, tr ("Load Workspace"), ".",
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
432 nullptr, nullptr, QFileDialog::Option (opts));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
433
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
434 if (! file.isEmpty ())
25723
22544083fe2c use common callback for workspace actions initiated by gui
Torsten <mttl@mailbox.org>
parents: 25703
diff changeset
435 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
436 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
437 ([file] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
438 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
439 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
440
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
441 Fload (interp, ovl (file.toStdString ()));
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
442
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
443 tree_evaluator& tw = interp.get_evaluator ();
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
444
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
445 event_manager& xevmgr = interp.get_event_manager ();
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
446
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
447 xevmgr.set_workspace (true, tw.get_symbol_info ());
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
448 });
25723
22544083fe2c use common callback for workspace actions initiated by gui
Torsten <mttl@mailbox.org>
parents: 25703
diff changeset
449 }
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
450 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
451
25408
ce725103ebf1 Fallback to open.m for opening files in the gui file browser (bug #50543)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25407
diff changeset
452 void main_window::handle_open_any_request (const QString& file_arg)
ce725103ebf1 Fallback to open.m for opening files in the gui file browser (bug #50543)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25407
diff changeset
453 {
ce725103ebf1 Fallback to open.m for opening files in the gui file browser (bug #50543)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25407
diff changeset
454 if (! file_arg.isEmpty ())
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
455 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
456 std::string file = file_arg.toStdString ();
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
457
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
458 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
459 ([file] (interpreter& interp)
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
460 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
461 // INTERPRETER THREAD
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
462
27405
646efbb5f407 avoid including builtin-defun-decls.h unless needed
John W. Eaton <jwe@octave.org>
parents: 27396
diff changeset
463 interp.feval ("open", ovl (file));
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
464
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
465 // Update the workspace since open.m may have loaded new
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
466 // variables.
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
467 tree_evaluator& tw = interp.get_evaluator ();
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
468
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
469 event_manager& xevmgr = interp.get_event_manager ();
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
470
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
471 xevmgr.set_workspace (true, tw.get_symbol_info ());
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
472 });
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
473 }
25408
ce725103ebf1 Fallback to open.m for opening files in the gui file browser (bug #50543)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25407
diff changeset
474 }
ce725103ebf1 Fallback to open.m for opening files in the gui file browser (bug #50543)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25407
diff changeset
475
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
476 void main_window::handle_clear_workspace_request (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
477 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
478 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
479 ([] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
480 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
481 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
482
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
483 Fclear (interp);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
484 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
485 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
486
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
487 void main_window::handle_clear_command_window_request (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
488 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
489 emit interpreter_event
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
490 ([] (void)
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
491 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
492 // INTERPRETER THREAD
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
493
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
494 command_editor::kill_full_line ();
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
495 command_editor::clear_screen ();
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
496 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
497 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
498
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
499 void main_window::handle_clear_history_request (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
500 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
501 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
502 ([] (interpreter& interp)
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
503 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
504 // INTERPRETER THREAD
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
505
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
506 history_system& history_sys = interp.get_history_system ();
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
507
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
508 history_sys.do_history (ovl ("-c"));
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
509 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
510 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
511
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
512 void main_window::handle_undo_request (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
513 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
514 if (command_window_has_focus ())
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
515 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
516 emit interpreter_event
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
517 ([] (void)
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
518 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
519 // INTERPRETER THREAD
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
520
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
521 command_editor::undo ();
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
522 command_editor::redisplay ();
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
523 });
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
524 }
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
525 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
526 emit undo_signal ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
527 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
528
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
529 void main_window::handle_rename_variable_request (const QString& old_name_arg,
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
530 const QString& new_name_arg)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
531
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
532 {
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
533 std::string old_name = old_name_arg.toStdString ();
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
534 std::string new_name = new_name_arg.toStdString ();
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
535
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
536 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
537 ([old_name, new_name] (interpreter& interp)
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
538 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
539 // INTERPRETER THREAD
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
540
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
541 symbol_scope scope = interp.get_current_scope ();
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
542
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
543 if (scope)
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
544 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
545 scope.rename (old_name, new_name);
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
546
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
547 tree_evaluator& tw = interp.get_evaluator ();
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
548
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
549 event_manager& xevmgr = interp.get_event_manager ();
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
550
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
551 xevmgr.set_workspace (true, tw.get_symbol_info ());
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
552 }
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
553
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
554 // FIXME: if this action fails, do we need a way to display that info
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
555 // in the GUI?
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
556 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
557 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
558
27308
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
559 void main_window::modify_path (const octave_value_list& dir_list,
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
560 bool rm, bool subdirs)
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
561 {
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
562 emit interpreter_event
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
563 ([dir_list, rm, subdirs, this] (interpreter& interp)
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
564 {
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
565 // INTERPRETER THREAD
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
566
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
567 octave_value_list paths = ovl ();
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
568
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
569 if (subdirs)
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
570 {
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
571 // Loop over all directories in order to get all subdirs
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
572 for (octave_idx_type i = 0; i < dir_list.length (); i++)
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
573 paths.append (Fgenpath (dir_list(i)));
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
574 }
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
575 else
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
576 paths = dir_list;
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
577
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
578 if (rm)
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
579 Frmpath (interp, paths);
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
580 else
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
581 Faddpath (interp, paths);
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
582 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
583 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
584
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
585 void main_window::new_file (const QString& commands)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
586 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
587 emit new_file_signal (commands);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
588 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
589
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
590 void main_window::open_file (const QString& file_name, int line)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
591 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
592 if (line < 0)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
593 emit open_file_signal (file_name);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
594 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
595 emit open_file_signal (file_name, QString (), line);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
596 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
597
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
598 void main_window::edit_mfile (const QString& name, int line)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
599 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
600 handle_edit_mfile_request (name, QString (), QString (), line);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
601 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
602
25742
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
603 void main_window::file_remove_proxy (const QString& o, const QString& n)
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
604 {
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
605 interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
606
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
607 qt_interpreter_events *qt_link = interp_qobj->qt_link ();
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
608
25742
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
609 // Wait for worker to suspend
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
610 qt_link->lock ();
25742
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
611
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
612 // Close the file if opened
27039
32d9f57d7245 fix missing unlock of mutex when gui editor is not present (bug #56097)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
613 #if defined (HAVE_QSCINTILLA)
25742
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
614 m_editor_window->handle_file_remove (o, n);
27041
6caf75200854 build: Silence unused parameter warning created in cset 43f6f02dd91c (bug #56097).
Rik <rik@octave.org>
parents: 27039
diff changeset
615 #else
6caf75200854 build: Silence unused parameter warning created in cset 43f6f02dd91c (bug #56097).
Rik <rik@octave.org>
parents: 27039
diff changeset
616 octave_unused_parameter (o);
6caf75200854 build: Silence unused parameter warning created in cset 43f6f02dd91c (bug #56097).
Rik <rik@octave.org>
parents: 27039
diff changeset
617 octave_unused_parameter (n);
27039
32d9f57d7245 fix missing unlock of mutex when gui editor is not present (bug #56097)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
618 #endif
25742
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
619
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
620 // We are done: Unlock and wake the worker thread
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
621 qt_link->unlock ();
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
622 qt_link->wake_all ();
25742
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
623 }
d3c6de326bae close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents: 25723
diff changeset
624
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
625 void main_window::open_online_documentation_page (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
626 {
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
627 QDesktopServices::openUrl
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
628 (QUrl ("https://octave.org/doc/interpreter/index.html"));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
629 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
630
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
631 void main_window::display_release_notes (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
632 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
633 if (! m_release_notes_window)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
634 {
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
635 std::string news_file = config::oct_etc_dir () + "/NEWS";
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
636
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
637 QString news;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
638
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
639 QFile *file = new QFile (QString::fromStdString (news_file));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
640 if (file->open (QFile::ReadOnly))
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
641 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
642 QTextStream *stream = new QTextStream (file);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
643 news = stream->readAll ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
644 if (! news.isEmpty ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
645 {
25251
0bc58956aa40 Escape '<', '>' in NEWS file before it is displayed as HTML in Release Notes window (bug #53642).
Rik <rik@octave.org>
parents: 25103
diff changeset
646 // Convert '<', '>' which would be interpreted as HTML
0bc58956aa40 Escape '<', '>' in NEWS file before it is displayed as HTML in Release Notes window (bug #53642).
Rik <rik@octave.org>
parents: 25103
diff changeset
647 news.replace ("<", "&lt;");
0bc58956aa40 Escape '<', '>' in NEWS file before it is displayed as HTML in Release Notes window (bug #53642).
Rik <rik@octave.org>
parents: 25103
diff changeset
648 news.replace (">", "&gt;");
0bc58956aa40 Escape '<', '>' in NEWS file before it is displayed as HTML in Release Notes window (bug #53642).
Rik <rik@octave.org>
parents: 25103
diff changeset
649 // Add HTML tags for pre-formatted text
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
650 news.prepend ("<pre>");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
651 news.append ("</pre>");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
652 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
653 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
654 news = (tr ("The release notes file '%1' is empty.")
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
655 . arg (QString::fromStdString (news_file)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
656 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
657 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
658 news = (tr ("The release notes file '%1' cannot be read.")
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
659 . arg (QString::fromStdString (news_file)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
660
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
661 m_release_notes_window = new QWidget;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
662
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
663 QTextBrowser *browser = new QTextBrowser (m_release_notes_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
664 browser->setText (news);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
665
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
666 QVBoxLayout *vlayout = new QVBoxLayout;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
667 vlayout->addWidget (browser);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
668
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
669 m_release_notes_window->setLayout (vlayout);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
670 m_release_notes_window->setWindowTitle (tr ("Octave Release Notes"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
671
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
672 browser->document ()->adjustSize ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
673
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
674 // center the window on the screen where octave is running
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
675 QDesktopWidget *m_desktop = QApplication::desktop ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
676 int screen = m_desktop->screenNumber (this); // screen of the main window
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
677 QRect screen_geo = m_desktop->availableGeometry (screen);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
678 int win_x = screen_geo.width (); // width of the screen
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
679 int win_y = screen_geo.height (); // height of the screen
26643
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
680 int reln_x = win_x*2/5; // desired width of release notes
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
681 int reln_y = win_y*2/3; // desired height of release notes
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
682 m_release_notes_window->resize (reln_x, reln_y); // set size
26643
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
683 m_release_notes_window->move (20, 20); // move to the top left corner
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
684 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
685
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
686 if (! m_release_notes_window->isVisible ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
687 m_release_notes_window->show ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
688 else if (m_release_notes_window->isMinimized ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
689 m_release_notes_window->showNormal ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
690
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
691 m_release_notes_window->setWindowIcon (QIcon (m_release_notes_icon));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
692
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
693 m_release_notes_window->raise ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
694 m_release_notes_window->activateWindow ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
695 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
696
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
697 void main_window::load_and_display_community_news (int serial)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
698 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
699 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
700 gui_settings *settings = rmgr.get_settings ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
701
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
702 bool connect_to_web
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
703 = (settings
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
704 ? settings->value (nr_allow_connection).toBool ()
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
705 : true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
706
25024
3c817af70eed maint: use https for all Octave project URLs
Mike Miller <mtmiller@octave.org>
parents: 24792
diff changeset
707 QString base_url = "https://octave.org";
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
708 QString page = "community-news.html";
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
709
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
710 QThread *worker_thread = new QThread;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
711
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
712 news_reader *reader = new news_reader (m_octave_qobj, base_url, page,
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
713 serial, connect_to_web);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
714
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
715 reader->moveToThread (worker_thread);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
716
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
717 connect (reader, SIGNAL (display_news_signal (const QString&)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
718 this, SLOT (display_community_news (const QString&)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
719
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
720 connect (worker_thread, SIGNAL (started (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
721 reader, SLOT (process (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
722
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
723 connect (reader, SIGNAL (finished (void)), worker_thread, SLOT (quit (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
724
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
725 connect (reader, SIGNAL (finished (void)), reader, SLOT (deleteLater (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
726
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
727 connect (worker_thread, SIGNAL (finished (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
728 worker_thread, SLOT (deleteLater (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
729
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
730 worker_thread->start ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
731 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
732
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
733 void main_window::display_community_news (const QString& news)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
734 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
735 if (! m_community_news_window)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
736 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
737 m_community_news_window = new QWidget;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
738
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
739 QTextBrowser *browser = new QTextBrowser (m_community_news_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
740
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
741 browser->setHtml (news);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
742 browser->setObjectName ("OctaveNews");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
743 browser->setOpenExternalLinks (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
744
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
745 QVBoxLayout *vlayout = new QVBoxLayout;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
746
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
747 vlayout->addWidget (browser);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
748
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
749 m_community_news_window->setLayout (vlayout);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
750 m_community_news_window->setWindowTitle (tr ("Octave Community News"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
751
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
752 // center the window on the screen where octave is running
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
753 QDesktopWidget *m_desktop = QApplication::desktop ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
754 int screen = m_desktop->screenNumber (this); // screen of the main window
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
755 QRect screen_geo = m_desktop->availableGeometry (screen);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
756 int win_x = screen_geo.width (); // width of the screen
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
757 int win_y = screen_geo.height (); // height of the screen
26643
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
758 int news_x = win_x/2; // desired width of news window
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
759 int news_y = win_y/2; // desired height of news window
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
760 m_community_news_window->resize (news_x, news_y); // set size and center
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
761 m_community_news_window->move ((win_x - m_community_news_window->width ())/2,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
762 (win_y - m_community_news_window->height ())/2);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
763 }
25805
ae2c9f1427f0 update news window contents when community news are requeted a second time
Torsten <mttl@mailbox.org>
parents: 25742
diff changeset
764 else
ae2c9f1427f0 update news window contents when community news are requeted a second time
Torsten <mttl@mailbox.org>
parents: 25742
diff changeset
765 {
ae2c9f1427f0 update news window contents when community news are requeted a second time
Torsten <mttl@mailbox.org>
parents: 25742
diff changeset
766 // Window already exists, just update the browser contents
ae2c9f1427f0 update news window contents when community news are requeted a second time
Torsten <mttl@mailbox.org>
parents: 25742
diff changeset
767 QTextBrowser *browser
25819
182e891789f5 fix libgui build failure with Qt 4.8
Mike Miller <mtmiller@octave.org>
parents: 25805
diff changeset
768
182e891789f5 fix libgui build failure with Qt 4.8
Mike Miller <mtmiller@octave.org>
parents: 25805
diff changeset
769 = m_community_news_window->findChild<QTextBrowser *>("OctaveNews"
182e891789f5 fix libgui build failure with Qt 4.8
Mike Miller <mtmiller@octave.org>
parents: 25805
diff changeset
770 , Qt::FindDirectChildrenOnly
182e891789f5 fix libgui build failure with Qt 4.8
Mike Miller <mtmiller@octave.org>
parents: 25805
diff changeset
771 );
25805
ae2c9f1427f0 update news window contents when community news are requeted a second time
Torsten <mttl@mailbox.org>
parents: 25742
diff changeset
772 if (browser)
ae2c9f1427f0 update news window contents when community news are requeted a second time
Torsten <mttl@mailbox.org>
parents: 25742
diff changeset
773 browser->setHtml (news);
ae2c9f1427f0 update news window contents when community news are requeted a second time
Torsten <mttl@mailbox.org>
parents: 25742
diff changeset
774 }
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
775
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
776 if (! m_community_news_window->isVisible ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
777 m_community_news_window->show ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
778 else if (m_community_news_window->isMinimized ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
779 m_community_news_window->showNormal ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
780
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
781 // same icon as release notes
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
782 m_community_news_window->setWindowIcon (QIcon (m_release_notes_icon));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
783
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
784 m_community_news_window->raise ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
785 m_community_news_window->activateWindow ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
786 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
787
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
788 void main_window::open_bug_tracker_page (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
789 {
25024
3c817af70eed maint: use https for all Octave project URLs
Mike Miller <mtmiller@octave.org>
parents: 24792
diff changeset
790 QDesktopServices::openUrl (QUrl ("https://octave.org/bugs.html"));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
791 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
792
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
793 void main_window::open_octave_packages_page (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
794 {
25024
3c817af70eed maint: use https for all Octave project URLs
Mike Miller <mtmiller@octave.org>
parents: 24792
diff changeset
795 QDesktopServices::openUrl (QUrl ("https://octave.org/packages.html"));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
796 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
797
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
798 void main_window::open_contribute_page (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
799 {
25024
3c817af70eed maint: use https for all Octave project URLs
Mike Miller <mtmiller@octave.org>
parents: 24792
diff changeset
800 QDesktopServices::openUrl (QUrl ("https://octave.org/contribute.html"));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
801 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
802
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
803 void main_window::open_donate_page (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
804 {
25024
3c817af70eed maint: use https for all Octave project URLs
Mike Miller <mtmiller@octave.org>
parents: 24792
diff changeset
805 QDesktopServices::openUrl (QUrl ("https://octave.org/donate.html"));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
806 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
807
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
808 void main_window::process_settings_dialog_request (const QString& desired_tab)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
809 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
810 if (m_settings_dlg) // m_settings_dlg is a guarded pointer!
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
811 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
812 // here the dialog is still open and called once again
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
813 if (! desired_tab.isEmpty ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
814 m_settings_dlg->show_tab (desired_tab);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
815 return;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
816 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
817
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
818 m_settings_dlg = new settings_dialog (this, m_octave_qobj, desired_tab);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
819
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
820 connect (m_settings_dlg, SIGNAL (apply_new_settings (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
821 this, SLOT (request_reload_settings (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
822
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
823 m_settings_dlg->setModal (false);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
824 m_settings_dlg->setAttribute (Qt::WA_DeleteOnClose);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
825 m_settings_dlg->show ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
826 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
827
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
828 void main_window::show_about_octave (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
829 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
830 std::string message
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
831 = octave_name_version_copyright_copying_warranty_and_bugs (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
832
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
833 QMessageBox::about (this, tr ("About Octave"),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
834 QString::fromStdString (message));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
835 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
836
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
837 void main_window::notice_settings (const gui_settings *settings)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
838 {
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
839 if (! settings)
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
840 return;
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
841
26227
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
842 // Get desired style from preferences or take the default one if
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
843 // the desired one is not found
27935
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27929
diff changeset
844 QString preferred_style = settings->value (global_style).toString ();
26227
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
845
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
846 if (preferred_style == global_style.def.toString ())
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
847 preferred_style = m_default_style;
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
848
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
849 QStyle *new_style = QStyleFactory::create (preferred_style);
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
850 if (new_style)
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
851 {
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
852 QApplication *qapp = m_octave_qobj.qapplication ();
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
853
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
854 qapp->setStyle (new_style);
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
855 }
26227
2355f66cf91d allow to select the gui style in the preferences dialog
Torsten <mttl@mailbox.org>
parents: 26117
diff changeset
856
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
857 // the widget's icons (when floating)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
858 QString icon_set
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
859 = settings->value (dw_icon_set).toString ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
860
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
861 int count = 0;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
862 int icon_set_found = 0; // default
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
863
27665
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
864 while (! dw_icon_set_names[count].name.isEmpty ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
865 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
866 // while not end of data
27665
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
867 if (dw_icon_set_names[count].name == icon_set)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
868 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
869 // data of desired icon set found
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
870 icon_set_found = count;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
871 break;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
872 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
873 count++;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
874 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
875
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
876 QString icon;
27676
ea7d36e9f197 use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents: 27672
diff changeset
877 for (auto *widget : dock_widget_list ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
878 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
879 QString name = widget->objectName ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
880 if (! name.isEmpty ())
25042
ba5af45bbfc4 documentation widget based on qt help engine (bug #53006)
Torsten <mttl@mailbox.org>
parents: 25024
diff changeset
881 {
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
882 // if child has a name
27665
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
883 icon = dw_icon_set_names[icon_set_found].path; // prefix | octave-logo
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
884 if (dw_icon_set_names[icon_set_found].name != "NONE")
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
885 icon += name + ".png"; // add widget name and ext.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
886 widget->setWindowIcon (QIcon (icon));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
887 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
888 }
27665
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
889 if (dw_icon_set_names[icon_set_found].name != "NONE")
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
890 m_release_notes_icon = dw_icon_set_names[icon_set_found].path
25042
ba5af45bbfc4 documentation widget based on qt help engine (bug #53006)
Torsten <mttl@mailbox.org>
parents: 25024
diff changeset
891 + "ReleaseWidget.png";
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
892 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
893 m_release_notes_icon = ":/actions/icons/logo.png";
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
894
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
895 int size_idx = settings->value (global_icon_size).toInt ();
26058
ecd86b8b8979 use constants for icon size preferences instead of hard coded numbers
Torsten <mttl@mailbox.org>
parents: 25994
diff changeset
896 size_idx = (size_idx > 0) - (size_idx < 0) + 1; // Make valid index from 0 to 2
ecd86b8b8979 use constants for icon size preferences instead of hard coded numbers
Torsten <mttl@mailbox.org>
parents: 25994
diff changeset
897
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
898 QStyle *st = style ();
26058
ecd86b8b8979 use constants for icon size preferences instead of hard coded numbers
Torsten <mttl@mailbox.org>
parents: 25994
diff changeset
899 int icon_size = st->pixelMetric (global_icon_sizes[size_idx]);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
900 m_main_tool_bar->setIconSize (QSize (icon_size,icon_size));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
901
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
902 if (settings->value (global_status_bar.key, global_status_bar.def).toBool ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
903 m_status_bar->show ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
904 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
905 m_status_bar->hide ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
906
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
907 m_prevent_readline_conflicts
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
908 = settings->value (sc_prevent_rl_conflicts.key,
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
909 sc_prevent_rl_conflicts.def).toBool ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
910
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
911 m_suppress_dbg_location
27849
28d7ec92bae6 replace prefs literals by symbolic constant in main window
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27818
diff changeset
912 = ! settings->value (cs_dbg_location).toBool ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
913
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
914 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
915 rmgr.update_network_settings ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
916
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
917 emit active_dock_changed (nullptr, m_active_dock); // update dock widget styles
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
918
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
919 configure_shortcuts ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
920 set_global_shortcuts (m_active_dock == m_command_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
921 disable_menu_shortcuts (m_active_dock == m_editor_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
922
27270
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
923 // Check whether some octave internal preferences have to be updated
25702
bd30c6f8cfb7 update internal __mfile_encoding__ when gui default encoding changes (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25700
diff changeset
924 QString new_default_encoding
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
925 = settings->value (ed_default_enc).toString ();
25702
bd30c6f8cfb7 update internal __mfile_encoding__ when gui default encoding changes (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25700
diff changeset
926 if (new_default_encoding != m_default_encoding)
27270
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
927 update_default_encoding (new_default_encoding);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
928
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
929 // Set cursor blinking depending on the settings
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
930 // Cursor blinking: consider old terminal related setting if not yet set
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
931 // TODO: This pref. can be deprecated / removed if Qt adds support for
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
932 // getting the cursor blink preferences from all OS environments
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
933 bool cursor_blinking;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
934
27583
315c35e6037c use symbolic constants for command widget preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27562
diff changeset
935 if (settings->contains (global_cursor_blinking.key))
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
936 cursor_blinking = settings->value (global_cursor_blinking).toBool ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
937 else
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
938 cursor_blinking = settings->value (cs_cursor_blinking).toBool ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
939
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
940 if (cursor_blinking)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
941 QApplication::setCursorFlashTime (1000); // 1000 ms flash time
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
942 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
943 QApplication::setCursorFlashTime (0); // no flashing
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
944
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
945 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
946
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
947 void main_window::prepare_to_exit (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
948 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
949 // Find files dialog is constructed dynamically, not at time of main_window
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
950 // construction. Connecting it to qApp aboutToQuit signal would have
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
951 // caused it to run after gui_settings is deleted.
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
952 if (m_find_files_dlg)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
953 m_find_files_dlg->save_settings ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
954
27312
b9a436b0400e save and restore last geometry of load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27311
diff changeset
955 if (m_set_path_dlg)
b9a436b0400e save and restore last geometry of load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27311
diff changeset
956 m_set_path_dlg->save_settings ();
b9a436b0400e save and restore last geometry of load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27311
diff changeset
957
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
958 write_settings ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
959 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
960
27860
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
961 void main_window::go_to_previous_widget (void)
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
962 {
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
963 m_previous_dock->activate ();
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
964 }
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
965
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
966 void main_window::reset_windows (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
967 {
26307
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
968 hide ();
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
969 set_window_layout (nullptr); // do not use the settings file
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
970 showNormal (); // make sure main window is not minimized
24792
3390adaee21d * main-window.cc (reset_windows): set focus to console after resetting window layout
Torsten <mttl@mailbox.org>
parents: 24772
diff changeset
971 focus_command_window ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
972 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
973
27409
a0d49e55acae rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents: 27408
diff changeset
974 void main_window::update_octave_directory (const QString& dir)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
975 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
976 // Remove existing entry, if any, then add new directory at top and
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
977 // mark it as the current directory. Finally, update the file list
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
978 // widget.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
979
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
980 int index = m_current_directory_combo_box->findText (dir);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
981
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
982 if (index >= 0)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
983 m_current_directory_combo_box->removeItem (index);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
984
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
985 m_current_directory_combo_box->insertItem (0, dir);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
986 m_current_directory_combo_box->setCurrentIndex (0);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
987 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
988
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
989 void main_window::browse_for_directory (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
990 {
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
991 // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
992 int opts = QFileDialog::ShowDirsOnly;
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
993 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
994 gui_settings *settings = rmgr.get_settings ();
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
995 if (! settings->value (global_use_native_dialogs.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
996 global_use_native_dialogs.def).toBool ())
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
997 opts = QFileDialog::DontUseNativeDialog;
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
998
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
999 QString dir
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1000 = QFileDialog::getExistingDirectory (this, tr ("Browse directories"), nullptr,
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
1001 QFileDialog::Option (opts));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1002
15626
1cc10ce368ea enable entering a new directory in the current directory combobox
Torsten <ttl@justmail.de>
parents: 15607
diff changeset
1003 set_current_working_directory (dir);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1004
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1005 // FIXME: on Windows systems, the command window freezes after the
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1006 // previous actions. Forcing the focus appears to unstick it.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1007
24019
fc4ba8b1ff87 style fixes for GUI main window
John W. Eaton <jwe@octave.org>
parents: 24016
diff changeset
1008 focus_command_window ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1009 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1010
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1011 void main_window::set_current_working_directory (const QString& dir)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1012 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1013 // Change to dir if it is an existing directory.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1014
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1015 QString xdir = (dir.isEmpty () ? "." : dir);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1016
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1017 QFileInfo fileInfo (xdir);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1018
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1019 if (fileInfo.exists () && fileInfo.isDir ())
25703
7b4e99fbe9d4 include builtin functions without interpreter argument being into octave_cmd
Torsten <mttl@mailbox.org>
parents: 25702
diff changeset
1020 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1021 emit interpreter_event
27408
9b19eec60931 move change directory function to interpreter class
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
1022 ([xdir] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1023 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1024 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1025
27408
9b19eec60931 move change directory function to interpreter class
John W. Eaton <jwe@octave.org>
parents: 27405
diff changeset
1026 interp.chdir (xdir.toStdString ());
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1027 });
25703
7b4e99fbe9d4 include builtin functions without interpreter argument being into octave_cmd
Torsten <mttl@mailbox.org>
parents: 25702
diff changeset
1028 }
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1029 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1030
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1031 void main_window::change_directory_up (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1032 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1033 set_current_working_directory ("..");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1034 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1035
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1036 // Slot that is called if return is pressed in the line edit of the
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1037 // combobox to change to a new directory or a directory that is already
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1038 // in the drop down list.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1039
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1040 void main_window::accept_directory_line_edit (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1041 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1042 // Get new directory name, and change to it if it is new. Otherwise,
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
1043 // the combo box will trigger the "activated" signal to change to the
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1044 // directory.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1045
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1046 QString dir = m_current_directory_combo_box->currentText ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1047
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1048 int index = m_current_directory_combo_box->findText (dir);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1049
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1050 if (index < 0)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1051 set_current_working_directory (dir);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1052 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1053
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1054 void main_window::execute_command_in_terminal (const QString& command)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1055 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1056 emit interpreter_event
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1057 ([command] (void)
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1058 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1059 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1060
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1061 std::string pending_input = command_editor::get_current_line ();
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1062
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1063 command_editor::set_initial_input (pending_input);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1064 command_editor::replace_line (command.toStdString ());
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1065 command_editor::redisplay ();
27339
64289bf338da use separate variable for interrupting command editor event loop (bug #56738)
John W. Eaton <jwe@octave.org>
parents: 27335
diff changeset
1066 command_editor::interrupt_event_loop ();
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1067 command_editor::accept_line ();
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1068 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1069
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27478
diff changeset
1070 focus_console_after_command ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1071 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1072
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1073 void main_window::run_file_in_terminal (const QFileInfo& info)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1074 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1075 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1076 ([info] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1077 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1078 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1079
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1080 QString function_name = info.fileName ();
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1081 function_name.chop (info.suffix ().length () + 1);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1082 std::string file_path = info.absoluteFilePath ().toStdString ();
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1083
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1084 std::string pending_input = command_editor::get_current_line ();
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1085
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1086 if (valid_identifier (function_name.toStdString ()))
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1087 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1088 // Valid identifier: call as function with possibility to
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1089 // debug.
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1090
27396
930c0fbc003b move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents: 27393
diff changeset
1091 load_path& lp = interp.get_load_path ();
930c0fbc003b move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents: 27393
diff changeset
1092
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1093 std::string path = info.absolutePath ().toStdString ();
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1094
27396
930c0fbc003b move qt_interpreter_events::file_in_path to load_path::contains_file_in_dir
John W. Eaton <jwe@octave.org>
parents: 27393
diff changeset
1095 if (lp.contains_file_in_dir (file_path, path))
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1096 command_editor::replace_line (function_name.toStdString ());
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1097 }
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1098 else
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1099 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1100 // No valid identifier: use equivalent of Fsource (), no
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1101 // debug possible.
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1102
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1103 interp.source_file (file_path);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1104
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1105 command_editor::replace_line ("");
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1106 }
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1107
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1108 command_editor::set_initial_input (pending_input);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1109 command_editor::redisplay ();
27339
64289bf338da use separate variable for interrupting command editor event loop (bug #56738)
John W. Eaton <jwe@octave.org>
parents: 27335
diff changeset
1110 command_editor::interrupt_event_loop ();
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1111 command_editor::accept_line ();
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1112 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1113
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27478
diff changeset
1114 focus_console_after_command ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1115 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1116
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1117 void main_window::handle_new_figure_request (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1118 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1119 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1120 ([] (interpreter& interp)
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1121 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1122 // INTERPRETER THREAD
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1123
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1124 Fbuiltin (interp, ovl ("figure"));
27335
50216d7a2f6b eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents: 27312
diff changeset
1125 Fdrawnow (interp);
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1126 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1127 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1128
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1129 void main_window::handle_enter_debugger (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1130 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1131 setWindowTitle ("Octave (Debugging)");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1132
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1133 m_debug_continue->setEnabled (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1134 m_debug_step_into->setEnabled (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1135 m_debug_step_over->setEnabled (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1136 m_debug_step_out->setEnabled (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1137 m_debug_quit->setEnabled (true);
16438
a971d8bdaadc use signals instead of event queue for entering/leaving debug mode
John W. Eaton <jwe@octave.org>
parents: 16437
diff changeset
1138
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
1139 #if defined (HAVE_QSCINTILLA)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1140 m_editor_window->handle_enter_debug_mode ();
15873
7d300b85ee25 allow build to proceed if either Qt or QScintilla is missing
John W. Eaton <jwe@octave.org>
parents: 15848
diff changeset
1141 #endif
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1142 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1143
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1144 void main_window::handle_exit_debugger (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1145 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1146 setWindowTitle ("Octave");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1147
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1148 m_debug_continue->setEnabled (false);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1149 m_debug_step_into->setEnabled (false);
26873
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
1150 m_debug_step_over->setEnabled (m_editor_has_tabs);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1151 m_debug_step_out->setEnabled (false);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1152 m_debug_quit->setEnabled (false);
16438
a971d8bdaadc use signals instead of event queue for entering/leaving debug mode
John W. Eaton <jwe@octave.org>
parents: 16437
diff changeset
1153
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
1154 #if defined (HAVE_QSCINTILLA)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1155 m_editor_window->handle_exit_debug_mode ();
15873
7d300b85ee25 allow build to proceed if either Qt or QScintilla is missing
John W. Eaton <jwe@octave.org>
parents: 15848
diff changeset
1156 #endif
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1157 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1158
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1159 void main_window::debug_continue (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1160 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1161 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1162 ([this] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1163 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1164 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1165
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1166 F__db_next_breakpoint_quiet__ (interp, ovl (m_suppress_dbg_location));
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1167 Fdbcont (interp);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1168
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1169 command_editor::interrupt (true);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1170 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1171 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1172
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1173 void main_window::debug_step_into (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1174 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1175 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1176 ([this] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1177 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1178 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1179
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1180 F__db_next_breakpoint_quiet__ (interp, ovl (m_suppress_dbg_location));
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1181 Fdbstep (interp, ovl ("in"));
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1182
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1183 command_editor::interrupt (true);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1184 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1185 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1186
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1187 void main_window::debug_step_over (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1188 {
26873
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
1189 if (m_debug_quit->isEnabled ())
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
1190 {
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1191 // We are in debug mode, just call dbstep.
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1192
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1193 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1194 ([this] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1195 {
27393
efe72866b483 mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents: 27391
diff changeset
1196 // INTERPRETER THREAD
efe72866b483 mark all interpreter_event lambda functions with special comment
John W. Eaton <jwe@octave.org>
parents: 27391
diff changeset
1197
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1198 F__db_next_breakpoint_quiet__ (interp,
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1199 ovl (m_suppress_dbg_location));
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1200 Fdbstep (interp);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1201
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1202 command_editor::interrupt (true);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1203 });
26873
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
1204 }
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
1205 else
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
1206 {
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
1207 // Not in debug mode: "step into" the current editor file
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
1208 emit step_into_file_signal ();
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
1209 }
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1210 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1211
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1212 void main_window::debug_step_out (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1213 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1214 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1215 ([this] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1216 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1217 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1218
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1219 F__db_next_breakpoint_quiet__ (interp, ovl (m_suppress_dbg_location));
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1220 Fdbstep (interp, ovl ("out"));
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1221
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1222 command_editor::interrupt (true);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1223 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1224 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1225
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1226 void main_window::debug_quit (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1227 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1228 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1229 ([] (interpreter& interp)
27255
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1230 {
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1231 // INTERPRETER THREAD
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1232
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1233 Fdbquit (interp);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1234
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1235 command_editor::interrupt (true);
420611c61298 eliminate octave_cmd classes
John W. Eaton <jwe@octave.org>
parents: 27243
diff changeset
1236 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1237 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1238
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1239 //
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1240 // Functions related to file editing
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1241 //
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1242 // These are moved from editor to here for also using them when octave
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1243 // is built without qscintilla
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1244 //
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1245 void main_window::request_open_file (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1246 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1247 // Open file isn't a file_editor_tab or editor function since the file
27929
265b386f8b20 maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents: 27923
diff changeset
1248 // might be opened in an external editor. Hence, functionality is here.
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1249
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1250 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1251 gui_settings *settings = rmgr.get_settings ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1252 bool is_internal = m_editor_window
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1253 && ! settings->value (global_use_custom_editor.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1254 global_use_custom_editor.def).toBool ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1255
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1256 // Create a NonModal message.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1257 QWidget *p = this;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1258 if (is_internal)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1259 p = m_editor_window;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1260 QFileDialog *fileDialog = new QFileDialog (p);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1261 fileDialog->setNameFilter (tr ("Octave Files (*.m);;All Files (*)"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1262
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1263 fileDialog->setAcceptMode (QFileDialog::AcceptOpen);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1264 fileDialog->setViewMode (QFileDialog::Detail);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1265 fileDialog->setFileMode (QFileDialog::ExistingFiles);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1266 fileDialog->setDirectory (m_current_directory_combo_box->itemText (0));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1267
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
1268 // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1269 if (! settings->value (global_use_native_dialogs.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1270 global_use_native_dialogs.def).toBool ())
26096
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
1271 fileDialog->setOption(QFileDialog::DontUseNativeDialog);
1002b49ce7b3 Make use of native file dialogs configurable (bug #54607).
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26067
diff changeset
1272
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1273 connect (fileDialog, SIGNAL (filesSelected (const QStringList&)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1274 this, SLOT (request_open_files (const QStringList&)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1275
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1276 fileDialog->setWindowModality (Qt::NonModal);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1277 fileDialog->setAttribute (Qt::WA_DeleteOnClose);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1278 fileDialog->show ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1279 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1280
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1281 // Create a new script
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1282 void main_window::request_new_script (const QString& commands)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1283 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1284 emit new_file_signal (commands);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1285 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1286
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1287 // Create a new function and open it
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1288 void main_window::request_new_function (bool)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1289 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1290 bool ok;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1291 // Get the name of the new function: Parent of the input dialog is the
27929
265b386f8b20 maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents: 27923
diff changeset
1292 // editor window or the main window. The latter is chosen, if a custom
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1293 // editor is used or qscintilla is not available
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1294 QWidget *p = m_editor_window;
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1295 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1296 gui_settings *settings = rmgr.get_settings ();
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1297 if (! p || settings->value (global_use_custom_editor.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1298 global_use_custom_editor.def).toBool ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1299 p = this;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1300 QString new_name = QInputDialog::getText (p, tr ("New Function"),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1301 tr ("New function name:\n"), QLineEdit::Normal, "", &ok);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1302
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1303 if (ok && new_name.length () > 0)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1304 {
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
1305 // append suffix if it does not already exist
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1306 if (new_name.rightRef (2) != ".m")
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1307 new_name.append (".m");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1308 // check whether new files are created without prompt
27849
28d7ec92bae6 replace prefs literals by symbolic constant in main window
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27818
diff changeset
1309 if (! settings->value (ed_create_new_file).toBool ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1310 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1311 // no, so enable this settings and wait for end of new file loading
27849
28d7ec92bae6 replace prefs literals by symbolic constant in main window
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27818
diff changeset
1312 settings->setValue (ed_create_new_file.key, true);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1313 connect (m_editor_window, SIGNAL (file_loaded_signal (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1314 this, SLOT (restore_create_file_setting (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1315 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1316 // start the edit command
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1317 execute_command_in_terminal ("edit " + new_name);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1318 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1319 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1320
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1321 void main_window::handle_edit_mfile_request (const QString& fname,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1322 const QString& ffile,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1323 const QString& curr_dir,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1324 int line)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1325 {
27377
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1326 emit interpreter_event
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1327 ([this, fname, ffile, curr_dir, line] (interpreter& interp)
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1328 {
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1329 // INTERPRETER THREAD
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1330
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
1331 // Split possible subfunctions
27377
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1332 QStringList fcn_list = fname.split ('>');
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1333 QString fcn_name = fcn_list.at (0) + ".m";
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1334
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1335 // FIXME: could use symbol_exist directly, but we may also want
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1336 // to fix that to be a member function in the interpreter
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1337 // class?
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1338
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1339 // Is it a regular function within the search path? (Call Fexist)
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1340 octave_value_list fct = Fexist (interp, ovl (fname.toStdString ()),0);
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1341 int type = fct (0).int_value ();
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1342
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1343 QString message = QString ();
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1344 QString filename = QString ();
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1345
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1346 switch (type)
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1347 {
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1348 case 3:
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1349 case 5:
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1350 case 103:
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1351 message = tr ("%1 is a built-in, compiled or inline\n"
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1352 "function and can not be edited.");
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1353 break;
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1354
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1355 case 2:
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1356 // FIXME: could use a load_path function directly.
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1357 octave_value_list file_path
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1358 = Ffile_in_loadpath (interp, ovl (fcn_name.toStdString ()), 0);
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1359 if (file_path.length () > 0)
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1360 filename = QString::fromStdString (file_path (0).string_value ());
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1361 break;
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1362 }
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1363
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1364 if (filename.isEmpty () && message.isEmpty ())
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1365 {
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1366 // No error so far, but function still not known
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1367 // -> try directory of edited file
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1368 // get directory
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1369 QDir dir;
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1370 if (ffile.isEmpty ())
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1371 {
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1372 if (curr_dir.isEmpty ())
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1373 dir = QDir (m_current_directory_combo_box->itemText (0));
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1374 else
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1375 dir = QDir (curr_dir);
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1376 }
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1377 else
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1378 dir = QDir (QFileInfo (ffile).canonicalPath ());
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1379
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1380 QFileInfo file = QFileInfo (dir, fcn_name);
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1381 if (file.exists ())
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1382 filename = file.canonicalFilePath (); // local file exists
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1383 else
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1384 {
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1385 // local file does not exist -> try private directory
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1386 file = QFileInfo (ffile);
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1387 file = QFileInfo (QDir (file.canonicalPath () + "/private"),
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1388 fcn_name);
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1389 if (file.exists ())
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1390 filename = file.canonicalFilePath (); // private function exists
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1391 else
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1392 message = tr ("Can not find function %1"); // no file found
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1393
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1394 }
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1395 }
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1396
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1397 if (! message.isEmpty ())
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1398 {
27653
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
1399 emit warning_function_not_found_signal (message.arg (fname));
27377
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1400 return;
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1401 }
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1402
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1403 if (! filename.endsWith (".m"))
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1404 filename.append (".m");
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1405
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1406 // default encoding
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1407 emit open_file_signal (filename, QString (), line);
5ca84fb30205 use event manager to handle two more interpreter actions in GUI
John W. Eaton <jwe@octave.org>
parents: 27375
diff changeset
1408 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1409 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1410
27653
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
1411 void main_window::warning_function_not_found (const QString& message)
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
1412 {
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
1413 QMessageBox *msgBox = new QMessageBox (QMessageBox::Critical,
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
1414 tr ("Octave Editor"),
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
1415 message, QMessageBox::Ok, this);
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
1416 msgBox->setWindowModality (Qt::NonModal);
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
1417 msgBox->setAttribute (Qt::WA_DeleteOnClose);
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
1418 msgBox->show ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1419 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1420
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1421 void main_window::handle_insert_debugger_pointer_request (const QString& file,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1422 int line)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1423 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1424 bool cmd_focus = command_window_has_focus ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1425
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1426 emit insert_debugger_pointer_signal (file, line);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1427
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1428 if (cmd_focus)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1429 focus_command_window ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1430 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1431
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1432 void main_window::handle_delete_debugger_pointer_request (const QString& file,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1433 int line)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1434 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1435 bool cmd_focus = command_window_has_focus ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1436
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1437 emit delete_debugger_pointer_signal (file, line);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1438
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1439 if (cmd_focus)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1440 focus_command_window ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1441 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1442
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1443 void main_window::handle_update_breakpoint_marker_request (bool insert,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1444 const QString& file,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1445 int line,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1446 const QString& cond)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1447 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1448 bool cmd_focus = command_window_has_focus ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1449
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1450 emit update_breakpoint_marker_signal (insert, file, line, cond);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1451
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1452 if (cmd_focus)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1453 focus_command_window ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1454 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1455
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1456 void main_window::read_settings (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1457 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1458 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1459 gui_settings *settings = rmgr.get_settings ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1460
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1461 if (! settings)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1462 {
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
1463 qDebug ("Error: gui_settings pointer from resource manager is NULL.");
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1464 return;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1465 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1466
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1467 set_window_layout (settings);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1468
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1469 // restore the list of the last directories
27849
28d7ec92bae6 replace prefs literals by symbolic constant in main window
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27818
diff changeset
1470 QStringList curr_dirs = settings->value (mw_dir_list).toStringList ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1471 for (int i=0; i < curr_dirs.size (); i++)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1472 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1473 m_current_directory_combo_box->addItem (curr_dirs.at (i));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1474 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1475 emit settings_changed (settings);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1476 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1477
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1478 void main_window::init_terminal_size (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1479 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1480 emit init_terminal_size_signal ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1481 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1482
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
1483 void main_window::set_window_layout (gui_settings *settings)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1484 {
26299
c95884eed1cf make restoring gui more robust to changes of desktop size (bug #53207)
Torsten <mttl@mailbox.org>
parents: 26277
diff changeset
1485 // Restore main window state and geometry from settings file or, in case
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
1486 // of an error, from the default layout.
26307
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1487 if (settings)
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1488 {
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
1489 if (! restoreState (settings->value (mw_state).toByteArray ()))
26307
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1490 restoreState (mw_state.def.toByteArray ());
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1491
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27671
diff changeset
1492 if (! restoreGeometry (settings->value (mw_geometry).toByteArray ()))
26307
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1493 restoreGeometry (mw_geometry.def.toByteArray ());
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1494 }
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1495
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1496 // Restore the geometry of all dock-widgets
27676
ea7d36e9f197 use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents: 27672
diff changeset
1497 for (auto *widget : dock_widget_list ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1498 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1499 QString name = widget->objectName ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1500
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1501 if (! name.isEmpty ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1502 {
26307
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1503 bool floating = false;
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1504 bool visible = true;
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1505 if (settings)
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1506 {
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1507 floating = settings->value
27665
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
1508 (dw_is_floating.key.arg (name), dw_is_floating.def).toBool ();
26307
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1509 visible = settings->value
27665
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
1510 (dw_is_visible.key.arg (name), dw_is_visible.def).toBool ();
26307
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1511 }
17899
14c427b5c5c1 Restore geometry of floating widgets after restart in windows (bug #40485)
Torsten <ttl@justmail.de>
parents: 17890
diff changeset
1512
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1513 // If floating, make window from widget.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1514 if (floating)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1515 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1516 widget->make_window ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1517
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1518 if (visible)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1519 {
27665
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
1520 if (settings
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
1521 && settings->value (dw_is_minimized.key.arg (name),
a1271c5b621a replace preference literals by symbolic constants for dock widgets
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27664
diff changeset
1522 dw_is_minimized.def).toBool ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1523 widget->showMinimized ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1524 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1525 widget->setVisible (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1526 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1527 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1528 else // not floating
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1529 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1530 if (! widget->parent ()) // should not be floating but is
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1531 widget->make_widget (false); // no docking, just reparent
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1532
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1533 widget->make_widget ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1534 widget->setVisible (visible); // not floating -> show
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1535 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1536 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1537 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1538
26307
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1539 if (! settings)
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1540 {
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1541 restoreGeometry (mw_geometry.def.toByteArray ());
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1542 restoreState (mw_state.def.toByteArray ());
26643
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
1543
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
1544 QDesktopWidget *m_desktop = QApplication::desktop ();
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
1545 int screen = m_desktop->screenNumber (this); // screen of the main window
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
1546 QRect screen_geo = m_desktop->availableGeometry (screen);
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
1547
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
1548 int win_x = screen_geo.width (); // width of the screen
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
1549 int win_y = screen_geo.height (); // height of the screen
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
1550
5d1f413ff746 adapt initial window sizes to the screen resolution (bug #55498)
Torsten <mttl@mailbox.org>
parents: 26555
diff changeset
1551 resize (std::max (width (), 2*win_x/3), std::max (height (), 7*win_y/8));
26307
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1552 }
a21f58c5e573 fix resetting gui window layout
Torsten <mttl@mailbox.org>
parents: 26299
diff changeset
1553
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1554 show ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1555 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1556
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1557 void main_window::write_settings (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1558 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1559 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1560 gui_settings *settings = rmgr.get_settings ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1561 if (! settings)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1562 {
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
1563 qDebug ("Error: gui_settings pointer from resource manager is NULL.");
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1564 return;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1565 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1566
27562
d7876110e854 use symbolic preference keys if available
John W. Eaton <jwe@octave.org>
parents: 27560
diff changeset
1567 settings->setValue (mw_geometry.key, saveGeometry ());
d7876110e854 use symbolic preference keys if available
John W. Eaton <jwe@octave.org>
parents: 27560
diff changeset
1568 settings->setValue (mw_state.key, saveState ());
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
1569 // write the list of recently used directories
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1570 QStringList curr_dirs;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1571 for (int i=0; i<m_current_directory_combo_box->count (); i++)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1572 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1573 curr_dirs.append (m_current_directory_combo_box->itemText (i));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1574 }
27849
28d7ec92bae6 replace prefs literals by symbolic constant in main window
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27818
diff changeset
1575 settings->setValue (mw_dir_list.key, curr_dirs);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1576 settings->sync ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1577 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1578
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1579 // Connecting the signals emitted when the visibility of a widget changes.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1580 // This has to be done after the window is shown (see octave-gui.cc)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1581 void main_window::connect_visibility_changed (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1582 {
27676
ea7d36e9f197 use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents: 27672
diff changeset
1583 for (auto *widget : dock_widget_list ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1584 widget->connect_visibility_changed ();
18944
b2c4d6d461f0 fix conflict between main and editor menus when using alt keys (bug #42659)
Torsten <ttl@justmail.de>
parents: 18840
diff changeset
1585
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
1586 #if defined (HAVE_QSCINTILLA)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1587 m_editor_window->enable_menu_shortcuts (false);
19589
4fe86a372f10 Fix compilation error when building without QScintilla
Mike Miller <mtmiller@ieee.org>
parents: 19585
diff changeset
1588 #endif
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1589 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1590
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1591 void main_window::copyClipboard (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1592 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1593 if (m_current_directory_combo_box->hasFocus ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1594 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1595 QLineEdit *edit = m_current_directory_combo_box->lineEdit ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1596 if (edit && edit->hasSelectedText ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1597 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1598 QClipboard *clipboard = QApplication::clipboard ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1599 clipboard->setText (edit->selectedText ());
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1600 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1601 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1602 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1603 emit copyClipboard_signal ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1604 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1605
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1606 void main_window::pasteClipboard (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1607 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1608 if (m_current_directory_combo_box->hasFocus ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1609 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1610 QLineEdit *edit = m_current_directory_combo_box->lineEdit ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1611 QClipboard *clipboard = QApplication::clipboard ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1612 QString str = clipboard->text ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1613 if (edit && str.length () > 0)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1614 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1615 edit->insert (str);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1616 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1617 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1618 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1619 emit pasteClipboard_signal ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1620 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1621
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1622 void main_window::selectAll (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1623 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1624 if (m_current_directory_combo_box->hasFocus ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1625 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1626 QLineEdit *edit = m_current_directory_combo_box->lineEdit ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1627 if (edit)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1628 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1629 edit->selectAll ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1630 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1631 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1632 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1633 emit selectAll_signal ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1634 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1635
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1636 void main_window::handle_show_doc (const QString& file)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1637 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1638 m_doc_browser_window->setVisible (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1639 emit show_doc_signal (file);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1640 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1641
25060
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1642 void main_window::handle_register_doc (const QString& file)
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1643 {
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1644 emit register_doc_signal (file);
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1645 }
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1646
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1647 void main_window::handle_unregister_doc (const QString& file)
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1648 {
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1649 emit unregister_doc_signal (file);
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1650 }
1cd3aeda7598 Allow registering compressed help at run time (bug #53006).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 25054
diff changeset
1651
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1652 void main_window::handle_octave_ready (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1653 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1654 // actions after the startup files are executed
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1655 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1656 gui_settings *settings = rmgr.get_settings ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1657
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1658 QDir startup_dir = QDir (); // current octave dir after startup
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1659
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1660 if (settings)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1661 {
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1662 if (settings->value (global_restore_ov_dir.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1663 global_restore_ov_dir.def).toBool ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1664 {
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1665 // restore last dir from previous session
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1666 QStringList curr_dirs
27849
28d7ec92bae6 replace prefs literals by symbolic constant in main window
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27818
diff changeset
1667 = settings->value (mw_dir_list).toStringList ();
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1668 startup_dir
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1669 = QDir (curr_dirs.at (0)); // last dir in previous session
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1670 }
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1671 else if (! settings->value (global_ov_startup_dir.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1672 global_ov_startup_dir.def).toString ().isEmpty ())
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1673 {
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1674 // do not restore but there is a startup dir configured
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1675 startup_dir
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1676 = QDir (settings->value (global_ov_startup_dir.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27702
diff changeset
1677 global_ov_startup_dir.def).toString ());
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1678 }
27270
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
1679
27935
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27929
diff changeset
1680 update_default_encoding (settings->value (ed_default_enc).toString ());
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1681 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1682
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1683 if (! startup_dir.exists ())
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1684 {
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1685 // the configured startup dir does not exist, take actual one
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1686 startup_dir = QDir ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1687 }
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1688
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1689 set_current_working_directory (startup_dir.absolutePath ());
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1690
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1691 if (m_editor_window)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1692 {
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
1693 #if defined (HAVE_QSCINTILLA)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1694 // Octave ready, determine whether to create an empty script.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1695 // This can not be done when the editor is created because all functions
27956
2310164737b3 fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 27041
diff changeset
1696 // must be known for the lexer's auto completion information
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1697 m_editor_window->empty_script (true, false);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1698 m_editor_window->restore_session (settings);
18833
6504a1932637 auto completion offers builtins and file functions for octave (bug #41371)
Torsten <ttl@justmail.de>
parents: 18823
diff changeset
1699 #endif
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1700 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1701
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1702 focus_command_window (); // make sure that the command window has focus
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1703 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1704
27298
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1705 void main_window::handle_set_path_dialog_request (void)
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1706 {
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1707 if (m_set_path_dlg) // m_set_path_dlg is a guarded pointer!
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1708 return;
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1709
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1710 m_set_path_dlg = new set_path_dialog (this, m_octave_qobj);
27298
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1711
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1712 m_set_path_dlg->setModal (false);
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1713 m_set_path_dlg->setAttribute (Qt::WA_DeleteOnClose);
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1714 m_set_path_dlg->show ();
27306
82ace1225a9c update path dialog if path is changed from withtin the file browser
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27302
diff changeset
1715
27391
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1716 // Any interpreter_event signal from a set_path_dialog object is
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1717 // handled the same as for the main_window object.
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1718
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1719 connect (m_set_path_dlg, SIGNAL (interpreter_event (const fcn_callback&)),
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1720 this, SIGNAL (interpreter_event (const fcn_callback&)));
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1721
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1722 connect (m_set_path_dlg, SIGNAL (interpreter_event (const meth_callback&)),
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1723 this, SIGNAL (interpreter_event (const meth_callback&)));
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1724
27308
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
1725 connect (m_set_path_dlg,
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
1726 SIGNAL (modify_path_signal (const octave_value_list&, bool, bool)),
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
1727 this, SLOT (modify_path (const octave_value_list&, bool, bool)));
401a7cda7c9e add possibility for adding dir with subdirectories to load path dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27306
diff changeset
1728
27311
0040b7668518 update load path dialog when path is modified via console
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27308
diff changeset
1729 interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
27391
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1730
27311
0040b7668518 update load path dialog when path is modified via console
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27308
diff changeset
1731 qt_interpreter_events *qt_link = interp_qobj->qt_link ();
27391
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1732
27311
0040b7668518 update load path dialog when path is modified via console
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27308
diff changeset
1733 connect (qt_link, SIGNAL (update_path_dialog_signal (void)),
27306
82ace1225a9c update path dialog if path is changed from withtin the file browser
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27302
diff changeset
1734 m_set_path_dlg, SLOT (update_model (void)));
27391
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1735
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1736 // Now that all the signal connections are in place for the dialog
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1737 // we can set the initial value of the path in the model.
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1738
a329a41cf341 use interpreter_event signals in set_path_dialog object
John W. Eaton <jwe@octave.org>
parents: 27377
diff changeset
1739 m_set_path_dlg->update_model ();
27298
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1740 }
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1741
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1742 void main_window::find_files (const QString& start_dir)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1743 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1744
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1745 if (! m_find_files_dlg)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1746 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1747 m_find_files_dlg = new find_files_dialog (this, m_octave_qobj);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1748
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1749 connect (m_find_files_dlg, SIGNAL (finished (int)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1750 this, SLOT (find_files_finished (int)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1751
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1752 connect (m_find_files_dlg, SIGNAL (dir_selected (const QString &)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1753 m_file_browser_window,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1754 SLOT (set_current_directory (const QString&)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1755
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1756 connect (m_find_files_dlg, SIGNAL (file_selected (const QString &)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1757 this, SLOT (open_file (const QString &)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1758
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1759 m_find_files_dlg->setWindowModality (Qt::NonModal);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1760 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1761
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1762 if (! m_find_files_dlg->isVisible ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1763 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1764 m_find_files_dlg->show ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1765 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1766
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1767 m_find_files_dlg->set_search_dir (start_dir);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1768
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1769 m_find_files_dlg->activateWindow ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1770
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1771 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1772
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1773 void main_window::set_global_shortcuts (bool set_shortcuts)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1774 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1775 // this slot is called when the terminal gets/loses focus
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1776
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
1777 // return if the user doesn't want to use readline shortcuts
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1778 if (! m_prevent_readline_conflicts)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1779 return;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1780
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1781 if (set_shortcuts)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1782 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1783 // terminal loses focus: set the global shortcuts
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1784 configure_shortcuts ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1785 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1786 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1787 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1788 // terminal gets focus: disable some shortcuts
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1789 QKeySequence no_key = QKeySequence ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1790
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1791 // file menu
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1792 m_open_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1793 m_new_script_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1794 m_new_function_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1795 m_new_function_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1796 m_load_workspace_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1797 m_save_workspace_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1798 m_preferences_action->setShortcut (no_key);
27298
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
1799 m_set_path_action->setShortcut (no_key);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1800 m_exit_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1801
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1802 // edit menu
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1803 m_select_all_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1804 m_clear_clipboard_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1805 m_find_files_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1806 m_clear_command_history_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1807 m_clear_command_window_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1808 m_clear_workspace_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1809
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1810 // window menu
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1811 m_reset_windows_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1812
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1813 // help menu
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1814 m_ondisk_doc_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1815 m_online_doc_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1816 m_report_bug_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1817 m_octave_packages_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1818 m_contribute_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1819 m_developer_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1820 m_about_octave_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1821
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1822 // news menu
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1823 m_release_notes_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1824 m_current_news_action->setShortcut (no_key);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1825 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1826 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1827
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1828 void main_window::set_screen_size (int ht, int wd)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1829 {
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1830 emit interpreter_event
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1831 ([ht, wd] (void)
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1832 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1833 // INTERPRETER THREAD
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1834
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1835 command_editor::set_screen_size (ht, wd);
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1836 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1837 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1838
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1839 void main_window::clipboard_has_changed (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1840 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1841 if (m_clipboard->text ().isEmpty ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1842 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1843 m_paste_action->setEnabled (false);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1844 m_clear_clipboard_action->setEnabled (false);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1845 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1846 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1847 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1848 m_paste_action->setEnabled (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1849 m_clear_clipboard_action->setEnabled (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1850 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1851 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1852
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1853 void main_window::clear_clipboard (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1854 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1855 m_clipboard->clear (QClipboard::Clipboard);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1856 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1857
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1858 void main_window::disable_menu_shortcuts (bool disable)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1859 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1860 QHash<QMenu*, QStringList>::const_iterator i = m_hash_menu_text.constBegin ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1861
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1862 while (i != m_hash_menu_text.constEnd ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1863 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1864 i.key ()->setTitle (i.value ().at (disable));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1865 ++i;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1866 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1867 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1868
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1869 void main_window::restore_create_file_setting (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1870 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1871 // restore the new files creation setting
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1872 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
1873 gui_settings *settings = rmgr.get_settings ();
27849
28d7ec92bae6 replace prefs literals by symbolic constant in main window
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27818
diff changeset
1874 settings->setValue (ed_create_new_file.key, false);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1875 disconnect (m_editor_window, SIGNAL (file_loaded_signal (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1876 this, SLOT (restore_create_file_setting (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1877 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1878
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1879 void main_window::set_file_encoding (const QString& new_encoding)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1880 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1881 m_file_encoding = new_encoding;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1882 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1883
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1884 // The following slot is called after files have been selected in the
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
1885 // open file dialog, possibly with a new selected encoding stored in
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1886 // m_file_encoding
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1887 void main_window::request_open_files (const QStringList& open_file_names)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1888 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1889 for (int i = 0; i < open_file_names.count (); i++)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1890 emit open_file_signal (open_file_names.at (i), m_file_encoding, -1);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1891 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1892
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1893 void main_window::edit_variable (const QString &expr, const octave_value& val)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1894 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1895 m_variable_editor_window->edit_variable (expr, val);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1896
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1897 if (! m_variable_editor_window->isVisible ())
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1898 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1899 m_variable_editor_window->show ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1900 m_variable_editor_window->raise ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1901 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1902
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1903 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1904
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1905 void main_window::refresh_variable_editor (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1906 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1907 m_variable_editor_window->refresh ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1908 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1909
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1910 void main_window::handle_variable_editor_update (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1911 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1912 // Called when the variable editor emits the updated signal. The size
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1913 // of a variable may have changed, so we refresh the workspace in the
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1914 // interpreter. That will eventually cause the workspace view in the
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1915 // GUI to be updated.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1916
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1917 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
1918 ([] (interpreter& interp)
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1919 {
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1920 // INTERPRETER THREAD
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1921
27261
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
1922 tree_evaluator& tw = interp.get_evaluator ();
dccdc3b001a2 eliminate static functions from octave_link class
John W. Eaton <jwe@octave.org>
parents: 27260
diff changeset
1923
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
1924 event_manager& xevmgr = interp.get_event_manager ();
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
1925
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
1926 xevmgr.set_workspace (true, tw.get_symbol_info (), false);
27243
c6807f5cc48b replace some explicit callback functions with lambda expressions
John W. Eaton <jwe@octave.org>
parents: 27220
diff changeset
1927 });
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1928 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1929
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1930 void main_window::closeEvent (QCloseEvent *e)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1931 {
27588
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1932 if (confirm_shutdown ())
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1933 {
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1934 // FIXME: Instead of ignoring the event and posting an
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1935 // interpreter event, should we just accept the event and
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1936 // shutdown and clean up the interprter as part of closing the
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1937 // GUI? Going that route might make it easier to close the GUI
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1938 // without having to stop the interpreter, for example, if the
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1939 // GUI is started from the interpreter command line.
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1940
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1941 e->ignore ();
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1942
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1943 emit interpreter_event
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1944 ([] (interpreter& interp)
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1945 {
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1946 // INTERPRETER THREAD
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1947
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1948 interp.quit (0, false, false);
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1949 });
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1950 }
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1951 else
f0e3f3e28a8e move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
1952 e->ignore ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1953 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1954
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1955 void main_window::construct_central_widget (void)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1956 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1957 // Create and set the central widget. QMainWindow takes ownership of
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1958 // the widget (pointer) so there is no need to delete the object upon
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1959 // destroying this main_window.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1960
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1961 QWidget *dummyWidget = new QWidget ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1962 dummyWidget->setObjectName ("CentralDummyWidget");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1963 dummyWidget->resize (10, 10);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1964 dummyWidget->setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Minimum);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1965 dummyWidget->hide ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
1966 setCentralWidget (dummyWidget);
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1967 }
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1968
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1969 // Main subroutine of the constructor
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1970
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1971 void main_window::construct (void)
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1972 {
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1973 setWindowIcon (QIcon (":/actions/icons/logo.png"));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1974
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1975 m_workspace_window->setModel (m_workspace_model);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1976
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1977 connect (m_workspace_model, SIGNAL (model_changed (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1978 m_workspace_window, SLOT (handle_model_changed (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1979
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
1980 interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
1981
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
1982 qt_interpreter_events *qt_link = interp_qobj->qt_link ();
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
1983
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
1984 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1985 SIGNAL (edit_variable_signal (const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1986 const octave_value&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1987 this,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1988 SLOT (edit_variable (const QString&, const octave_value&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1989
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
1990 connect (qt_link, SIGNAL (refresh_variable_editor_signal (void)),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1991 this, SLOT (refresh_variable_editor (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1992
27220
9a4a9fcc186b connect workspace view rename variable signal to main window slot
John W. Eaton <jwe@octave.org>
parents: 27219
diff changeset
1993 connect (m_workspace_window,
9a4a9fcc186b connect workspace view rename variable signal to main window slot
John W. Eaton <jwe@octave.org>
parents: 27219
diff changeset
1994 SIGNAL (rename_variable_signal (const QString&, const QString&)),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1995 this,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1996 SLOT (handle_rename_variable_request (const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1997 const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1998
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
1999 connect (m_variable_editor_window, SIGNAL (updated (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2000 this, SLOT (handle_variable_editor_update (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2001
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2002 construct_menu_bar ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2003
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2004 construct_tool_bar ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2005
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
2006 // Order is important. Deleting gui_settings must be last.
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2007 connect (qApp, SIGNAL (aboutToQuit (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2008 m_command_window, SLOT (save_settings (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2009
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2010 connect (qApp, SIGNAL (aboutToQuit (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2011 m_history_window, SLOT (save_settings (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2012
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2013 connect (qApp, SIGNAL (aboutToQuit (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2014 m_file_browser_window, SLOT (save_settings (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2015
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2016 connect (qApp, SIGNAL (aboutToQuit (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2017 m_doc_browser_window, SLOT (save_settings (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2018
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2019 connect (qApp, SIGNAL (aboutToQuit (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2020 m_workspace_window, SLOT (save_settings (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2021
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2022 connect (qApp, SIGNAL (aboutToQuit (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2023 m_editor_window, SLOT (save_settings (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2024
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2025 connect (qApp, SIGNAL (aboutToQuit (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2026 m_variable_editor_window, SLOT (save_settings (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2027
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2028 connect (qApp, SIGNAL (aboutToQuit (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2029 this, SLOT (prepare_to_exit (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2030
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2031 connect (qApp, SIGNAL (focusChanged (QWidget*, QWidget*)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2032 this, SLOT (focus_changed (QWidget*, QWidget*)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2033
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
2034 connect (this, SIGNAL (settings_changed (const gui_settings *)),
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
2035 this, SLOT (notice_settings (const gui_settings *)));
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2036
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2037 connect (this, SIGNAL (editor_focus_changed (bool)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2038 this, SLOT (disable_menu_shortcuts (bool)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2039
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2040 connect (this, SIGNAL (editor_focus_changed (bool)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2041 m_editor_window, SLOT (enable_menu_shortcuts (bool)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2042
26873
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2043 connect (this, SIGNAL (step_into_file_signal (void)),
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2044 m_editor_window, SLOT (request_step_into_file (void)));
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2045
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2046 connect (m_editor_window, SIGNAL (editor_tabs_changed_signal (bool)),
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2047 this, SLOT (editor_tabs_changed (bool)));
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2048
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2049 connect (m_editor_window,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2050 SIGNAL (request_open_file_external (const QString&, int)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2051 m_external_editor,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2052 SLOT (call_custom_editor (const QString&, int)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2053
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2054 connect (m_external_editor,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2055 SIGNAL (request_settings_dialog (const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2056 this, SLOT (process_settings_dialog_request (const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2057
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2058 connect (m_file_browser_window, SIGNAL (load_file_signal (const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2059 this, SLOT (handle_load_workspace_request (const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2060
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2061 connect (m_file_browser_window, SIGNAL (open_any_signal (const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2062 this, SLOT (handle_open_any_request (const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2063
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2064 connect (m_file_browser_window, SIGNAL (find_files_signal (const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2065 this, SLOT (find_files (const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2066
27653
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
2067 // Connections for signals from the interpreter thread where the slot
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
2068 // should be executed by the gui thread
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
2069
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
2070 connect (this, SIGNAL (warning_function_not_found_signal (const QString&)),
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
2071 this, SLOT (warning_function_not_found (const QString&)));
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
2072
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
2073 // Build the window with widgets
3564d3999960 fix message box when trying to open a non-existant function in the editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27648
diff changeset
2074
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2075 setWindowTitle ("Octave");
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2076
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2077 // See Octave bug #53409 and https://bugreports.qt.io/browse/QTBUG-55357
25091
2b8442c890d8 Fix locked GUI panels for Qt 5.6.1 through 5.7.0 series versions (bug #53409)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25060
diff changeset
2078 #if (QT_VERSION < 0x050601) || (QT_VERSION >= 0x050701)
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2079 setDockOptions (QMainWindow::AnimatedDocks
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2080 | QMainWindow::AllowNestedDocks
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2081 | QMainWindow::AllowTabbedDocks);
25091
2b8442c890d8 Fix locked GUI panels for Qt 5.6.1 through 5.7.0 series versions (bug #53409)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25060
diff changeset
2082 #else
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2083 setDockNestingEnabled (true);
25091
2b8442c890d8 Fix locked GUI panels for Qt 5.6.1 through 5.7.0 series versions (bug #53409)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25060
diff changeset
2084 #endif
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2085
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2086 addDockWidget (Qt::RightDockWidgetArea, m_command_window);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2087 addDockWidget (Qt::RightDockWidgetArea, m_doc_browser_window);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2088 tabifyDockWidget (m_command_window, m_doc_browser_window);
24019
fc4ba8b1ff87 style fixes for GUI main window
John W. Eaton <jwe@octave.org>
parents: 24016
diff changeset
2089
fc4ba8b1ff87 style fixes for GUI main window
John W. Eaton <jwe@octave.org>
parents: 24016
diff changeset
2090 #if defined (HAVE_QSCINTILLA)
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2091 addDockWidget (Qt::RightDockWidgetArea, m_editor_window);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2092 tabifyDockWidget (m_command_window, m_editor_window);
24019
fc4ba8b1ff87 style fixes for GUI main window
John W. Eaton <jwe@octave.org>
parents: 24016
diff changeset
2093 #endif
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2094 addDockWidget (Qt::RightDockWidgetArea, m_variable_editor_window);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2095 tabifyDockWidget (m_command_window, m_variable_editor_window);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2096
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2097 addDockWidget (Qt::LeftDockWidgetArea, m_file_browser_window);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2098 addDockWidget (Qt::LeftDockWidgetArea, m_workspace_window);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2099 addDockWidget (Qt::LeftDockWidgetArea, m_history_window);
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2100
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2101 int win_x = QApplication::desktop ()->width ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2102 int win_y = QApplication::desktop ()->height ();
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2103
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2104 if (win_x > 960)
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2105 win_x = 960;
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2106
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2107 if (win_y > 720)
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2108 win_y = 720;
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2109
27702
96d87e7093d0 consider frame decoration when setting main window geometry
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27676
diff changeset
2110 setGeometry (0, 0, win_x, win_y); // excluding frame geometry
96d87e7093d0 consider frame decoration when setting main window geometry
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27676
diff changeset
2111 move (0, 0); // including frame geometry
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2112
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2113 setStatusBar (m_status_bar);
24019
fc4ba8b1ff87 style fixes for GUI main window
John W. Eaton <jwe@octave.org>
parents: 24016
diff changeset
2114
fc4ba8b1ff87 style fixes for GUI main window
John W. Eaton <jwe@octave.org>
parents: 24016
diff changeset
2115 #if defined (HAVE_QSCINTILLA)
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2116 connect (this,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2117 SIGNAL (insert_debugger_pointer_signal (const QString&, int)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2118 m_editor_window,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2119 SLOT (handle_insert_debugger_pointer_request (const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2120 int)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2121
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2122 connect (this,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2123 SIGNAL (delete_debugger_pointer_signal (const QString&, int)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2124 m_editor_window,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2125 SLOT (handle_delete_debugger_pointer_request (const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2126 int)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2127
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2128 connect (this,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2129 SIGNAL (update_breakpoint_marker_signal (bool, const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2130 int, const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2131 m_editor_window,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2132 SLOT (handle_update_breakpoint_marker_request (bool,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2133 const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2134 int,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2135 const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2136
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2137 // Signals for removing/renaming files/dirs in the file browser
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2138 connect (m_file_browser_window,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2139 SIGNAL (file_remove_signal (const QString&, const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2140 m_editor_window,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2141 SLOT (handle_file_remove (const QString&, const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2142
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2143 connect (m_file_browser_window, SIGNAL (file_renamed_signal (bool)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2144 m_editor_window, SLOT (handle_file_renamed (bool)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2145
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
2146 // Signals for removing/renaming files/dirs in the terminal window
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2147 connect (qt_link, SIGNAL (file_renamed_signal (bool)),
27039
32d9f57d7245 fix missing unlock of mutex when gui editor is not present (bug #56097)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2148 m_editor_window, SLOT (handle_file_renamed (bool)));
32d9f57d7245 fix missing unlock of mutex when gui editor is not present (bug #56097)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2149 #endif
32d9f57d7245 fix missing unlock of mutex when gui editor is not present (bug #56097)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2150
32d9f57d7245 fix missing unlock of mutex when gui editor is not present (bug #56097)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2151 // Signals for removing/renaming files/dirs in the temrinal window
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2152 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2153 SIGNAL (file_remove_signal (const QString&, const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2154 this, SLOT (file_remove_proxy (const QString&, const QString&)));
24019
fc4ba8b1ff87 style fixes for GUI main window
John W. Eaton <jwe@octave.org>
parents: 24016
diff changeset
2155
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
2156 connect (this, SIGNAL (interpreter_event (const fcn_callback&)),
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
2157 &m_octave_qobj, SLOT (interpreter_event (const fcn_callback&)));
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
2158
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
2159 connect (this, SIGNAL (interpreter_event (const meth_callback&)),
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
2160 &m_octave_qobj, SLOT (interpreter_event (const meth_callback&)));
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2161
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2162 configure_shortcuts ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2163 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2164
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2165 void main_window::construct_octave_qt_link (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2166 {
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2167 interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2168
27263
99aa1bcb8848 rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 27261
diff changeset
2169 qt_interpreter_events *qt_link = interp_qobj->qt_link ();
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2170
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
2171 connect (qt_link, SIGNAL (settings_changed (const gui_settings *)),
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27602
diff changeset
2172 this, SLOT (notice_settings (const gui_settings *)));
27601
7a748f7545c9 improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents: 27588
diff changeset
2173
27602
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27601
diff changeset
2174 connect (qt_link, SIGNAL (apply_new_settings (void)),
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27601
diff changeset
2175 this, SLOT (request_reload_settings (void)));
ba317c535adb define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents: 27601
diff changeset
2176
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2177 connect (qt_link,
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 26115
diff changeset
2178 SIGNAL (set_workspace_signal (bool, bool, const symbol_info_list&)),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2179 m_workspace_model,
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 26115
diff changeset
2180 SLOT (set_workspace (bool, bool, const symbol_info_list&)));
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2181
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2182 connect (qt_link, SIGNAL (clear_workspace_signal (void)),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2183 m_workspace_model, SLOT (clear_workspace (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2184
27409
a0d49e55acae rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents: 27408
diff changeset
2185 connect (qt_link, SIGNAL (directory_changed_signal (QString)),
a0d49e55acae rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents: 27408
diff changeset
2186 this, SLOT (update_octave_directory (QString)));
a0d49e55acae rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents: 27408
diff changeset
2187
a0d49e55acae rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents: 27408
diff changeset
2188 connect (qt_link, SIGNAL (directory_changed_signal (QString)),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2189 m_file_browser_window, SLOT (update_octave_directory (QString)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2190
27409
a0d49e55acae rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents: 27408
diff changeset
2191 connect (qt_link, SIGNAL (directory_changed_signal (QString)),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2192 m_editor_window, SLOT (update_octave_directory (QString)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2193
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2194 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2195 SIGNAL (execute_command_in_terminal_signal (QString)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2196 this, SLOT (execute_command_in_terminal (QString)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2197
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2198 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2199 SIGNAL (set_history_signal (const QStringList&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2200 m_history_window, SLOT (set_history (const QStringList&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2201
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2202 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2203 SIGNAL (append_history_signal (const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2204 m_history_window, SLOT (append_history (const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2205
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2206 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2207 SIGNAL (clear_history_signal (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2208 m_history_window, SLOT (clear_history (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2209
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2210 connect (qt_link, SIGNAL (enter_debugger_signal (void)),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2211 this, SLOT (handle_enter_debugger (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2212
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2213 connect (qt_link, SIGNAL (exit_debugger_signal (void)),
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2214 this, SLOT (handle_exit_debugger (void)));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2215
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2216 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2217 SIGNAL (show_preferences_signal (void)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2218 this, SLOT (process_settings_dialog_request (void)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2219
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2220 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2221 SIGNAL (edit_file_signal (const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2222 m_active_editor,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2223 SLOT (handle_edit_file_request (const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2224
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2225 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2226 SIGNAL (insert_debugger_pointer_signal (const QString&, int)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2227 this,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2228 SLOT (handle_insert_debugger_pointer_request (const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2229 int)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2230
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2231 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2232 SIGNAL (delete_debugger_pointer_signal (const QString&, int)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2233 this,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2234 SLOT (handle_delete_debugger_pointer_request (const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2235 int)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2236
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2237 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2238 SIGNAL (update_breakpoint_marker_signal (bool, const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2239 int, const QString&)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2240 this,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2241 SLOT (handle_update_breakpoint_marker_request (bool, const QString&,
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2242 int, const QString&)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2243
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2244 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2245 SIGNAL (show_doc_signal (const QString &)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2246 this, SLOT (handle_show_doc (const QString &)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2247
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2248 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2249 SIGNAL (register_doc_signal (const QString &)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2250 this, SLOT (handle_register_doc (const QString &)));
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2251
27218
a044202208af more refactoring of GUI classes that manage the interpreter
John W. Eaton <jwe@octave.org>
parents: 27209
diff changeset
2252 connect (qt_link,
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2253 SIGNAL (unregister_doc_signal (const QString &)),
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2254 this, SLOT (handle_unregister_doc (const QString &)));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2255 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2256
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2257 QAction* main_window::add_action (QMenu *menu, const QIcon& icon,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2258 const QString& text, const char *member,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2259 const QWidget *receiver)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2260 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2261 QAction *a;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2262
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2263 if (receiver)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2264 a = menu->addAction (icon, text, receiver, member);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2265 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2266 a = menu->addAction (icon, text, this, member);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2267
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2268 addAction (a); // important for shortcut context
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2269 a->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2270 return a;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2271 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2272
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2273 QMenu* main_window::m_add_menu (QMenuBar *p, QString name)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2274 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2275 QMenu *menu = p->addMenu (name);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2276
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2277 QString base_name = name; // get a copy
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2278 // replace intended '&' ("&&") by a temp. string
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2279 base_name.replace ("&&", "___octave_amp_replacement___");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2280 // remove single '&' (shortcut)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2281 base_name.remove ("&");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2282 // restore intended '&'
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2283 base_name.replace ("___octave_amp_replacement___", "&&");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2284
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2285 // remember names with and without shortcut
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2286 m_hash_menu_text[menu] = QStringList () << name << base_name;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2287
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2288 return menu;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2289 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2290
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2291 void main_window::construct_menu_bar (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2292 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2293 QMenuBar *menu_bar = menuBar ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2294
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2295 construct_file_menu (menu_bar);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2296
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2297 construct_edit_menu (menu_bar);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2298
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2299 construct_debug_menu (menu_bar);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2300
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2301 construct_window_menu (menu_bar);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2302
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2303 construct_help_menu (menu_bar);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2304
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2305 construct_news_menu (menu_bar);
20986
00835323fb44 prevent shortcut ambiguity between main and editor window
Torsten <ttl@justmail.de>
parents: 20955
diff changeset
2306
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
2307 #if defined (HAVE_QSCINTILLA)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2308 // call the editor to add actions which should also be available in the
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2309 // editor's menu and tool bar
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2310 QList<QAction*> shared_actions;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2311 shared_actions << m_new_script_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2312 << m_new_function_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2313 << m_open_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2314 << m_find_files_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2315 << m_undo_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2316 << m_copy_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2317 << m_paste_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2318 <<m_select_all_action;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2319 m_editor_window->insert_global_actions (shared_actions);
20986
00835323fb44 prevent shortcut ambiguity between main and editor window
Torsten <ttl@justmail.de>
parents: 20955
diff changeset
2320 #endif
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2321 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2322
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2323 void main_window::construct_file_menu (QMenuBar *p)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2324 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2325 QMenu *file_menu = m_add_menu (p, tr ("&File"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2326
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2327 construct_new_menu (file_menu);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2328
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2329 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2330 m_open_action
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2331 = file_menu->addAction (rmgr.icon ("document-open"), tr ("Open..."));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2332 m_open_action->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2333 m_open_action->setToolTip (tr ("Open an existing file in editor"));
16970
78116b88dbf5 enable readline key bindings in terminal widget of gui (bug #36986)
Torsten <ttl@justmail.de>
parents: 16956
diff changeset
2334
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
2335 #if defined (HAVE_QSCINTILLA)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2336 file_menu->addMenu (m_editor_window->get_mru_menu ());
16454
246d25c8761b split main_window::construct for clarity
John W. Eaton <jwe@octave.org>
parents: 16453
diff changeset
2337 #endif
246d25c8761b split main_window::construct for clarity
John W. Eaton <jwe@octave.org>
parents: 16453
diff changeset
2338
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2339 file_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2340
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2341 m_load_workspace_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2342 = file_menu->addAction (tr ("Load Workspace..."));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2343
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2344 m_save_workspace_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2345 = file_menu->addAction (tr ("Save Workspace As..."));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2346
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2347 file_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2348
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2349 m_exit_action = file_menu->addAction (tr ("Exit"));
27118
99adef2c6e10 Enable "Quit" menu item on Mac application menu (bug #56155)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 27102
diff changeset
2350 m_exit_action->setMenuRole (QAction::QuitRole);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2351 m_exit_action->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2352
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2353 connect (m_open_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2354 this, SLOT (request_open_file (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2355
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2356 connect (m_load_workspace_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2357 this, SLOT (handle_load_workspace_request (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2358
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2359 connect (m_save_workspace_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2360 this, SLOT (handle_save_workspace_request (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2361
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2362 connect (m_exit_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2363 this, SLOT (close (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2364 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2365
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2366 void main_window::construct_new_menu (QMenu *p)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2367 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2368 QMenu *new_menu = p->addMenu (tr ("New"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2369
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2370 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2371 m_new_script_action
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2372 = new_menu->addAction (rmgr.icon ("document-new"), tr ("New Script"));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2373 m_new_script_action->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2374
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2375 m_new_function_action = new_menu->addAction (tr ("New Function..."));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2376 m_new_function_action->setEnabled (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2377 m_new_function_action->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2378
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2379 m_new_figure_action = new_menu->addAction (tr ("New Figure"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2380 m_new_figure_action->setEnabled (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2381
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2382 connect (m_new_script_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2383 this, SLOT (request_new_script (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2384
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2385 connect (m_new_function_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2386 this, SLOT (request_new_function (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2387
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2388 connect (this, SIGNAL (new_file_signal (const QString&)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2389 m_active_editor, SLOT (request_new_file (const QString&)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2390
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2391 connect (this, SIGNAL (open_file_signal (const QString&)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2392 m_active_editor, SLOT (request_open_file (const QString&)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2393
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2394 connect (this,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2395 SIGNAL (open_file_signal (const QString&, const QString&, int)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2396 m_active_editor,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2397 SLOT (request_open_file (const QString&, const QString&, int)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2398
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2399 connect (m_new_figure_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2400 this, SLOT (handle_new_figure_request (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2401 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2402
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2403 void main_window::construct_edit_menu (QMenuBar *p)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2404 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2405 QMenu *edit_menu = m_add_menu (p, tr ("&Edit"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2406
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2407 QKeySequence ctrl_shift = Qt::ControlModifier + Qt::ShiftModifier;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2408
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2409 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2410 m_undo_action
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2411 = edit_menu->addAction (rmgr.icon ("edit-undo"), tr ("Undo"));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2412 m_undo_action->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2413
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2414 edit_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2415
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2416 m_copy_action
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2417 = edit_menu->addAction (rmgr.icon ("edit-copy"), tr ("Copy"), this,
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2418 SLOT (copyClipboard (void)));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2419 m_copy_action->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2420
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2421 m_paste_action
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2422 = edit_menu->addAction (rmgr.icon ("edit-paste"), tr ("Paste"), this,
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2423 SLOT (pasteClipboard (void)));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2424 m_paste_action->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2425
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2426 m_select_all_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2427 = edit_menu->addAction (tr ("Select All"), this, SLOT (selectAll (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2428 m_select_all_action->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2429
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2430 m_clear_clipboard_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2431 = edit_menu->addAction (tr ("Clear Clipboard"), this,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2432 SLOT (clear_clipboard (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2433
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2434 edit_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2435
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2436 m_find_files_action
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2437 = edit_menu->addAction (rmgr.icon ("edit-find"), tr ("Find Files..."));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2438
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2439 edit_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2440
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2441 m_clear_command_window_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2442 = edit_menu->addAction (tr ("Clear Command Window"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2443
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2444 m_clear_command_history_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2445 = edit_menu->addAction (tr ("Clear Command History"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2446
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2447 m_clear_workspace_action
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2448 = edit_menu->addAction (tr ("Clear Workspace"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2449
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2450 edit_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2451
27298
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
2452 m_set_path_action
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
2453 = edit_menu->addAction (tr ("Set Path"));
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
2454
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2455 m_preferences_action
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2456 = edit_menu->addAction (rmgr.icon ("preferences-system"),
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2457 tr ("Preferences..."));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2458
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2459 connect (m_find_files_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2460 this, SLOT (find_files (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2461
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2462 connect (m_clear_command_window_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2463 this, SLOT (handle_clear_command_window_request (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2464
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2465 connect (m_clear_command_history_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2466 this, SLOT (handle_clear_history_request (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2467
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2468 connect (m_clear_workspace_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2469 this, SLOT (handle_clear_workspace_request (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2470
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2471 connect (m_clipboard, SIGNAL (dataChanged (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2472 this, SLOT (clipboard_has_changed (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2473 clipboard_has_changed ();
24625
be37df6e1fb4 always enable paste action in windows (bug #52361)
Torsten <mttl@mailbox.org>
parents: 24534
diff changeset
2474 #if defined (Q_OS_WIN32)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2475 // Always enable paste action (unreliable clipboard signals in windows)
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
2476 // FIXME: This has to be removed, when the clipboard signals in windows
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2477 // are working again
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2478 m_paste_action->setEnabled (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2479 m_clear_clipboard_action->setEnabled (true);
24625
be37df6e1fb4 always enable paste action in windows (bug #52361)
Torsten <mttl@mailbox.org>
parents: 24534
diff changeset
2480 #endif
20039
3538c2824dd8 GUI: Move preferences to edit menu (Bug #44725)
John Donoghue
parents: 19985
diff changeset
2481
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2482 connect (m_preferences_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2483 this, SLOT (process_settings_dialog_request (void)));
27298
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
2484
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
2485 connect (m_set_path_action, SIGNAL (triggered (void)),
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
2486 this, SLOT (handle_set_path_dialog_request (void)));
1805f8586179 new gui dialog for modifying octaves load path (bug #43549)
JunWang <jstzwj@aliyun.com>
parents: 27287
diff changeset
2487
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2488 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2489
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2490 QAction * main_window::construct_debug_menu_item (const char *icon,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2491 const QString& item,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2492 const char *member)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2493 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2494 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2495 QAction *action = add_action (m_debug_menu, rmgr.icon (QString (icon)),
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2496 item, member);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2497
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2498 action->setEnabled (false);
16454
246d25c8761b split main_window::construct for clarity
John W. Eaton <jwe@octave.org>
parents: 16453
diff changeset
2499
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
2500 #if defined (HAVE_QSCINTILLA)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2501 m_editor_window->debug_menu ()->addAction (action);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2502 m_editor_window->toolbar ()->addAction (action);
16454
246d25c8761b split main_window::construct for clarity
John W. Eaton <jwe@octave.org>
parents: 16453
diff changeset
2503 #endif
246d25c8761b split main_window::construct for clarity
John W. Eaton <jwe@octave.org>
parents: 16453
diff changeset
2504
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2505 return action;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2506 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2507
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2508 void main_window::construct_debug_menu (QMenuBar *p)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2509 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2510 m_debug_menu = m_add_menu (p, tr ("De&bug"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2511
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2512 m_debug_step_over
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2513 = construct_debug_menu_item ("db-step", tr ("Step"),
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2514 SLOT (debug_step_over (void)));
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2515
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2516 m_debug_step_into
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2517 = construct_debug_menu_item ("db-step-in", tr ("Step In"),
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2518 SLOT (debug_step_into (void)));
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2519
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2520 m_debug_step_out
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2521 = construct_debug_menu_item ("db-step-out", tr ("Step Out"),
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2522 SLOT (debug_step_out (void)));
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2523
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2524 m_debug_continue
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2525 = construct_debug_menu_item ("db-cont", tr ("Continue"),
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2526 SLOT (debug_continue (void)));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2527
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2528 m_debug_menu->addSeparator ();
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21670
diff changeset
2529 #if defined (HAVE_QSCINTILLA)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2530 m_editor_window->debug_menu ()->addSeparator ();
16454
246d25c8761b split main_window::construct for clarity
John W. Eaton <jwe@octave.org>
parents: 16453
diff changeset
2531 #endif
246d25c8761b split main_window::construct for clarity
John W. Eaton <jwe@octave.org>
parents: 16453
diff changeset
2532
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2533 m_debug_quit
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2534 = construct_debug_menu_item ("db-stop", tr ("Quit Debug Mode"),
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2535 SLOT (debug_quit (void)));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2536 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2537
26873
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2538 void main_window::editor_tabs_changed (bool have_tabs)
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2539 {
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27860
diff changeset
2540 // Set state of actions which depend on the existence of editor tabs
26873
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2541 m_editor_has_tabs = have_tabs;
9ec36417c262 debug step starts script if not already running in debug mode (bug #44728)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26643
diff changeset
2542 m_debug_step_over->setEnabled (have_tabs);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2543 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2544
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2545 QAction * main_window::construct_window_menu_item (QMenu *p,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2546 const QString& item,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2547 bool checkable,
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2548 QWidget *widget)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2549 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2550 QAction *action = p->addAction (QIcon (), item);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2551
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2552 addAction (action); // important for shortcut context
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2553 action->setCheckable (checkable);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2554 action->setShortcutContext (Qt::ApplicationShortcut);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2555
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2556 if (widget) // might be zero for m_editor_window
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2557 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2558 if (checkable)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2559 {
27956
2310164737b3 fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents: 27041
diff changeset
2560 // action for visibility of dock widget
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2561 connect (action, SIGNAL (toggled (bool)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2562 widget, SLOT (setVisible (bool)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2563
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2564 connect (widget, SIGNAL (active_changed (bool)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2565 action, SLOT (setChecked (bool)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2566 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2567 else
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2568 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2569 // action for focus of dock widget
27281
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27277
diff changeset
2570 connect (action, SIGNAL (triggered (void)), widget, SLOT (activate (void)));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2571 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2572 }
27258
922c47ff5218 disable editor actions in window menu when editor is not available (bug #56114)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
2573 else
922c47ff5218 disable editor actions in window menu when editor is not available (bug #56114)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
2574 {
922c47ff5218 disable editor actions in window menu when editor is not available (bug #56114)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
2575 action->setEnabled (false);
922c47ff5218 disable editor actions in window menu when editor is not available (bug #56114)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
2576 }
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2577
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2578 return action;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2579 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2580
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2581 void main_window::construct_window_menu (QMenuBar *p)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2582 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2583 QMenu *window_menu = m_add_menu (p, tr ("&Window"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2584
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2585 m_show_command_window_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2586 (window_menu, tr ("Show Command Window"), true, m_command_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2587
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2588 m_show_history_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2589 (window_menu, tr ("Show Command History"), true, m_history_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2590
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2591 m_show_file_browser_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2592 (window_menu, tr ("Show File Browser"), true, m_file_browser_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2593
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2594 m_show_workspace_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2595 (window_menu, tr ("Show Workspace"), true, m_workspace_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2596
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2597 m_show_editor_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2598 (window_menu, tr ("Show Editor"), true, m_editor_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2599
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2600 m_show_documentation_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2601 (window_menu, tr ("Show Documentation"), true, m_doc_browser_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2602
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2603 m_show_variable_editor_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2604 (window_menu, tr ("Show Variable Editor"), true, m_variable_editor_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2605
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2606 window_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2607
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2608 m_command_window_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2609 (window_menu, tr ("Command Window"), false, m_command_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2610
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2611 m_history_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2612 (window_menu, tr ("Command History"), false, m_history_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2613
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2614 m_file_browser_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2615 (window_menu, tr ("File Browser"), false, m_file_browser_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2616
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2617 m_workspace_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2618 (window_menu, tr ("Workspace"), false, m_workspace_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2619
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2620 m_editor_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2621 (window_menu, tr ("Editor"), false, m_editor_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2622
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2623 m_documentation_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2624 (window_menu, tr ("Documentation"), false, m_doc_browser_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2625
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2626 m_variable_editor_action = construct_window_menu_item
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2627 (window_menu, tr ("Variable Editor"), false, m_variable_editor_window);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2628
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2629 window_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2630
27860
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
2631 m_previous_dock_action = add_action (window_menu, QIcon (),
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
2632 tr ("Previous Widget"), SLOT (go_to_previous_widget (void)));
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
2633
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
2634 window_menu->addSeparator ();
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
2635
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2636 m_reset_windows_action = add_action (window_menu, QIcon (),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2637 tr ("Reset Default Window Layout"), SLOT (reset_windows (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2638 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2639
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2640 void main_window::construct_help_menu (QMenuBar *p)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2641 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2642 QMenu *help_menu = m_add_menu (p, tr ("&Help"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2643
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2644 construct_documentation_menu (help_menu);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2645
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2646 help_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2647
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2648 m_report_bug_action = add_action (help_menu, QIcon (),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2649 tr ("Report Bug"), SLOT (open_bug_tracker_page ()));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2650
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2651 m_octave_packages_action = add_action (help_menu, QIcon (),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2652 tr ("Octave Packages"), SLOT (open_octave_packages_page ()));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2653
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2654 m_contribute_action = add_action (help_menu, QIcon (),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2655 tr ("Contribute"), SLOT (open_contribute_page ()));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2656
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2657 m_developer_action = add_action (help_menu, QIcon (),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2658 tr ("Donate to Octave"), SLOT (open_donate_page ()));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2659
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2660 help_menu->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2661
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2662 m_about_octave_action = add_action (help_menu, QIcon (),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2663 tr ("About Octave"), SLOT (show_about_octave ()));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2664 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2665
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2666 void main_window::construct_documentation_menu (QMenu *p)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2667 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2668 QMenu *doc_menu = p->addMenu (tr ("Documentation"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2669
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2670 m_ondisk_doc_action = add_action (doc_menu, QIcon (),
27281
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27277
diff changeset
2671 tr ("On Disk"), SLOT (activate ()), m_doc_browser_window);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2672
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2673 m_online_doc_action = add_action (doc_menu, QIcon (),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2674 tr ("Online"), SLOT (open_online_documentation_page ()));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2675 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2676
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2677 void main_window::construct_news_menu (QMenuBar *p)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2678 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2679 QMenu *news_menu = m_add_menu (p, tr ("&News"));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2680
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2681 m_release_notes_action = add_action (news_menu, QIcon (),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2682 tr ("Release Notes"), SLOT (display_release_notes ()));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2683
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2684 m_current_news_action = add_action (news_menu, QIcon (),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2685 tr ("Community News"), SLOT (load_and_display_community_news ()));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2686 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2687
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2688 void main_window::construct_tool_bar (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2689 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2690 m_main_tool_bar = addToolBar (tr ("Toolbar"));
27457
70d9746e9011 smaller toolbars in editor and main window (bug #53902)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
2691 m_main_tool_bar->setStyleSheet (m_main_tool_bar->styleSheet ()
27560
3fcc650de22f split gui-preferences.h into one file per widget
John W. Eaton <jwe@octave.org>
parents: 27556
diff changeset
2692 + global_toolbar_style);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2693
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2694 m_main_tool_bar->setObjectName ("MainToolBar");
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2695 m_main_tool_bar->addAction (m_new_script_action);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2696 m_main_tool_bar->addAction (m_open_action);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2697
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2698 m_main_tool_bar->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2699
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2700 m_main_tool_bar->addAction (m_copy_action);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2701 m_main_tool_bar->addAction (m_paste_action);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2702 m_main_tool_bar->addAction (m_undo_action);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2703
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2704 m_main_tool_bar->addSeparator ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2705
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2706 m_current_directory_combo_box = new QComboBox (this);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2707 QFontMetrics fm = m_current_directory_combo_box->fontMetrics ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2708 m_current_directory_combo_box->setFixedWidth (48*fm.averageCharWidth ());
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2709 m_current_directory_combo_box->setEditable (true);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2710 m_current_directory_combo_box->setInsertPolicy (QComboBox::NoInsert);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2711 m_current_directory_combo_box->setToolTip (tr ("Enter directory name"));
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2712 m_current_directory_combo_box->setMaxVisibleItems (current_directory_max_visible);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2713 m_current_directory_combo_box->setMaxCount (current_directory_max_count);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2714 QSizePolicy sizePol (QSizePolicy::Preferred, QSizePolicy::Preferred);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2715 m_current_directory_combo_box->setSizePolicy (sizePol);
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2716
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2717 // addWidget takes ownership of the objects so there is no
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2718 // need to delete these upon destroying this main_window.
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2719 m_main_tool_bar->addWidget (new QLabel (tr ("Current Directory: ")));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2720 m_main_tool_bar->addWidget (m_current_directory_combo_box);
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2721 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2722 QAction *current_dir_up
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2723 = m_main_tool_bar->addAction (rmgr.icon ("go-up"),
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2724 tr ("One directory up"));
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2725 QAction *current_dir_search
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2726 = m_main_tool_bar->addAction (rmgr.icon ("folder"),
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27271
diff changeset
2727 tr ("Browse directories"));
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2728
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2729 connect (m_current_directory_combo_box, SIGNAL (activated (QString)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2730 this, SLOT (set_current_working_directory (QString)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2731
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2732 connect (m_current_directory_combo_box->lineEdit (), SIGNAL (returnPressed (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2733 this, SLOT (accept_directory_line_edit (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2734
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2735 connect (current_dir_search, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2736 this, SLOT (browse_for_directory (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2737
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2738 connect (current_dir_up, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2739 this, SLOT (change_directory_up (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2740
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2741 connect (m_undo_action, SIGNAL (triggered (void)),
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2742 this, SLOT (handle_undo_request (void)));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2743 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2744
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27478
diff changeset
2745 void main_window::focus_console_after_command (void)
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2746 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2747 resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
2748 gui_settings *settings = rmgr.get_settings ();
27849
28d7ec92bae6 replace prefs literals by symbolic constant in main window
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27818
diff changeset
2749 if (settings->value (cs_focus_cmd).toBool ())
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27478
diff changeset
2750 focus_command_window ();
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2751 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2752
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2753 void main_window::configure_shortcuts (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2754 {
27630
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
2755 shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
2756
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2757 // file menu
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2758 scmgr.set_shortcut (m_open_action, sc_main_file_open_file);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2759 scmgr.set_shortcut (m_new_script_action, sc_main_file_new_file);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2760 scmgr.set_shortcut (m_new_function_action, sc_main_file_new_function);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2761 scmgr.set_shortcut (m_new_function_action, sc_main_file_new_figure);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2762 scmgr.set_shortcut (m_load_workspace_action, sc_main_file_load_workspace);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2763 scmgr.set_shortcut (m_save_workspace_action, sc_main_file_save_workspace);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2764 scmgr.set_shortcut (m_exit_action, sc_main_file_exit);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2765
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2766 // edit menu
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2767 scmgr.set_shortcut (m_copy_action, sc_main_edit_copy);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2768 scmgr.set_shortcut (m_paste_action, sc_main_edit_paste);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2769 scmgr.set_shortcut (m_undo_action, sc_main_edit_undo);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2770 scmgr.set_shortcut (m_select_all_action, sc_main_edit_select_all);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2771 scmgr.set_shortcut (m_clear_clipboard_action, sc_main_edit_clear_clipboard);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2772 scmgr.set_shortcut (m_find_files_action, sc_main_edit_find_in_files);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2773 scmgr.set_shortcut (m_clear_command_history_action, sc_main_edit_clear_history);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2774 scmgr.set_shortcut (m_clear_command_window_action, sc_main_edit_clear_command_window);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2775 scmgr.set_shortcut (m_clear_workspace_action, sc_main_edit_clear_workspace);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2776 scmgr.set_shortcut (m_set_path_action, sc_main_edit_set_path);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2777 scmgr.set_shortcut (m_preferences_action, sc_main_edit_preferences);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2778
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2779 // debug menu
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2780 scmgr.set_shortcut (m_debug_step_over, sc_main_debug_step_over);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2781 scmgr.set_shortcut (m_debug_step_into, sc_main_debug_step_into);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2782 scmgr.set_shortcut (m_debug_step_out, sc_main_debug_step_out);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2783 scmgr.set_shortcut (m_debug_continue, sc_main_debug_continue);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2784 scmgr.set_shortcut (m_debug_quit, sc_main_debug_quit);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2785
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2786 // window menu
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2787 scmgr.set_shortcut (m_show_command_window_action, sc_main_window_show_command);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2788 scmgr.set_shortcut (m_show_history_action, sc_main_window_show_history);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2789 scmgr.set_shortcut (m_show_workspace_action, sc_main_window_show_workspace);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2790 scmgr.set_shortcut (m_show_file_browser_action, sc_main_window_show_file_browser);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2791 scmgr.set_shortcut (m_show_editor_action, sc_main_window_show_editor);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2792 scmgr.set_shortcut (m_show_documentation_action, sc_main_window_show_doc);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2793 scmgr.set_shortcut (m_show_variable_editor_action, sc_main_window_show_variable_editor);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2794 scmgr.set_shortcut (m_command_window_action, sc_main_window_command);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2795 scmgr.set_shortcut (m_history_action, sc_main_window_history);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2796 scmgr.set_shortcut (m_workspace_action, sc_main_window_workspace);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2797 scmgr.set_shortcut (m_file_browser_action, sc_main_window_file_browser);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2798 scmgr.set_shortcut (m_editor_action, sc_main_window_editor);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2799 scmgr.set_shortcut (m_documentation_action, sc_main_window_doc);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2800 scmgr.set_shortcut (m_variable_editor_action, sc_main_window_variable_editor);
27860
cbd4d97100b3 add action and shortcut for switching to previews widget (bug #57447)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27849
diff changeset
2801 scmgr.set_shortcut (m_previous_dock_action, sc_main_window_previous_dock);
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2802 scmgr.set_shortcut (m_reset_windows_action, sc_main_window_reset);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2803
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2804 // help menu
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2805 scmgr.set_shortcut (m_ondisk_doc_action, sc_main_help_ondisk_doc);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2806 scmgr.set_shortcut (m_online_doc_action, sc_main_help_online_doc);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2807 scmgr.set_shortcut (m_report_bug_action, sc_main_help_report_bug);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2808 scmgr.set_shortcut (m_octave_packages_action, sc_main_help_packages);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2809 scmgr.set_shortcut (m_contribute_action, sc_main_help_contribute);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2810 scmgr.set_shortcut (m_developer_action, sc_main_help_developer);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2811 scmgr.set_shortcut (m_about_octave_action, sc_main_help_about);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2812
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2813 // news menu
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2814 scmgr.set_shortcut (m_release_notes_action, sc_main_news_release_notes);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
2815 scmgr.set_shortcut (m_current_news_action, sc_main_news_community_news);
24715
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2816 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2817
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2818 QList<octave_dock_widget *> main_window::dock_widget_list (void)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2819 {
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2820 QList<octave_dock_widget *> list = QList<octave_dock_widget *> ();
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2821 list.append (static_cast<octave_dock_widget *> (m_command_window));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2822 list.append (static_cast<octave_dock_widget *> (m_history_window));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2823 list.append (static_cast<octave_dock_widget *> (m_file_browser_window));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2824 list.append (static_cast<octave_dock_widget *> (m_doc_browser_window));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2825 #if defined (HAVE_QSCINTILLA)
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2826 list.append (static_cast<octave_dock_widget *> (m_editor_window));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2827 #endif
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2828 list.append (static_cast<octave_dock_widget *> (m_workspace_window));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2829 list.append (static_cast<octave_dock_widget *> (m_variable_editor_window));
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2830 return list;
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2831 }
88bb3f086d9a move GUI main_window and related classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
2832
27270
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
2833 void main_window::update_default_encoding (const QString& default_encoding)
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2834 {
27270
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
2835 m_default_encoding = default_encoding;
27271
a4416cd6bb4f Append name of actual encoding used if "SYSTEM" is selected.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27270
diff changeset
2836 std::string mfile_encoding = m_default_encoding.toStdString ();
a4416cd6bb4f Append name of actual encoding used if "SYSTEM" is selected.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27270
diff changeset
2837 if (m_default_encoding.startsWith ("SYSTEM", Qt::CaseInsensitive))
a4416cd6bb4f Append name of actual encoding used if "SYSTEM" is selected.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27270
diff changeset
2838 mfile_encoding = "SYSTEM";
27270
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
2839
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
2840 emit interpreter_event
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
2841 ([mfile_encoding] (interpreter& interp)
27270
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
2842 {
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
2843 // INTERPRETER THREAD
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
2844
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27298
diff changeset
2845 F__mfile_encoding__ (interp, ovl (mfile_encoding));
27270
47f42ad90b0b Restore mfile_encoding on startup from GUI settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27267
diff changeset
2846 });
25944
ceb508ea92ee refactor GUI main_window class
John W. Eaton <jwe@octave.org>
parents: 25940
diff changeset
2847 }
16539
8ea8df0747e9 make undo button and menu item work for command window
John W. Eaton <jwe@octave.org>
parents: 16532
diff changeset
2848 }