Mercurial > hg > octave-nkf
annotate libgui/src/workspace-model.h @ 20795:eef93a493ce3
use new cell_value method to handle value extraction errors
* cellfun.cc, ov-class.cc, ov-struct.cc, ov-usr-fcn.cc:
Use new cell_value method.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 09 Oct 2015 14:43:36 -0400 |
parents | f7846f0ea6db |
children |
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 |
19898
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
17824
diff
changeset
|
3 Copyright (C) 2013-2015 John W. Eaton |
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
17824
diff
changeset
|
4 Copyright (C) 2011-2015 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 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
8 Octave is free software; you can redistribute it and/or modify it |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
9 under the terms of the GNU General Public License as published by the |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
10 Free Software Foundation; either version 3 of the License, or (at your |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
11 option) any later version. |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
12 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
13 Octave is distributed in the hope that it will be useful, but WITHOUT |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
16 for more details. |
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 |
359098ad343e
update copyright notices in libgui directory
John W. Eaton <jwe@octave.org>
parents:
15196
diff
changeset
|
20 <http://www.gnu.org/licenses/>. |
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 |
17822
ebb3ef964372
maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents:
17790
diff
changeset
|
24 #if !defined (octave_workspace_model_h) |
ebb3ef964372
maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents:
17790
diff
changeset
|
25 #define octave_workspace_model_h 1 |
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
|
26 |
16477
64727ed135cb
use QTableView instead of QTreeView to display workspace
John Donoghue <john.donoghue@ieee.org>
parents:
16468
diff
changeset
|
27 #include <QAbstractTableModel> |
14669
7605e7136b50
Discarded initFileEditor, instead put that in the constructor. Speedup for updating the symbol table by lowering complexity from n² to n. Fixed problem with hangup on quit.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14668
diff
changeset
|
28 #include <QVector> |
14671
f346343654a4
Settings readline event hook and fixed race condition.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14669
diff
changeset
|
29 #include <QSemaphore> |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
30 #include <QStringList> |
16610
a1f613e5066d
workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents:
16502
diff
changeset
|
31 #include <QChar> |
16641
64f9a3e301d3
don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents:
16610
diff
changeset
|
32 #include <QList> |
16610
a1f613e5066d
workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents:
16502
diff
changeset
|
33 #include <QColor> |
a1f613e5066d
workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents:
16502
diff
changeset
|
34 #include <QSettings> |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14719
diff
changeset
|
35 |
17824
86e8dbccf7c7
show when variables are complex in workspace view (bug #40445)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
36 // Defined for purposes of sending QList<int> as part of signal. |
86e8dbccf7c7
show when variables are complex in workspace view (bug #40445)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
37 typedef QList<int> QIntList; |
86e8dbccf7c7
show when variables are complex in workspace view (bug #40445)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
38 |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14719
diff
changeset
|
39 class workspace_model |
16477
64727ed135cb
use QTableView instead of QTreeView to display workspace
John Donoghue <john.donoghue@ieee.org>
parents:
16468
diff
changeset
|
40 : public QAbstractTableModel |
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
|
41 { |
664f54233c98
Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff
changeset
|
42 Q_OBJECT |
664f54233c98
Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff
changeset
|
43 |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
44 public: |
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
45 |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14719
diff
changeset
|
46 workspace_model (QObject *parent = 0); |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
47 |
16478
079ec7ce60e0
delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents:
16477
diff
changeset
|
48 ~workspace_model (void) { } |
14720
cecc7da96e2a
Added update events for the command history model and workspace model.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14719
diff
changeset
|
49 |
16641
64f9a3e301d3
don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents:
16610
diff
changeset
|
50 static QList<QColor> storage_class_default_colors (void); |
64f9a3e301d3
don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents:
16610
diff
changeset
|
51 |
64f9a3e301d3
don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents:
16610
diff
changeset
|
52 static QStringList storage_class_names (void); |
64f9a3e301d3
don't store default values in resource manager class
John W. Eaton <jwe@octave.org>
parents:
16610
diff
changeset
|
53 |
16478
079ec7ce60e0
delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents:
16477
diff
changeset
|
54 QVariant data (const QModelIndex& index, int role) const; |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
55 |
16502
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
56 bool setData (const QModelIndex& index, const QVariant& value, |
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
57 int role = Qt::EditRole); |
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
58 |
16478
079ec7ce60e0
delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents:
16477
diff
changeset
|
59 Qt::ItemFlags flags (const QModelIndex& index) const; |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
60 |
15045
1ffaad442161
Source code formatting (80-column lines, mostly whitespace changes)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14879
diff
changeset
|
61 QVariant headerData (int section, Qt::Orientation orientation, |
1ffaad442161
Source code formatting (80-column lines, mostly whitespace changes)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14879
diff
changeset
|
62 int role = Qt::DisplayRole) const; |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
63 |
16478
079ec7ce60e0
delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents:
16477
diff
changeset
|
64 int rowCount (const QModelIndex& parent = QModelIndex ()) const; |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
65 |
16478
079ec7ce60e0
delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents:
16477
diff
changeset
|
66 int columnCount (const QModelIndex& parent = QModelIndex ()) const; |
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
|
67 |
16502
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
68 bool is_top_level (void) const { return _top_level; } |
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
69 |
17790
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
70 QColor storage_class_color (int s_class) |
86c6ae5f969e
Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
71 { return _storage_class_colors.at (s_class); } |
16610
a1f613e5066d
workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents:
16502
diff
changeset
|
72 |
14671
f346343654a4
Settings readline event hook and fixed race condition.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14669
diff
changeset
|
73 public slots: |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
74 |
16502
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
75 void set_workspace (bool top_level, |
20179
f7846f0ea6db
GUI: enable workspace update when debugging (Bug #44455)
John Donoghue
parents:
19898
diff
changeset
|
76 bool debug, |
16502
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
77 const QString& scopes, |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
78 const QStringList& symbols, |
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
79 const QStringList& class_names, |
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
80 const QStringList& dimensions, |
17824
86e8dbccf7c7
show when variables are complex in workspace view (bug #40445)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
81 const QStringList& values, |
86e8dbccf7c7
show when variables are complex in workspace view (bug #40445)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
82 const QIntList& complex_flags); |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
83 |
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
84 void clear_workspace (void); |
14671
f346343654a4
Settings readline event hook and fixed race condition.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14669
diff
changeset
|
85 |
16610
a1f613e5066d
workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents:
16502
diff
changeset
|
86 void notice_settings (const QSettings *); |
a1f613e5066d
workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents:
16502
diff
changeset
|
87 |
14668
6a6733a55982
Removed unused classes and added octave loop hook.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
14664
diff
changeset
|
88 signals: |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
89 |
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
90 void model_changed (void); |
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
|
91 |
16502
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
92 void rename_variable (const QString& old_name, const QString& new_name); |
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
93 |
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
|
94 private: |
15402
7f423c6111c6
refactor GUI event handling to use new event_queue class
John W. Eaton <jwe@octave.org>
parents:
15388
diff
changeset
|
95 |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
96 void clear_data (void); |
16477
64727ed135cb
use QTableView instead of QTreeView to display workspace
John Donoghue <john.donoghue@ieee.org>
parents:
16468
diff
changeset
|
97 void update_table (void); |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
98 |
16502
45ae1038ee89
allow renaming of variables in workspace viewer
John W. Eaton <jwe@octave.org>
parents:
16478
diff
changeset
|
99 bool _top_level; |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
100 QString _scopes; |
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
101 QStringList _symbols; |
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
102 QStringList _class_names; |
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
103 QStringList _dimensions; |
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
104 QStringList _values; |
17824
86e8dbccf7c7
show when variables are complex in workspace view (bug #40445)
John W. Eaton <jwe@octave.org>
parents:
17822
diff
changeset
|
105 QIntList _complex_flags; |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16444
diff
changeset
|
106 |
16477
64727ed135cb
use QTableView instead of QTreeView to display workspace
John Donoghue <john.donoghue@ieee.org>
parents:
16468
diff
changeset
|
107 QStringList _columnNames; |
16610
a1f613e5066d
workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents:
16502
diff
changeset
|
108 |
a1f613e5066d
workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents:
16502
diff
changeset
|
109 QList<QColor> _storage_class_colors; |
a1f613e5066d
workspace view colors based upon variable scope (derived from Dan's patch #8013)
Torsten <ttl@justmail.de>
parents:
16502
diff
changeset
|
110 |
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 }; |
664f54233c98
Extracted model code from the WorkspaceView and rearranged it in a new model class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff
changeset
|
112 |
16478
079ec7ce60e0
delete useless connection; style fixes
John W. Eaton <jwe@octave.org>
parents:
16477
diff
changeset
|
113 #endif |