Mercurial > octave
annotate libgui/src/shortcuts-tree-widget.cc @ 33658:b1d6e40ac737 stable tip
NEWS.9.md: Fix typo and minor formatting changes.
* etc/NEWS.9.md: Fix typo. Adjust whitespace. Use markdown syntax for code
snippets.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Wed, 05 Jun 2024 11:27:35 +0200 |
parents | 370a2de931a0 |
children | 3cf213d5b479 |
rev | line source |
---|---|
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2 // |
32632
2e484f9f1f18
maint: update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
32519
diff
changeset
|
3 // Copyright (C) 2014-2024 The Octave Project Developers |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
4 // |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
7 // |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
8 // This file is part of Octave. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
9 // |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
13 // (at your option) any later version. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
14 // |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
18 // GNU General Public License for more details. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
19 // |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
23 // |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
26 #if defined (HAVE_CONFIG_H) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
27 # include "config.h" |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
28 #endif |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
29 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
30 #include <QApplication> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
31 #include <QDialog> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
32 #include <QDialogButtonBox> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
33 #include <QGridLayout> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
34 #include <QHeaderView> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
35 #include <QKeyEvent> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
36 #include <QLabel> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
37 #include <QMessageBox> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
38 #include <QPushButton> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
39 #include <QVBoxLayout> |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
40 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
41 #include "gui-preferences-sc.h" |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
42 #include "gui-settings.h" |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
43 #include "shortcuts-tree-widget.h" |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
44 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
45 OCTAVE_BEGIN_NAMESPACE(octave) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
46 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
47 // enter_shortcut: |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
48 // class derived from QLineEdit for directly entering key sequences which |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
49 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
50 enter_shortcut::enter_shortcut (QWidget *p) : QLineEdit (p) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
51 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
52 m_direct_shortcut = true; // the shortcut is directly entered |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
53 m_shift_modifier = false; // the shift modifier is not added |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
54 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
55 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
56 // new keyPressEvent |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
57 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
58 enter_shortcut::keyPressEvent (QKeyEvent *e) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
59 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
60 if (! m_direct_shortcut) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
61 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
62 QLineEdit::keyPressEvent (e); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
63 return; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
64 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
65 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
66 if (e->type () == QEvent::KeyPress) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
67 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
68 int key = e->key (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
69 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
70 if (key == Qt::Key_unknown || key == 0) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
71 return; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
72 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
73 Qt::KeyboardModifiers modifiers = QGuiApplication::keyboardModifiers (); //e->modifiers (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
74 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
75 if (m_shift_modifier || (modifiers & Qt::ShiftModifier)) |
31995
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
76 key |= Qt::SHIFT; |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
77 if (modifiers & Qt::ControlModifier) |
31995
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
78 key |= Qt::CTRL; |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
79 if (modifiers & Qt::AltModifier) |
31995
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
80 key |= Qt::ALT; |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
81 if (modifiers & Qt::MetaModifier) |
31995
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
82 key |= Qt::META; |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
83 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
84 setText (QKeySequence (key).toString ()); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
85 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
86 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
87 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
88 // slot for checkbox whether the shortcut is directly entered or not |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
89 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
90 enter_shortcut::handle_direct_shortcut (int state) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
91 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
92 if (state) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
93 m_direct_shortcut = true; // the shortcut is directly entered |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
94 else |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
95 m_direct_shortcut = false; // the shortcut has to be written as text |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
96 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
97 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
98 // slot for checkbox whether the shift modifier should be added |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
99 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
100 enter_shortcut::handle_shift_modifier (int state) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
101 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
102 if (state) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
103 m_shift_modifier = true; // the shortcut is directly entered |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
104 else |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
105 m_shift_modifier = false; // the shortcut has to be written as text |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
106 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
107 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
108 tree_widget_shortcut_item::tree_widget_shortcut_item |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
109 (QTreeWidgetItem *parent, const sc_pref& scpref, const QString& actual_text) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
110 : QTreeWidgetItem (parent), m_settings_key (scpref.settings_key ()) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
111 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
112 // set a slightly transparent foreground for default columns |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
113 QColor fg = QColor (foreground (DEFAULT_COLUMN).color ()); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
114 fg.setAlpha (128); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
115 setForeground (DEFAULT_COLUMN, QBrush (fg)); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
116 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
117 // write the shortcuts |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
118 set_description (scpref.description ()); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
119 set_default_text (scpref.def_text ()); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
120 set_actual_text (actual_text); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
121 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
122 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
123 QString |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
124 tree_widget_shortcut_item::settings_key () const |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
125 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
126 return m_settings_key; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
127 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
128 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
129 QString |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
130 tree_widget_shortcut_item::description () const |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
131 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
132 return text (DESCRIPTION_COLUMN); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
133 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
134 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
135 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
136 tree_widget_shortcut_item::set_description (const QString& text) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
137 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
138 setText (DESCRIPTION_COLUMN, text); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
139 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
140 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
141 QString |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
142 tree_widget_shortcut_item::default_text () const |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
143 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
144 return text (DEFAULT_COLUMN); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
145 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
146 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
147 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
148 tree_widget_shortcut_item::set_default_text (const QString& text) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
149 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
150 setText (DEFAULT_COLUMN, text); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
151 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
152 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
153 QString |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
154 tree_widget_shortcut_item::actual_text () const |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
155 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
156 return text (ACTUAL_COLUMN); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
157 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
158 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
159 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
160 tree_widget_shortcut_item::set_actual_text (const QString& text) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
161 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
162 setText (ACTUAL_COLUMN, text); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
163 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
164 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
165 shortcut_edit_dialog::shortcut_edit_dialog |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
166 (tree_widget_shortcut_item *shortcut_item, QWidget *parent) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
167 : QDialog (parent), m_shortcut_item (shortcut_item), |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
168 m_settings_key (shortcut_item->settings_key ()) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
169 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
170 setAttribute (Qt::WA_DeleteOnClose); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
171 |
32519
6ff63f154144
maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents:
31995
diff
changeset
|
172 setWindowTitle (tr ("Enter New Shortcut")); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
173 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
174 QVBoxLayout *box = new QVBoxLayout (this); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
175 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
176 box->setSpacing (2); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
177 box->setContentsMargins (12, 12, 12, 12); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
178 |
32519
6ff63f154144
maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents:
31995
diff
changeset
|
179 QLabel *help = new QLabel (tr ("Enter custom shortcut\n" |
6ff63f154144
maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents:
31995
diff
changeset
|
180 "Action: %1") |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
181 .arg (m_settings_key)); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
182 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
183 help->setWordWrap (true); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
184 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
185 box->addWidget (help); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
186 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
187 QCheckBox *direct |
32519
6ff63f154144
maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents:
31995
diff
changeset
|
188 = new QCheckBox (tr ("Enter shortcut by typing it")); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
189 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
190 QCheckBox *shift |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
191 = new QCheckBox (tr ("Add Shift modifier\n" |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
192 "(allows one to enter number keys)")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
193 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
194 shift->setStyleSheet |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
195 ("QCheckBox::indicator { subcontrol-position: left top; }"); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
196 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
197 connect (direct, &QCheckBox::clicked, shift, &QCheckBox::setEnabled); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
198 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
199 direct->setCheckState (Qt::Checked); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
200 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
201 box->addWidget (direct); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
202 box->addWidget (shift); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
203 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
204 box->addSpacing (15); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
205 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
206 QGridLayout *grid = new QGridLayout (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
207 |
32519
6ff63f154144
maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents:
31995
diff
changeset
|
208 QLabel *actual = new QLabel (tr ("Actual Shortcut")); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
209 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
210 m_edit_actual = new enter_shortcut (this); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
211 m_edit_actual->setAlignment (Qt::AlignHCenter); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
212 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
213 grid->addWidget (actual, 0, 0); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
214 grid->addWidget (m_edit_actual, 0, 1); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
215 |
32519
6ff63f154144
maint: Review and update strings that appear in GUI.
Rik <rik@octave.org>
parents:
31995
diff
changeset
|
216 QLabel *def = new QLabel (tr ("Default Shortcut")); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
217 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
218 QLabel *label_default = new QLabel (this); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
219 label_default->setAlignment (Qt::AlignHCenter); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
220 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
221 grid->addWidget (def, 1, 0); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
222 grid->addWidget (label_default, 1, 1); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
223 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
224 QPushButton *clear_text = new QPushButton (tr ("Clear")); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
225 QPushButton *set_default = new QPushButton (tr ("Set to default")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
226 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
227 grid->addWidget (clear_text, 0, 2); |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
228 grid->addWidget (set_default, 0, 3); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
229 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
230 box->addLayout (grid); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
231 box->addSpacing (18); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
232 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
233 QDialogButtonBox *button_box = new QDialogButtonBox (QDialogButtonBox::Ok |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
234 | QDialogButtonBox::Cancel); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
235 QList<QAbstractButton *> buttons = button_box->buttons (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
236 for (int i = 0; i < buttons.count (); i++) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
237 buttons.at (i)->setShortcut (QKeySequence ()); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
238 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
239 connect (button_box, &QDialogButtonBox::accepted, |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
240 this, &QDialog::accept); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
241 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
242 connect (button_box, &QDialogButtonBox::rejected, |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
243 this, &QDialog::reject); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
244 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
245 box->addWidget (button_box); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
246 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
247 setLayout (box); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
248 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
249 connect (direct, &QCheckBox::stateChanged, |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
250 m_edit_actual, &enter_shortcut::handle_direct_shortcut); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
251 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
252 connect (shift, &QCheckBox::stateChanged, |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
253 m_edit_actual, &enter_shortcut::handle_shift_modifier); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
254 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
255 connect (this, &QDialog::finished, |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
256 this, &shortcut_edit_dialog::finished); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
257 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
258 gui_settings settings; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
259 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
260 const sc_pref scpref = all_shortcut_preferences::value (m_settings_key); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
261 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
262 m_default_text = scpref.def_text (); |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
263 label_default->setText (m_default_text); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
264 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
265 QString actual_text = shortcut_item->actual_text (); |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
266 m_edit_actual->setText (actual_text); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
267 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
268 connect (clear_text, &QPushButton::clicked, |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
269 [this] () { m_edit_actual->setText (QString ()); }); |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
270 connect (set_default, &QPushButton::clicked, |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
271 [this] () { m_edit_actual->setText (m_default_text); }); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
272 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
273 m_edit_actual->setFocus (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
274 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
275 setFocusProxy (m_edit_actual); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
276 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
277 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
278 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
279 shortcut_edit_dialog::finished (int result) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
280 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
281 if (result == QDialog::Rejected) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
282 return; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
283 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
284 // Check whether the chosen shortcut is already in use either in the |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
285 // current context (section of the shortcut settings) or as a global |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
286 // (main_) shortcut. This job might have been easier if we had |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
287 // organized the sections as child groups instead of using a colon in |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
288 // the settings key to separate the section from the shortcut name. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
289 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
290 // Note that m_settings_key doesn't begin with the sc_group prefix. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
291 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
292 QString my_section = get_shortcut_section (m_settings_key); |
33415
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
293 if (my_section.contains ('_')) // get top level section |
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
294 my_section = my_section.section ('_', 0, 0, QString::SectionSkipEmpty); |
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
295 |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
296 QString actual_text = m_edit_actual->text (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
297 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
298 bool conflict = false; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
299 QString other_settings_key; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
300 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
301 gui_settings settings; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
302 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
303 settings.beginGroup (sc_group); |
33415
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
304 const QStringList shortcut_settings_keys = all_shortcut_preferences::keys (); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
305 settings.endGroup (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
306 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
307 for (const auto& settings_key : shortcut_settings_keys) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
308 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
309 if (settings_key == m_settings_key) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
310 continue; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
311 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
312 QString section = get_shortcut_section (settings_key); |
33415
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
313 if (section.contains ('_')) // get top level section |
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
314 section = section.section ('_', 0, 0, QString::SectionSkipEmpty); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
315 |
33415
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
316 if (section == my_section || section == "main") |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
317 { |
33415
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
318 const sc_pref scpref = all_shortcut_preferences::value (settings_key); |
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
319 QString shortcut_text = settings.sc_value (scpref); |
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
320 |
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
321 if (shortcut_text.isEmpty ()) |
370a2de931a0
fix checking for duplicate shortcuts
Torsten Lilge <ttl-octave@mailbox.org>
parents:
33414
diff
changeset
|
322 continue; |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
323 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
324 if (shortcut_text == actual_text) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
325 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
326 other_settings_key = settings_key; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
327 conflict = true; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
328 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
329 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
330 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
331 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
332 if (conflict) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
333 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
334 // We only need the description of the other shortcut, not the |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
335 // complete sc_pref info. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
336 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
337 const sc_pref other_scpref |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
338 = all_shortcut_preferences::value (other_settings_key); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
339 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
340 int ret = QMessageBox::warning (this, tr ("Double Shortcut"), |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
341 tr ("The chosen shortcut\n \"%1\"\n" |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
342 "is already used for the action\n \"%2\".\n" |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
343 "Do you want to use the shortcut and remove it " |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
344 "from the previous action?") |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
345 .arg (actual_text) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
346 .arg (other_scpref.description ()), |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
347 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
348 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
349 if (ret == QMessageBox::Yes) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
350 emit set_shortcut (other_settings_key, ""); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
351 else |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
352 return; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
353 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
354 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
355 m_shortcut_item->set_actual_text (actual_text); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
356 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
357 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
358 shortcuts_tree_widget::shortcuts_tree_widget (QWidget *parent) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
359 : QTreeWidget (parent) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
360 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
361 QHash <QString, QTreeWidgetItem *> level_hash; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
362 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
363 header ()->setSectionResizeMode (QHeaderView::ResizeToContents); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
364 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
365 int dsc_col = tree_widget_shortcut_item::DESCRIPTION_COLUMN; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
366 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
367 QTreeWidgetItem *main = new QTreeWidgetItem (this); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
368 main->setText (dsc_col, tr ("Global")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
369 main->setExpanded (true); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
370 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
371 QTreeWidgetItem *main_file = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
372 main_file->setText (dsc_col, tr ("File Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
373 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
374 QTreeWidgetItem *main_edit = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
375 main_edit->setText (dsc_col, tr ("Edit Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
376 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
377 QTreeWidgetItem *main_debug = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
378 main_debug->setText (dsc_col, tr ("Debug Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
379 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
380 QTreeWidgetItem *main_tools = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
381 main_tools->setText (dsc_col, tr ("Tools Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
382 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
383 QTreeWidgetItem *main_window = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
384 main_window->setText (dsc_col, tr ("Window Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
385 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
386 QTreeWidgetItem *main_help = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
387 main_help->setText (dsc_col, tr ("Help Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
388 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
389 QTreeWidgetItem *main_news = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
390 main_news->setText (dsc_col, tr ("News Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
391 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
392 QTreeWidgetItem *main_dock_widgets = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
393 main_dock_widgets->setText (dsc_col, tr ("Handling of Dock Widgets")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
394 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
395 QTreeWidgetItem *main_tabs = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
396 main_tabs->setText (dsc_col, tr ("Tab Handling in Dock Widgets")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
397 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
398 QTreeWidgetItem *main_find = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
399 main_find->setText (dsc_col, tr ("Find & Replace in Dock Widgets")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
400 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
401 QTreeWidgetItem *main_zoom = new QTreeWidgetItem (main); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
402 main_zoom->setText (dsc_col, tr ("Zooming in Editor and Documentation")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
403 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
404 level_hash[sc_main_file] = main_file; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
405 level_hash[sc_main_edit] = main_edit; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
406 level_hash[sc_main_debug] = main_debug; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
407 level_hash[sc_main_tools] = main_tools; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
408 level_hash[sc_main_window] = main_window; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
409 level_hash[sc_main_help] = main_help; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
410 level_hash[sc_main_news] = main_news; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
411 level_hash[sc_dock_widget] = main_dock_widgets; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
412 level_hash[sc_edit_tabs] = main_tabs; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
413 level_hash[sc_edit_find] = main_find; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
414 level_hash[sc_edit_zoom] = main_zoom; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
415 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
416 QTreeWidgetItem *editor = new QTreeWidgetItem (this); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
417 editor->setText (dsc_col, tr ("Editor")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
418 editor->setExpanded (true); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
419 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
420 QTreeWidgetItem *editor_file = new QTreeWidgetItem (editor); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
421 editor_file->setText (dsc_col, tr ("File Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
422 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
423 QTreeWidgetItem *editor_edit = new QTreeWidgetItem (editor); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
424 editor_edit->setText (dsc_col, tr ("Edit Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
425 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
426 QTreeWidgetItem *editor_view = new QTreeWidgetItem (editor); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
427 editor_view->setText (dsc_col, tr ("View Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
428 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
429 QTreeWidgetItem *editor_debug = new QTreeWidgetItem (editor); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
430 editor_debug->setText (dsc_col, tr ("Debug Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
431 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
432 QTreeWidgetItem *editor_run = new QTreeWidgetItem (editor); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
433 editor_run->setText (dsc_col, tr ("Run Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
434 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
435 QTreeWidgetItem *editor_help = new QTreeWidgetItem (editor); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
436 editor_help->setText (dsc_col, tr ("Help Menu")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
437 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
438 level_hash[sc_edit_file] = editor_file; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
439 level_hash[sc_edit_edit] = editor_edit; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
440 level_hash[sc_edit_view] = editor_view; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
441 level_hash[sc_edit_debug] = editor_debug; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
442 level_hash[sc_edit_run] = editor_run; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
443 level_hash[sc_edit_help] = editor_help; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
444 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
445 QTreeWidgetItem *doc = new QTreeWidgetItem (this); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
446 doc->setText (dsc_col, tr ("Documentation Viewer")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
447 doc->setExpanded (true); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
448 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
449 QTreeWidgetItem *doc_browser = new QTreeWidgetItem (doc); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
450 doc_browser->setText (dsc_col, tr ("Browser")); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
451 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
452 level_hash[sc_doc] = doc_browser; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
453 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
454 connect (this, &QTreeWidget::itemDoubleClicked, |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
455 this, &shortcuts_tree_widget::edit_selection); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
456 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
457 QList<QString> shortcut_settings_keys |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
458 = all_shortcut_preferences::keys (); |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
459 shortcut_settings_keys.sort (); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
460 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
461 gui_settings settings; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
462 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
463 for (const auto& settings_key : shortcut_settings_keys) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
464 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
465 QTreeWidgetItem *section = level_hash[settings_key.section (':', 0, 0)]; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
466 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
467 // handle sections which have changed and do not correspond to the |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
468 // previously defined keyname |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
469 if (section == editor_file) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
470 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
471 // Closing tabs now in global tab handling section |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
472 if (settings_key.contains (sc_edit_file_cl)) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
473 section = main_tabs; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
474 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
475 else if (section == editor_edit) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
476 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
477 // Find & replace now in global file & replace handling section |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
478 if (settings_key.contains (sc_edit_edit_find)) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
479 section = main_find; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
480 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
481 else if (section == editor_view) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
482 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
483 // Zooming now in global zoom handling section |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
484 if (settings_key.contains (sc_edit_view_zoom)) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
485 section = main_zoom; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
486 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
487 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
488 const sc_pref scpref = all_shortcut_preferences::value (settings_key); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
489 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
490 // Inserts itself in the tree widget in SECTION. The parent |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
491 // object will delete it. |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
492 QString actual_text = settings.sc_value (scpref); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
493 new tree_widget_shortcut_item (section, scpref, actual_text); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
494 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
495 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
496 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
497 void |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
498 shortcuts_tree_widget::edit_selection (QTreeWidgetItem *item, int col) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
499 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
500 if (col != 2) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
501 return; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
502 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
503 tree_widget_shortcut_item *shortcut_item |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
504 = dynamic_cast<tree_widget_shortcut_item *> (item); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
505 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
506 if (! shortcut_item) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
507 return; // top-level-item clicked |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
508 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
509 shortcut_edit_dialog *dialog |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
510 = new shortcut_edit_dialog (shortcut_item); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
511 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
512 connect (dialog, &shortcut_edit_dialog::set_shortcut, |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
513 this, &shortcuts_tree_widget::update_widget_value); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
514 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
515 dialog->show (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
516 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
517 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
518 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
519 shortcuts_tree_widget::update_widget_value (const QString& settings_key, |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
520 const QString& sc_text) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
521 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
522 tree_widget_shortcut_item *item = get_item (settings_key); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
523 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
524 if (item) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
525 item->set_actual_text (sc_text); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
526 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
527 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
528 tree_widget_shortcut_item * |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
529 shortcuts_tree_widget::get_item (const QString& settings_key) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
530 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
531 // There aren't many shortcuts so iterating over all of them to find |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
532 // an individual item isn't a big performance issue. If we had many |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
533 // more items we could use a QHash <settings_key, sc_pref> data member. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
534 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
535 tree_widget_shortcut_item *item = nullptr; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
536 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
537 QTreeWidgetItemIterator it (this, QTreeWidgetItemIterator::NoChildren); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
538 while (*it) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
539 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
540 tree_widget_shortcut_item *shortcut_item |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
541 = dynamic_cast<tree_widget_shortcut_item *> (*it); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
542 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
543 if (settings_key == shortcut_item->settings_key ()) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
544 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
545 item = shortcut_item; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
546 break; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
547 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
548 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
549 it++; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
550 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
551 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
552 // FIXME: Should it be an error to not find a match? |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
553 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
554 if (! item) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
555 qWarning () << (tr ("item %1 not found in shortcut settings dialog") |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
556 .arg (settings_key)); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
557 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
558 return item; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
559 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
560 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
561 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
562 shortcuts_tree_widget::update_settings_value (gui_settings& settings, |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
563 const QString& settings_key) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
564 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
565 tree_widget_shortcut_item *item = get_item (settings_key); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
566 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
567 if (item) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
568 settings.setValue (settings_key, item->actual_text ()); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
569 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
570 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
571 // Refresh the tree view with values from the settings object. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
572 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
573 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
574 shortcuts_tree_widget::import_shortcuts (gui_settings& settings) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
575 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
576 settings.beginGroup (sc_group); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
577 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
578 const QStringList shortcut_settings_keys = settings.allKeys (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
579 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
580 for (const auto& settings_key : shortcut_settings_keys) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
581 { |
31709
3a23b89bd21d
define some convenience functions to reduce clutter
John W. Eaton <jwe@octave.org>
parents:
31708
diff
changeset
|
582 // We don't want to apply default value here. |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
583 QString sc_text = settings.value (settings_key).toString (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
584 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
585 update_widget_value (settings_key, sc_text); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
586 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
587 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
588 settings.endGroup (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
589 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
590 bool sc_ctrld = false; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
591 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
592 QTreeWidgetItemIterator it (this, QTreeWidgetItemIterator::NoChildren); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
593 while (*it) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
594 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
595 tree_widget_shortcut_item *shortcut_item |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
596 = dynamic_cast<tree_widget_shortcut_item *> (*it); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
597 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
598 if (! shortcut_item) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
599 continue; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
600 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
601 QString settings_key = shortcut_item->settings_key (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
602 QString sc_text = shortcut_item->actual_text (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
603 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
604 if (sc_text.isEmpty ()) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
605 sc_text = shortcut_item->default_text (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
606 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
607 QString section = get_shortcut_section (settings_key); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
608 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
609 // special: check main-window for Ctrl-D (Terminal) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
610 if (section.startsWith ("main_") |
31995
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
611 && QKeySequence (sc_text) |
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
612 == QKeySequence (Qt::ControlModifier | Qt::Key_D)) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
613 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
614 sc_ctrld = true; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
615 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
616 it++; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
617 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
618 |
31702
aae24eaf89ad
update gui_pref class to match recent changes to sc_pref class
John W. Eaton <jwe@octave.org>
parents:
31696
diff
changeset
|
619 settings.setValue (sc_main_ctrld.settings_key (), sc_ctrld); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
620 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
621 settings.sync (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
622 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
623 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
624 // Export all shortcuts from the tree view to the settings object. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
625 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
626 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
627 shortcuts_tree_widget::export_shortcuts (gui_settings& settings, bool full) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
628 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
629 settings.beginGroup (sc_group); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
630 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
631 bool sc_ctrld = false; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
632 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
633 QTreeWidgetItemIterator it (this, QTreeWidgetItemIterator::NoChildren); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
634 while (*it) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
635 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
636 tree_widget_shortcut_item *shortcut_item |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
637 = dynamic_cast<tree_widget_shortcut_item *> (*it); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
638 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
639 if (! shortcut_item) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
640 continue; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
641 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
642 QString settings_key = shortcut_item->settings_key (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
643 QString sc_text = shortcut_item->actual_text (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
644 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
645 if (full || sc_text != shortcut_item->default_text ()) |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
646 { |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
647 // Only write the shortcut to the settings file if it is |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
648 // different to its default value or if an export into a |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
649 // custom file is desired by the user. |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
650 settings.setValue (settings_key, sc_text); |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
651 } |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
652 else |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
653 { |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
654 // Remove the key otherwise, the default value will be |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
655 // chosen for non existing shortcut keys. |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
656 settings.remove (settings_key); |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
657 } |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
658 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
659 QString section = get_shortcut_section (settings_key); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
660 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
661 // special: check main-window for Ctrl-D (Terminal) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
662 if (section.startsWith ("main_") |
31995
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
663 && QKeySequence (sc_text) |
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
664 == QKeySequence (Qt::ControlModifier | Qt::Key_D)) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
665 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
666 sc_ctrld = true; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
667 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
668 it++; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
669 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
670 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
671 settings.endGroup (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
672 |
31702
aae24eaf89ad
update gui_pref class to match recent changes to sc_pref class
John W. Eaton <jwe@octave.org>
parents:
31696
diff
changeset
|
673 settings.setValue (sc_main_ctrld.settings_key (), sc_ctrld); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
674 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
675 settings.sync (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
676 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
677 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
678 // Clear all user-defined settings from the tree widget and the |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
679 // application settings. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
680 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
681 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
682 shortcuts_tree_widget::set_default_shortcuts () |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
683 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
684 gui_settings settings; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
685 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
686 settings.beginGroup (sc_group); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
687 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
688 settings.remove (""); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
689 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
690 settings.endGroup (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
691 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
692 bool sc_ctrld = false; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
693 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
694 QTreeWidgetItemIterator it (this, QTreeWidgetItemIterator::NoChildren); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
695 while (*it) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
696 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
697 tree_widget_shortcut_item *shortcut_item |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
698 = dynamic_cast<tree_widget_shortcut_item *> (*it); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
699 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
700 if (! shortcut_item) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
701 continue; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
702 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
703 QString settings_key = shortcut_item->settings_key (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
704 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
705 shortcut_item->set_actual_text (""); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
706 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
707 QString sc_text = shortcut_item->default_text (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
708 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
709 QString section = get_shortcut_section (settings_key); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
710 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
711 // special: check main-window for Ctrl-D (Terminal) |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
712 if (section.startsWith ("main_") |
31995
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
713 && QKeySequence (sc_text) |
49d21a7b25a8
Replace deprecated QKeyCombination::operator+ by QKeyCombination::operator|.
Markus Mützel <markus.muetzel@gmx.de>
parents:
31771
diff
changeset
|
714 == QKeySequence (Qt::ControlModifier | Qt::Key_D)) |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
715 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
716 sc_ctrld = true; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
717 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
718 it++; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
719 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
720 |
31702
aae24eaf89ad
update gui_pref class to match recent changes to sc_pref class
John W. Eaton <jwe@octave.org>
parents:
31696
diff
changeset
|
721 settings.setValue (sc_main_ctrld.settings_key (), sc_ctrld); |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
722 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
723 settings.sync (); |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
724 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
725 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
726 // For each key found in application settings object, transfer |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
727 // corresponding setting to the application settings object. |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
728 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
729 void |
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
730 shortcuts_tree_widget::write_settings () |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
731 { |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
732 gui_settings settings; |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
733 |
33414
ec8b3c32effa
allow unbinding GUI shortcuts (bug #65580)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
32632
diff
changeset
|
734 export_shortcuts (settings, false); // false: omit values identical to the default |
31696
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
735 } |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
736 |
8fed04d0607c
eliminate shortcut_manager class and revamp shortcut handling
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
737 OCTAVE_END_NAMESPACE(octave) |