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