annotate libgui/src/dw-main-window.cc @ 27629:8b6e928e0705

in GUI objects, store reference to base_qobject instead of resource_manager We'll need access to both the resource_manager and the shortcut_manager in many objects. The shortcut_manager will be moved to be a member of the base_qobject class instead of being a singleton, so this change will make it easier to access both of these as well as any other core GUI properties in any of the Octave-specific widgets that make up the GUI. Once again, may files are affecte but the changes are straightforward: store a reference to the base_qobject object and access the resource_manager object from that instead of storing a reference to the resource_manager directly.
author John W. Eaton <jwe@octave.org>
date Mon, 04 Nov 2019 13:34:44 -0500
parents 45bb5bbaf291
children 262cdd0f7619
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
1 /*
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
2
26376
00f796120a6d maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents: 25411
diff changeset
3 Copyright (C) 2013-2019 Torsten <mttl@mailbox.org>
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
4
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
5 This file is part of Octave.
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
6
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
7 Octave is free software: you can redistribute it and/or modify it
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
8 under the terms of the GNU General Public License as published by
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
9 the Free Software Foundation, either version 3 of the License, or
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
10 (at your option) any later version.
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
11
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
13 WITHOUT ANY WARRANTY; without even the implied warranty of
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
15 GNU General Public License for more details.
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
16
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, see
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
19 <https://www.gnu.org/licenses/>.
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
20
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
21 */
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
22
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
23 /* 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
24 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
25 the file editor
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
26 */
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
27
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
28 #if defined (HAVE_CONFIG_H)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
29 # include "config.h"
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
30 #endif
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
31
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27277
diff changeset
32 #include <QDockWidget>
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
33 #include <QMenu>
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 "dw-main-window.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
36 #include "octave-qobject.h"
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
37 #include "shortcut-manager.h"
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
38
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
39 namespace octave
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
40 {
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
41
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
42 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
43 : 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
44 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
45 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
46
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
47 // 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
48 m_close_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
49 = add_action (nullptr, rmgr.icon ("window-close", false),
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
50 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
51
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
52 m_close_all_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
53 = add_action (nullptr, rmgr.icon ("window-close", false),
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 &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
55
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
56 m_close_others_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
57 = add_action (nullptr, rmgr.icon ("window-close", false),
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 &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
59
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
60 m_switch_left_action
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
61 = 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
62 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
63
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
64 m_switch_right_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 &Right 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_right ()), 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 // 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
69 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
70 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
71 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
72 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
73 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
74
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
75 notice_settings (rmgr.get_settings ());
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
76 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
77
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
78
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
79 // 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
80 QMenu *dw_main_window::createPopupMenu ()
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 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
83 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
84 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
85 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
86
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
87 QMenu *menu = QMainWindow::createPopupMenu ();
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
88 QList<QAction *> actions = menu->actions();
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 if (actions.length () > 0)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
91 {
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
92 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
93 menu->insertActions (sep, new_actions);
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 else
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
96 menu->addActions (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 return menu;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
99 }
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
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
102 // 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
103 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
104 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
105 QWidget *receiver)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
106 {
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
107 QAction *a;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
108 QWidget *r = this;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
109
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
110 if (receiver != nullptr)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
111 r = receiver;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
112
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
113 if (menu)
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
114 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
115 else
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
116 {
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
117 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
118 a->setEnabled (true);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
119 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
120 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
121
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
122 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
123 a->setShortcutContext (Qt::WidgetWithChildrenShortcut);
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
124
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
125 return a;
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
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
128 // Update the settings
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27412
diff changeset
129 void dw_main_window::notice_settings (const gui_settings *)
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
130 {
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
131 shortcut_manager::set_shortcut (m_close_action, "editor_file:close");
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
132 shortcut_manager::set_shortcut (m_close_all_action, "editor_file:close_all");
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
133 shortcut_manager::set_shortcut (m_close_others_action, "editor_file:close_other");
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
134
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
135 shortcut_manager::set_shortcut (m_switch_left_action, "editor_tabs:switch_left_tab");
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
136 shortcut_manager::set_shortcut (m_switch_right_action, "editor_tabs:switch_right_tab");
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
137 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
138
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
139
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
140 // Slots for handling actions
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 // Close current widget
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
143 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
144 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
145 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
146 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
147 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
148 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
149 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
150 if (i > 0)
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
151 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
152 break;
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
153 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
154 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
155 }
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 // Close other widgets
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
158 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
159 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
160 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
161 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
162 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
163 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
164 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
165 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
166
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
167 // Close all widgets
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
168 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
169 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
170 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
171 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
172 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
173
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
174 // Switch to left widget
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
175 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
176 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
177 request_switch (-1);
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
178 }
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 // Switch to right widget
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
181 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
182 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
183 request_switch (1);
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
184 }
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 // 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
187 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
188 {
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
189 int active = -1, next;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
190
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
191 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
192 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
193 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
194 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
195 active = i;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
196 break;
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 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
199
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
200 if (active == -1)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
201 return;
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 (direction == -1 && active == 0)
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
204 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
205 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
206 next = 0;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
207 else
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
208 next = active + direction;
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
209
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
210 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
211 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
212 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
213 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
214
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
215
25411
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
216 // Reimplemented Event
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
217 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
218 {
27277
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
219 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
220 || 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
221 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
222 // 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
223 // created or removed.
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
224 // 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
225 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
226 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
227
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
228 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
229 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
230 // This might indicate un- or re-docking a widget: Make sure
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
231 // floating widget get a copy of our actions
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
232 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
233 {
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
234 // 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
235 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
236 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
237
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
238 // 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
239 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
240 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
241 }
ad3d018e595f provide shortcuts for switching between widgets in var. editor (bug #53002)
Torsten <mttl@mailbox.org>
parents: 25398
diff changeset
242 }
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 return QMainWindow::event (ev);
25398
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
245 }
a78e5b8d5ee7 provide shortcuts for closing widgets of the variable editor (bug #53002)
Torsten <mttl@mailbox.org>
parents:
diff changeset
246
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