Mercurial > hg > octave-nkf
comparison libgui/src/workspace-model.h @ 16468:0f143f68078d
use signal/slot for updating workspace instead of using event listener
* main-window.h, main-window.cc: Clean up list of include files.
(main_window::prepare_to_exit): Rename from prepare_to_quit. Change
all uses.
(main_window::update_workspace): Delete.
(main_window::construct): Don't connect
_octave_qt_event_listener:update_workspace_signal to
main_window::update_workspace.
(main_window::construct_octave_qt_link):
Connect _octave_qt_link::set_workspace_signal to
_workspace_model::set_workspace.
Connect _octave_qt_link::clear_workspace_signal to
_workspace_model::clear_workspace.
* symbol-information.h, symbol-information.cc: Delete
* libgui/src/module.mk (noinst_HEADERS, src_libgui_src_la_SOURCES):
Remove them from the lists.
* octave-qt-link.h, octave-qt-link.cc: Don't use symbol_information to
store workspace info.
(octave_qt_link::do_update_workspace): Delete.
(octave_qt_link::do_set_workspace,
octave_qt_link::do_clear_workspace): New functions.
(octave_qt_link::do_pre_input_event): Don't call do_update_workspace.
(octave_qt_link::set_workspace_signal,
octave_qt_link::clear_workspace_signal): New signals.
* workspace-model.h, workspace-model.cc: Don't use symbol_information
to store workspace info. Accept workspace info through a signal/slot
combination, not by asking the symbol table.
(workspace_model::request_update_workspace,
(workspace_model::update_workspace_callback): Delete.
(workspace_model::set_workspace, workspace_model::clear_workspace,
workspace_model::clear_data, workspace_model::clear_tree,
workspace_model::update_tree, workspace_model::append_tree):
New functions.
* workspace-view.h, workspace-view.cc (workspace_view::model_changed):
Don't call update_workspace_callback. The model now signals the view
when it has changed.
* input.cc (octave_base_reader::octave_gets, get_debug_input):
Call octave_link::set_workspace just prior to prompting for input.
* workspace-element.h: New file.
* libinterp/interpfcn/module.mk (INTERPFCN_INC): Include it in the list.
* octave-link.cc: Don't include symtab.h.
* octave-link.h (octave_link::update_workspace): Delete.
(octave_link::set_workspace, octave_link::do_set_workspace,
* octave_link::clear_workspace, octave_link::do_clear_workspace):
New functions.
* symtab.h, symtab.cc (symbol_table::workspace_info,
symbol_table::do_workspace_info): New functions.
* ov.h (octave_value::short_disp): New function.
* ov-base.h, ov-base.cc (octave_base_value::short_disp): New function.
* ov-base-scalar.h, ov-base-scalar.cc
(octave_base_scalar<ST>::short_disp): New function.
* ov-range.h, ov-range.cc (octave_range::short_disp): New function.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 08 Apr 2013 12:01:24 -0400 |
parents | 6cd66a5a76e8 |
children | 64727ed135cb |
comparison
equal
deleted
inserted
replaced
16467:cc9e2751e073 | 16468:0f143f68078d |
---|---|
1 /* | 1 /* |
2 | 2 |
3 Copyright (C) 2013 John W. Eaton | |
3 Copyright (C) 2011-2012 Jacob Dawid | 4 Copyright (C) 2011-2012 Jacob Dawid |
4 | 5 |
5 This file is part of Octave. | 6 This file is part of Octave. |
6 | 7 |
7 Octave is free software; you can redistribute it and/or modify it | 8 Octave is free software; you can redistribute it and/or modify it |
18 along with Octave; see the file COPYING. If not, see | 19 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | 20 <http://www.gnu.org/licenses/>. |
20 | 21 |
21 */ | 22 */ |
22 | 23 |
23 #ifndef WORKSPACEMODEL_H | 24 #if !defined (workspace_model_h) |
24 #define WORKSPACEMODEL_H | 25 #define workspace_model_h 1 |
25 | 26 |
26 // Qt includes | |
27 #include <QAbstractItemModel> | 27 #include <QAbstractItemModel> |
28 #include <QVector> | 28 #include <QVector> |
29 #include <QSemaphore> | 29 #include <QSemaphore> |
30 | 30 #include <QStringList> |
31 #include "symbol-information.h" | |
32 | 31 |
33 class tree_item | 32 class tree_item |
34 { | 33 { |
35 public: | 34 public: |
36 tree_item (const QList<QVariant> &d, tree_item *p = 0) { | 35 tree_item (const QList<QVariant> &d, tree_item *p = 0) { |
112 class workspace_model | 111 class workspace_model |
113 : public QAbstractItemModel | 112 : public QAbstractItemModel |
114 { | 113 { |
115 Q_OBJECT | 114 Q_OBJECT |
116 | 115 |
117 public: | 116 public: |
117 | |
118 workspace_model (QObject *parent = 0); | 118 workspace_model (QObject *parent = 0); |
119 ~workspace_model (); | 119 |
120 ~workspace_model (void); | |
120 | 121 |
121 QVariant data (const QModelIndex &index, int role) const; | 122 QVariant data (const QModelIndex &index, int role) const; |
123 | |
122 Qt::ItemFlags flags (const QModelIndex &index) const; | 124 Qt::ItemFlags flags (const QModelIndex &index) const; |
125 | |
123 QVariant headerData (int section, Qt::Orientation orientation, | 126 QVariant headerData (int section, Qt::Orientation orientation, |
124 int role = Qt::DisplayRole) const; | 127 int role = Qt::DisplayRole) const; |
128 | |
125 QModelIndex index (int row, int column, | 129 QModelIndex index (int row, int column, |
126 const QModelIndex &parent = QModelIndex ()) const; | 130 const QModelIndex &parent = QModelIndex ()) const; |
131 | |
127 QModelIndex parent (const QModelIndex &index) const; | 132 QModelIndex parent (const QModelIndex &index) const; |
133 | |
128 int rowCount (const QModelIndex &parent = QModelIndex ()) const; | 134 int rowCount (const QModelIndex &parent = QModelIndex ()) const; |
135 | |
129 int columnCount (const QModelIndex &parent = QModelIndex ()) const; | 136 int columnCount (const QModelIndex &parent = QModelIndex ()) const; |
130 | 137 |
131 void insert_top_level_item (int at, tree_item *treeItem); | 138 void insert_top_level_item (int at, tree_item *treeItem); |
139 | |
132 tree_item *top_level_item (int at); | 140 tree_item *top_level_item (int at); |
133 | 141 |
134 void update_workspace_callback (void); | 142 public slots: |
135 | 143 |
136 public slots: | 144 void set_workspace (const QString& scopes, |
137 void request_update_workspace (); | 145 const QStringList& symbols, |
146 const QStringList& class_names, | |
147 const QStringList& dimensions, | |
148 const QStringList& values); | |
149 | |
150 void clear_workspace (void); | |
138 | 151 |
139 signals: | 152 signals: |
140 void model_changed (); | 153 |
154 void model_changed (void); | |
141 | 155 |
142 private: | 156 private: |
143 | 157 |
144 /** Stores the current symbol information. */ | 158 void clear_data (void); |
145 QList <symbol_information> _symbol_information; | 159 |
160 void clear_tree (void); | |
161 | |
162 void update_tree (void); | |
163 | |
164 void append_tree (QChar scope, const QString& symbol, | |
165 const QString& class_name, const QString& dimension, | |
166 const QString& value); | |
167 | |
168 QString _scopes; | |
169 QStringList _symbols; | |
170 QStringList _class_names; | |
171 QStringList _dimensions; | |
172 QStringList _values; | |
173 | |
146 tree_item *_rootItem; | 174 tree_item *_rootItem; |
147 }; | 175 }; |
148 | 176 |
149 #endif // WORKSPACEMODEL_H | 177 #endif // WORKSPACEMODEL_H |