annotate libgui/src/workspace-model.cc @ 27660:30e84a3d58e5

replace preference literals by symbolic constants for workspace view * gui-preferences-ws.h: added all remaining workspace view preferences * resource-manager.cc (storage_class_names, storage_class_default_colors): remove obsolete function from resource_manager * resource-manager.h: remove obsolete functions storage_class_names ans storage_class_default_colors as well as class chars * settings-dialog.cc (read_workspace_colors): use new symbolic constants instead of literals and resource manager static functions; (write_workspace_colors): dito * workspace-model.cc (workspace_model): use new symbolic constants instead of literals and resource manager static functions; (storage_class_default_colors): remove obsolete functions; (storage_class_names): dito (data): use new symbolic constants instead of literals and resource manager static functions; (notice_settings): dito; * workspace-model.h: remove obsolete funtions storage_class_default_colors, storage_class_names * workspace-view.cc (workspace_view): use new symbolic constants instead of literals and resource manager static functions; (notice_settings): dito; (save_settings): dito; (header_contextmenu_requested): dito; (toggle_header): dito * workspace-view.h: removed obsolete class variables
author Torsten Lilge <ttl-octave@mailbox.org>
date Sat, 09 Nov 2019 12:45:07 +0100
parents 8b6e928e0705
children a36443e94f8a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15204
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
1 /*
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
2
26376
00f796120a6d maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents: 26117
diff changeset
3 Copyright (C) 2013-2019 John W. Eaton
00f796120a6d maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents: 26117
diff changeset
4 Copyright (C) 2011-2019 Jacob Dawid
15204
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
5
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
6 This file is part of Octave.
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
7
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24396
diff changeset
8 Octave is free software: you can redistribute it and/or modify it
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22411
diff changeset
9 under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24396
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22411
diff changeset
11 (at your option) any later version.
15204
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
12
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22411
diff changeset
13 Octave is distributed in the hope that it will be useful, but
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22411
diff changeset
14 WITHOUT ANY WARRANTY; without even the implied warranty of
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22411
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22411
diff changeset
16 GNU General Public License for more details.
15204
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
17
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
18 You should have received a copy of the GNU General Public License
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
19 along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24396
diff changeset
20 <https://www.gnu.org/licenses/>.
15204
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
21
359098ad343e update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents: 15196
diff changeset
22 */
14664
664f54233c98 Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
23
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
24 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21203
diff changeset
25 # include "config.h"
15155
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 14879
diff changeset
26 #endif
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 14879
diff changeset
27
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
28 #include <iostream>
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
29
14664
664f54233c98 Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
30 #include <QTreeWidget>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27221
diff changeset
31
27560
3fcc650de22f split gui-preferences.h into one file per widget
John W. Eaton <jwe@octave.org>
parents: 27412
diff changeset
32 #include "gui-preferences-ws.h"
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27561
diff changeset
33 #include "gui-settings.h"
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
34 #include "octave-qobject.h"
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27221
diff changeset
35 #include "workspace-model.h"
15155
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 14879
diff changeset
36
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
37 #include "syminfo.h"
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
38 #include "utils.h"
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
39
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
40 namespace octave
16641
64f9a3e301d3 don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents: 16610
diff changeset
41 {
27629
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
42 workspace_model::workspace_model (base_qobject& oct_qobj, QObject *p)
8b6e928e0705 in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
43 : QAbstractTableModel (p), m_octave_qobj (oct_qobj)
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
44 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
45 m_columnNames.append (tr ("Name"));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
46 m_columnNames.append (tr ("Class"));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
47 m_columnNames.append (tr ("Dimension"));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
48 m_columnNames.append (tr ("Value"));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
49 m_columnNames.append (tr ("Attribute"));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
50
27033
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
51 // Initialize the bachground and foreground colors of special
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
52 // classes in the workspace view. The structure is
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
53 // m_storage_class_colors(1,2,...,colors): background colors
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
54 // m_storage_class_colors(colors+1,...,2*colors): foreground colors
27660
30e84a3d58e5 replace preference literals by symbolic constants for workspace view
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27629
diff changeset
55 for (unsigned int i = 0; i < 2*ws_colors_count; i++)
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
56 m_storage_class_colors.append (QColor (Qt::white));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
57
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
58 }
16641
64f9a3e301d3 don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents: 16610
diff changeset
59
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
60 int
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
61 workspace_model::rowCount (const QModelIndex&) const
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
62 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
63 return m_symbols.size ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
64 }
14664
664f54233c98 Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
65
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
66 int
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
67 workspace_model::columnCount (const QModelIndex&) const
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
68 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
69 return m_columnNames.size ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
70 }
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
71
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
72 Qt::ItemFlags
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
73 workspace_model::flags (const QModelIndex& idx) const
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
74 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
75 Qt::ItemFlags retval = Qt::NoItemFlags;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
76
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
77 if (idx.isValid ())
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
78 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
79 retval |= Qt::ItemIsEnabled;
14664
664f54233c98 Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
80
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
81 if (m_top_level && idx.column () == 0)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
82 retval |= Qt::ItemIsSelectable;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
83 }
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
84
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
85 return retval;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
86 }
14664
664f54233c98 Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
87
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
88 QVariant
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
89 workspace_model::headerData (int section, Qt::Orientation orientation,
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
90 int role) const
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
91 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
92 if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
93 return m_columnNames[section];
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
94 else
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
95 return QVariant ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
96 }
14664
664f54233c98 Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
97
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
98 QVariant
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
99 workspace_model::data (const QModelIndex& idx, int role) const
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
100 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
101 QVariant retval;
16478
079ec7ce60e0 delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents: 16477
diff changeset
102
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
103 if (idx.isValid ())
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
104 {
27033
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
105 if ((role == Qt::BackgroundColorRole || role == Qt::ForegroundRole)
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
106 && m_enable_colors)
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
107 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
108 int actual_class
27660
30e84a3d58e5 replace preference literals by symbolic constants for workspace view
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27629
diff changeset
109 = ws_class_chars.indexOf (m_scopes[idx.row ()].toLatin1 ());
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
110 if (actual_class >= 0)
27033
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
111 {
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
112 // Valid class: Get backgorund (normal indexes) or foreground
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
113 // color (indexes with offset)
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
114 if (role == Qt::ForegroundRole)
27660
30e84a3d58e5 replace preference literals by symbolic constants for workspace view
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27629
diff changeset
115 actual_class += ws_colors_count;
27033
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
116
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
117 return QVariant (m_storage_class_colors.at (actual_class));
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
118 }
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
119 else
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
120 return retval;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
121 }
14664
664f54233c98 Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
122
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
123 if (role == Qt::DisplayRole
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
124 || (idx.column () == 0 && role == Qt::EditRole)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
125 || (idx.column () == 0 && role == Qt::ToolTipRole))
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
126 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
127 switch (idx.column ())
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
128 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
129 case 0:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
130 if (role == Qt::ToolTipRole)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
131 retval
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
132 = QVariant (tr ("Right click to copy, rename, or display"));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
133 else
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
134 retval = QVariant (m_symbols[idx.row ()]);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
135 break;
16478
079ec7ce60e0 delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents: 16477
diff changeset
136
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
137 case 1:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
138 retval = QVariant (m_class_names[idx.row ()]);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
139 break;
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
140
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
141 case 2:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
142 retval = QVariant (m_dimensions[idx.row ()]);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
143 break;
16610
a1f613e5066d workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents: 16527
diff changeset
144
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
145 case 3:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
146 retval = QVariant (m_values[idx.row ()]);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
147 break;
16527
8701792e16ec include column in workspace viewer for storage class
John W. Eaton <jwe@octave.org>
parents: 16521
diff changeset
148
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
149 case 4:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
150 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
151 QString sclass;
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
152
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
153 int actual_class
27660
30e84a3d58e5 replace preference literals by symbolic constants for workspace view
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27629
diff changeset
154 = ws_class_chars.indexOf (m_scopes[idx.row ()].toLatin1 ());
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
155
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
156 if (actual_class >= 0)
27660
30e84a3d58e5 replace preference literals by symbolic constants for workspace view
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27629
diff changeset
157 sclass = ws_color_names.at (actual_class);
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
158
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
159 if (m_complex_flags[idx.row ()])
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
160 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
161 if (sclass.isEmpty ())
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
162 sclass = tr ("complex");
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
163 else
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
164 sclass += ", " + tr ("complex");
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
165 }
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
166
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
167 retval = QVariant (sclass);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
168 }
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
169 break;
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
170 }
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
171 }
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
172 }
16478
079ec7ce60e0 delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents: 16477
diff changeset
173
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
174 return retval;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
175 }
14664
664f54233c98 Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
176
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
177 void
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
178 workspace_model::set_workspace (bool top_level, bool /* debug */,
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
179 const symbol_info_list& syminfo)
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
180 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
181 clear_data ();
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
182
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
183 m_top_level = top_level;
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
184 m_syminfo_list = syminfo;
15402
7f423c6111c6 refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents: 15388
diff changeset
185
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
186 update_table ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
187 }
15402
7f423c6111c6 refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents: 15388
diff changeset
188
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
189 void
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
190 workspace_model::clear_workspace (void)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
191 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
192 clear_data ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
193 update_table ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
194 }
15402
7f423c6111c6 refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents: 15388
diff changeset
195
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
196 void
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27561
diff changeset
197 workspace_model::notice_settings (const gui_settings *settings)
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
198 {
25974
c3cd63006870 add preference for disabling workspace colors for different attributes
Torsten <mttl@mailbox.org>
parents: 25054
diff changeset
199 m_enable_colors =
27561
78b28d0af037 fix typo in call to QSettings::value function
John W. Eaton <jwe@octave.org>
parents: 27560
diff changeset
200 settings->value (ws_enable_colors.key, ws_enable_colors.def).toBool ();
25974
c3cd63006870 add preference for disabling workspace colors for different attributes
Torsten <mttl@mailbox.org>
parents: 25054
diff changeset
201
27660
30e84a3d58e5 replace preference literals by symbolic constants for workspace view
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27629
diff changeset
202 for (int i = 0; i < ws_colors_count; i++)
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
203 {
27660
30e84a3d58e5 replace preference literals by symbolic constants for workspace view
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27629
diff changeset
204 QColor setting_color = settings->value (ws_colors[i].key,
30e84a3d58e5 replace preference literals by symbolic constants for workspace view
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27629
diff changeset
205 ws_colors[i].def).value<QColor> ();
27033
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
206
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
207 QPalette p (setting_color);
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
208 m_storage_class_colors.replace (i,setting_color);
27033
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
209
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
210 QColor fg_color = p.color (QPalette::WindowText);
27660
30e84a3d58e5 replace preference literals by symbolic constants for workspace view
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27629
diff changeset
211 m_storage_class_colors.replace (i + ws_colors_count, fg_color);
27033
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
212
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
213 }
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
214 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
215
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
216 void
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
217 workspace_model::clear_data (void)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
218 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
219 m_top_level = false;
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
220 m_syminfo_list = symbol_info_list ();
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
221 m_scopes = QString ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
222 m_symbols = QStringList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
223 m_class_names = QStringList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
224 m_dimensions = QStringList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
225 m_values = QStringList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
226 m_complex_flags = QIntList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
227 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
228
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
229 void
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
230 workspace_model::update_table (void)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
231 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
232 beginResetModel ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
233
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
234 for (const auto& syminfo : m_syminfo_list)
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
235 {
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
236 std::string nm = syminfo.name ();
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
237
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
238 octave_value val = syminfo.value ();
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
239
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
240 // FIXME: fix size for objects, see kluge in ov.cc
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
241 Matrix sz = val.size ();
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
242 dim_vector dv = dim_vector::alloc (sz.numel ());
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
243 for (octave_idx_type i = 0; i < dv.ndims (); i++)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
244 dv(i) = sz(i);
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
245
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
246 char storage = ' ';
26656
ab3babe4ea25 eliminate soon-to-be obsolete symbol types from GUI variable display
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
247 if (syminfo.is_formal ())
ab3babe4ea25 eliminate soon-to-be obsolete symbol types from GUI variable display
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
248 storage = 'a';
ab3babe4ea25 eliminate soon-to-be obsolete symbol types from GUI variable display
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
249 else if (syminfo.is_global ())
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
250 storage = 'g';
26117
a6df420457ac use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents: 25974
diff changeset
251 else if (syminfo.is_persistent ())
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
252 storage = 'p';
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
253
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
254 std::ostringstream buf;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
255 val.short_disp (buf);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
256 std::string short_disp_str = buf.str ();
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
257
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
258 m_scopes.append (storage);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
259 m_symbols.append (QString::fromStdString (nm));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
260 m_class_names.append (QString::fromStdString (val.class_name ()));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
261 m_dimensions.append (QString::fromStdString (dv.str ()));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
262 m_values.append (QString::fromStdString (short_disp_str));
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
263 m_complex_flags.append (val.iscomplex ());
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
264 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
265
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
266 endResetModel ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
267
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
268 emit model_changed ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
269 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
270 }