annotate libgui/src/workspace-model.cc @ 27033:c76dd670a7a5

automatic selection of foreground color in worspace view (bug #53995) * workspace-model.cc (workspace_model): initialize the color list extended by the foreground colors; (data): return the related foreground color when the foreground role id requested; (notice_settings): get suitable foreground colors for special storage classes based on the given background colors from the preferences by means of QPalette * workspace-view.cc (notice_settings): also take determined foreground colors of special storage classes for building the tool tip
author Torsten Lilge <ttl-octave@mailbox.org>
date Sun, 07 Apr 2019 20:16:27 +0200
parents ab3babe4ea25
children 0fe52ad36b24
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>
16610
a1f613e5066d workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents: 16527
diff changeset
31 #include <QSettings>
15155
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 14879
diff changeset
32
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
33 #include "syminfo.h"
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
34 #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
35
16610
a1f613e5066d workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents: 16527
diff changeset
36 #include "resource-manager.h"
25974
c3cd63006870 add preference for disabling workspace colors for different attributes
Torsten <mttl@mailbox.org>
parents: 25054
diff changeset
37 #include "gui-preferences.h"
15155
9e62d5a3a45e partial cleanup of include files in gui sources
John W. Eaton <jwe@octave.org>
parents: 14879
diff changeset
38 #include "workspace-model.h"
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
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 {
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
42 workspace_model::workspace_model (QObject *p)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
43 : QAbstractTableModel (p)
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
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
55 int colors = resource_manager::storage_class_chars ().length ();
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
56 for (int i = 0; i < 2*colors; i++)
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
57 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
58
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
59 }
16641
64f9a3e301d3 don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents: 16610
diff changeset
60
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
61 QList<QColor>
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
62 workspace_model::storage_class_default_colors (void)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
63 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
64 QList<QColor> colors;
16641
64f9a3e301d3 don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents: 16610
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 if (colors.isEmpty ())
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
67 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
68 colors << QColor (190, 255, 255)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
69 << QColor (255, 255, 190)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
70 << QColor (255, 190, 255);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
71 }
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
72
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
73 return colors;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
74 }
16641
64f9a3e301d3 don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents: 16610
diff changeset
75
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
76 QStringList
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
77 workspace_model::storage_class_names (void)
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 QStringList names;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
80
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
81 if (names.isEmpty ())
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
82 {
26656
ab3babe4ea25 eliminate soon-to-be obsolete symbol types from GUI variable display
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
83 names << QObject::tr ("argument")
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
84 << QObject::tr ("global")
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
85 << QObject::tr ("persistent");
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
86 }
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
87
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
88 return names;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
89 }
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
90
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
91 int
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
92 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
93 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
94 return m_symbols.size ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
95 }
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
96
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
97 int
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
98 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
99 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
100 return m_columnNames.size ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
101 }
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
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 Qt::ItemFlags
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
104 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
105 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
106 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
107
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
108 if (idx.isValid ())
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
109 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
110 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
111
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
112 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
113 retval |= Qt::ItemIsSelectable;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
114 }
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
115
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
116 return retval;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
117 }
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
118
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
119 QVariant
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
120 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
121 int role) const
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
122 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
123 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
124 return m_columnNames[section];
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
125 else
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
126 return QVariant ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
127 }
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
128
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
129 QVariant
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
130 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
131 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
132 QVariant retval;
16478
079ec7ce60e0 delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents: 16477
diff changeset
133
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
134 if (idx.isValid ())
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
135 {
27033
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
136 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
137 && m_enable_colors)
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
138 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
139 QString class_chars = resource_manager::storage_class_chars ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
140 int actual_class
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
141 = class_chars.indexOf (m_scopes[idx.row ()].toLatin1 ());
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
142 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
143 {
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
144 // 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
145 // 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
146 if (role == Qt::ForegroundRole)
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
147 actual_class += class_chars.length ();
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
148
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
149 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
150 }
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
151 else
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
152 return retval;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
153 }
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
154
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
155 if (role == Qt::DisplayRole
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
156 || (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
157 || (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
158 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
159 switch (idx.column ())
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 case 0:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
162 if (role == Qt::ToolTipRole)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
163 retval
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
164 = 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
165 else
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
166 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
167 break;
16478
079ec7ce60e0 delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents: 16477
diff changeset
168
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
169 case 1:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
170 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
171 break;
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
172
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
173 case 2:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
174 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
175 break;
16610
a1f613e5066d workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents: 16527
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 case 3:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
178 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
179 break;
16527
8701792e16ec include column in workspace viewer for storage class
John W. Eaton <jwe@octave.org>
parents: 16521
diff changeset
180
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
181 case 4:
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
182 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
183 QString sclass;
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
184
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
185 QString class_chars = resource_manager::storage_class_chars ();
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
186
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
187 int actual_class
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
188 = 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
189
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
190 if (actual_class >= 0)
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 QStringList class_names
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
193 = resource_manager::storage_class_names ();
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
194
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
195 sclass = class_names.at (actual_class);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
196 }
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
197
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
198 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
199 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
200 if (sclass.isEmpty ())
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
201 sclass = tr ("complex");
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
202 else
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
203 sclass += ", " + tr ("complex");
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
204 }
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
205
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
206 retval = QVariant (sclass);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
207 }
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
208 break;
17826
574ab045f70c restore display of "persistent", "automatic", etc. removed by 53f433bae63b
John W. Eaton <jwe@octave.org>
parents: 17824
diff changeset
209 }
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
210 }
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
211 }
16478
079ec7ce60e0 delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents: 16477
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 return retval;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
214 }
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
215
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
216 bool
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
217 workspace_model::setData (const QModelIndex& idx, const QVariant& value,
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
218 int role)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
219 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
220 bool retval = false;
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
221
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
222 if (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
223 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
224 QString qold_name = m_symbols[idx.row ()];
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
225
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
226 QString qnew_name = value.toString ();
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
227
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
228 std::string new_name = qnew_name.toStdString ();
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
229
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
230 if (valid_identifier (new_name))
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 emit rename_variable (qold_name, qnew_name);
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
233
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
234 retval = true;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
235 }
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
236 }
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
237
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
238 return retval;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
239 }
16502
45ae1038ee89 allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents: 16478
diff changeset
240
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
241 void
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
242 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
243 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
244 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
245 clear_data ();
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
246
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
247 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
248 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
249
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
250 update_table ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
251 }
15402
7f423c6111c6 refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents: 15388
diff changeset
252
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
253 void
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
254 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
255 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
256 clear_data ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
257 update_table ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
258 }
15402
7f423c6111c6 refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents: 15388
diff changeset
259
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
260 void
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
261 workspace_model::notice_settings (const QSettings *settings)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
262 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
263 QList<QColor> default_colors =
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
264 resource_manager::storage_class_default_colors ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
265 QString class_chars = resource_manager::storage_class_chars ();
16610
a1f613e5066d workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents: 16527
diff changeset
266
25974
c3cd63006870 add preference for disabling workspace colors for different attributes
Torsten <mttl@mailbox.org>
parents: 25054
diff changeset
267 m_enable_colors =
c3cd63006870 add preference for disabling workspace colors for different attributes
Torsten <mttl@mailbox.org>
parents: 25054
diff changeset
268 settings->value (ws_enable_colors.key, ws_enable_colors.key).toBool ();
c3cd63006870 add preference for disabling workspace colors for different attributes
Torsten <mttl@mailbox.org>
parents: 25054
diff changeset
269
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
270 for (int i = 0; i < class_chars.length (); i++)
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
271 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
272 QVariant default_var = default_colors.at (i);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
273 QColor setting_color = settings->value ("workspaceview/color_"
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
274 + class_chars.mid (i,1),
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
275 default_var).value<QColor> ();
27033
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
276
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
277 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
278 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
279
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
280 QColor fg_color = p.color (QPalette::WindowText);
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
281 m_storage_class_colors.replace (i + class_chars.length (), fg_color);
c76dd670a7a5 automatic selection of foreground color in worspace view (bug #53995)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26656
diff changeset
282
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
283 }
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
284 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
285
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
286 void
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
287 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
288 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
289 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
290 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
291 m_scopes = QString ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
292 m_symbols = QStringList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
293 m_class_names = QStringList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
294 m_dimensions = QStringList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
295 m_values = QStringList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
296 m_complex_flags = QIntList ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
297 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
298
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
299 void
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
300 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
301 {
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
302 beginResetModel ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
303
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
304 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
305 {
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
306 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
307
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
308 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
309
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
310 // 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
311 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
312 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
313 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
314 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
315
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
316 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
317 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
318 storage = 'a';
ab3babe4ea25 eliminate soon-to-be obsolete symbol types from GUI variable display
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
319 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
320 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
321 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
322 storage = 'p';
24645
f61502510d08 restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
323
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
324 std::ostringstream buf;
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
325 val.short_disp (buf);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
326 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
327
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
328 m_scopes.append (storage);
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
329 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
330 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
331 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
332 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
333 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
334 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
335
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
336 endResetModel ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
337
24766
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
338 emit model_changed ();
08c92c9d48e3 move workspace view and model classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24645
diff changeset
339 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
340 }