Mercurial > hg > octave-nkf
diff 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 |
line wrap: on
line diff
--- a/libgui/src/workspace-model.h +++ b/libgui/src/workspace-model.h @@ -1,5 +1,6 @@ /* +Copyright (C) 2013 John W. Eaton Copyright (C) 2011-2012 Jacob Dawid This file is part of Octave. @@ -20,15 +21,13 @@ */ -#ifndef WORKSPACEMODEL_H -#define WORKSPACEMODEL_H +#if !defined (workspace_model_h) +#define workspace_model_h 1 -// Qt includes #include <QAbstractItemModel> #include <QVector> #include <QSemaphore> - -#include "symbol-information.h" +#include <QStringList> class tree_item { @@ -114,35 +113,64 @@ { Q_OBJECT - public: +public: + workspace_model (QObject *parent = 0); - ~workspace_model (); + + ~workspace_model (void); QVariant data (const QModelIndex &index, int role) const; + Qt::ItemFlags flags (const QModelIndex &index) const; + QVariant headerData (int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + QModelIndex index (int row, int column, const QModelIndex &parent = QModelIndex ()) const; + QModelIndex parent (const QModelIndex &index) const; + int rowCount (const QModelIndex &parent = QModelIndex ()) const; + int columnCount (const QModelIndex &parent = QModelIndex ()) const; void insert_top_level_item (int at, tree_item *treeItem); + tree_item *top_level_item (int at); - void update_workspace_callback (void); - public slots: - void request_update_workspace (); + + void set_workspace (const QString& scopes, + const QStringList& symbols, + const QStringList& class_names, + const QStringList& dimensions, + const QStringList& values); + + void clear_workspace (void); signals: - void model_changed (); + + void model_changed (void); private: - /** Stores the current symbol information. */ - QList <symbol_information> _symbol_information; + void clear_data (void); + + void clear_tree (void); + + void update_tree (void); + + void append_tree (QChar scope, const QString& symbol, + const QString& class_name, const QString& dimension, + const QString& value); + + QString _scopes; + QStringList _symbols; + QStringList _class_names; + QStringList _dimensions; + QStringList _values; + tree_item *_rootItem; };