annotate libgui/src/dw-main-window.cc @ 31649:deb553ac2c54

maint: Merge stable to default.
author John W. Eaton <jwe@octave.org>
date Tue, 06 Dec 2022 15:45:27 -0500
parents 431f80aba37a 29d734430e5f
children 2422fb7f1e6c
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 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29358
diff changeset
3 // Copyright (C) 2013-2022 The Octave Project Developers
27923
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 ////////////////////////////////////////////////////////////////////////
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
25
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
26 /* This is the main window derived from QMainWindow for being used
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
27 as the main window in dock widgets like the variable editor or
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
28 the file editor
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
29 */
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
30
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
31 #if defined (HAVE_CONFIG_H)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
32 # include "config.h"
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
33 #endif
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
34
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27277
diff changeset
35 #include <QDockWidget>
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
36 #include <QMenu>
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
37
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27277
diff changeset
38 #include "dw-main-window.h"
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 30564
diff changeset
39 #include "gui-preferences-sc.h"
31621
0645ea65ca6b handle icons and themes in gui_settings class, not resource_manager
John W. Eaton <jwe@octave.org>
parents: 31619
diff changeset
40 #include "gui-settings.h"
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
41 #include "octave-qobject.h"
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
42 #include "shortcut-manager.h"
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
43
31646
c6d54dd31a7e maint: Use macros to begin/end C++ namespaces.
John W. Eaton <jwe@octave.org>
parents: 30564
diff changeset
44 OCTAVE_BEGIN_NAMESPACE(octave)
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
45
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
46 dw_main_window::dw_main_window (base_qobject& oct_qobj, QWidget *p)
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
47 : QMainWindow (p), m_octave_qobj (oct_qobj)
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
48 {
31621
0645ea65ca6b handle icons and themes in gui_settings class, not resource_manager
John W. Eaton <jwe@octave.org>
parents: 31619
diff changeset
49 gui_settings settings;
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
50
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
51 // Adding the actions for closing the dock widgets
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
52 m_close_action
31621
0645ea65ca6b handle icons and themes in gui_settings class, not resource_manager
John W. Eaton <jwe@octave.org>
parents: 31619
diff changeset
53 = add_action (nullptr, settings.icon ("window-close", false),
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
54 tr ("&Close"), SLOT (request_close ()), this);
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
55
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
56 m_close_all_action
31621
0645ea65ca6b handle icons and themes in gui_settings class, not resource_manager
John W. Eaton <jwe@octave.org>
parents: 31619
diff changeset
57 = add_action (nullptr, settings.icon ("window-close", false),
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
58 tr ("Close &All"), SLOT (request_close_all ()), this);
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
59
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
60 m_close_others_action
31621
0645ea65ca6b handle icons and themes in gui_settings class, not resource_manager
John W. Eaton <jwe@octave.org>
parents: 31619
diff changeset
61 = add_action (nullptr, settings.icon ("window-close", false),
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
62 tr ("Close &Other"), SLOT (request_close_other ()), this);
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
63
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
64 m_switch_left_action
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
65 = add_action (nullptr, QIcon (), tr ("Switch to &Left Widget"),
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
66 SLOT (request_switch_left ()), this);
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
67
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
68 m_switch_right_action
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
69 = add_action (nullptr, QIcon (), tr ("Switch to &Right Widget"),
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
70 SLOT (request_switch_right ()), this);
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
71
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
72 // The list of actions for floating widgets
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
73 m_actions_list << m_close_action;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
74 m_actions_list << m_close_others_action;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
75 m_actions_list << m_close_all_action;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
76 m_actions_list << m_switch_left_action;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
77 m_actions_list << m_switch_right_action;
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
78
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 30564
diff changeset
79 notice_settings ();
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
80 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
81
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
82 // Re-implementing the popup menu of the main window
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
83 QMenu *dw_main_window::createPopupMenu ()
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
84 {
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
85 QList<QAction *> new_actions = QList<QAction *> ();
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
86 new_actions.append (m_close_action);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
87 new_actions.append (m_close_others_action);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
88 new_actions.append (m_close_all_action);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
89
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
90 QMenu *menu = QMainWindow::createPopupMenu ();
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
91 QList<QAction *> actions = menu->actions();
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
92
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
93 if (actions.length () > 0)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
94 {
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
95 QAction *sep = menu->insertSeparator (actions.at (0));
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
96 menu->insertActions (sep, new_actions);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
97 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
98 else
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
99 menu->addActions (new_actions);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
100
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
101 return menu;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
102 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
103
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
104 // Adding an action to the main window
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
105 QAction * dw_main_window::add_action (QMenu *menu, const QIcon& icon,
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
106 const QString& text, const char *member,
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
107 QWidget *receiver)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
108 {
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
109 QAction *a;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
110 QWidget *r = this;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
111
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
112 if (receiver != nullptr)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
113 r = receiver;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
114
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
115 if (menu)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
116 a = menu->addAction (icon, text, r, member);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
117 else
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
118 {
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
119 a = new QAction (icon, text, this);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
120 a->setEnabled (true);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
121 connect (a, SIGNAL (triggered ()), r, member);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
122 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
123
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
124 addAction (a); // important for shortcut context
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
125 a->setShortcutContext (Qt::WidgetWithChildrenShortcut);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
126
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
127 return a;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
128 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
129
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
130 // Update the settings
31619
ad014fc78bd6 use individual local gui_settings objects
John W. Eaton <jwe@octave.org>
parents: 30564
diff changeset
131 void dw_main_window::notice_settings (void)
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
132 {
27630
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
133 shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
134
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27630
diff changeset
135 scmgr.set_shortcut (m_close_action, sc_edit_file_close);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27630
diff changeset
136 scmgr.set_shortcut (m_close_all_action, sc_edit_file_close_all);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27630
diff changeset
137 scmgr.set_shortcut (m_close_others_action, sc_edit_file_close_other);
27630
262cdd0f7619 don't use singleton pattern for shortcut manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27629
diff changeset
138
27818
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27630
diff changeset
139 scmgr.set_shortcut (m_switch_left_action, sc_edit_tabs_switch_left_tab);
fa0582694fda replace literal strings by symbolic constants for shortcut preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27630
diff changeset
140 scmgr.set_shortcut (m_switch_right_action, sc_edit_tabs_switch_right_tab);
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
141 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
142
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
143 // Slots for handling actions
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
144
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
145 // Close current widget
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
146 void dw_main_window::request_close ()
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
147 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
148 for (int i = 0; i < m_dw_list.length (); i++)
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
149 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
150 if (m_dw_list.at (i)->hasFocus ())
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
151 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
152 m_dw_list.at (i)->close ();
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
153 if (i > 0)
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
154 m_dw_list.at (i-1)->setFocus ();
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
155 break;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
156 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
157 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
158 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
159
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
160 // Close other widgets
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
161 void dw_main_window::request_close_other ()
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
162 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
163 for (int i = m_dw_list.length () - 1; i >= 0; i--)
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
164 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
165 if (! m_dw_list.at (i)->hasFocus ())
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
166 m_dw_list.at (i)->close ();
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
167 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
168 }
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
169
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
170 // Close all widgets
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
171 void dw_main_window::request_close_all ()
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
172 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
173 for (int i = m_dw_list.length () - 1; i >= 0; i--)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
174 m_dw_list.at (i)->close ();
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
175 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
176
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
177 // Switch to left widget
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
178 void dw_main_window::request_switch_left ()
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
179 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
180 request_switch (-1);
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
181 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
182
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
183 // Switch to right widget
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
184 void dw_main_window::request_switch_right ()
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
185 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
186 request_switch (1);
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
187 }
31648
29d734430e5f maint: Re-indent code after switch to using namespace macros.
John W. Eaton <jwe@octave.org>
parents: 31646
diff changeset
188
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
189 // Switch to left/right widget
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
190 void dw_main_window::request_switch (int direction)
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
191 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
192 int active = -1, next;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
193
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
194 for (int i = m_dw_list.length () - 1; i >= 0; i--)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
195 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
196 if (m_dw_list.at (i)->hasFocus ())
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
197 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
198 active = i;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
199 break;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
200 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
201 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
202
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
203 if (active == -1)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
204 return;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
205
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
206 if (direction == -1 && active == 0)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
207 next = m_dw_list.length () - 1;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
208 else if (direction == 1 && active == m_dw_list.length () - 1)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
209 next = 0;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
210 else
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
211 next = active + direction;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
212
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
213 m_dw_list.at (next)->raise ();
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
214 m_dw_list.at (next)->activateWindow ();
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
215 m_dw_list.at (next)->setFocus ();
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
216 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
217
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
218 // Reimplemented Event
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
219 bool dw_main_window::event (QEvent *ev)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
220 {
27277
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
221 if (ev->type () == QEvent::ChildAdded
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
222 || ev->type () == QEvent::ChildRemoved)
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
223 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
224 // Adding or Removing a child indicates that a dock widget was
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
225 // created or removed.
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
226 // In all cases, the list of dock widgets has to be updated.
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
227 m_dw_list = findChildren<QDockWidget *>();
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
228 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
229
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
230 if (ev->type () == QEvent::StyleChange)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
231 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
232 // This might indicate un- or re-docking a widget: Make sure
27893
465ac679e976 Fix typos and grammar errors in comments in libgui (patch #9790)
Andrew Janke <andrew@apjanke.net>
parents: 27818
diff changeset
233 // floating widgets get a copy of our actions
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
234 for (int i = m_dw_list.length () - 1; i >= 0; i--)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
235 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
236 // First remove possibly existing actions
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
237 for (int j = m_actions_list.length () - 1; j >0; j--)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
238 m_dw_list.at (i)->removeAction (m_actions_list.at (j));
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
239
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
240 // Then add our actions for floating widgets
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
241 if (m_dw_list.at (i)->isFloating ())
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
242 m_dw_list.at (i)->addActions (m_actions_list);
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
243 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
244 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
245
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
246 return QMainWindow::event (ev);
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
247 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
248
31646
c6d54dd31a7e maint: Use macros to begin/end C++ namespaces.
John W. Eaton <jwe@octave.org>
parents: 30564
diff changeset
249 OCTAVE_END_NAMESPACE(octave)
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
250