Mercurial > hg > octave-nkf
changeset 17824:86e8dbccf7c7
show when variables are complex in workspace view (bug #40445)
* octave-qt-link.h, octave-qt-link.cc
(octave_qt_link::do_set_workspace,
octave_qt_link::set_workspace_signal):
Pass complex info in set_workspace_signal.
* main-window.cc (main_window::construct_octave_qt_link): Update
set_workspace_signal signal to set_workspace slot connection.
* workspace-model.h, workspace-model.cc (workspace_model::data):
Display whether variables are complex in "Storage Class" column.
(workspace_model::_complex_flags): New data member.
(workspace_model::set_workspace): Store _complex_flags.
(workspace_model::clear_data): Clear _complex_flags.
* workspace-element.h (workspace_element::xcomplex_flags):
New data member.
* symtab.cc (symbol_table::do_workspace_info):
Also stash complex flag.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 01 Nov 2013 14:30:47 -0400 |
parents | eaf5c3ef3e8d |
children | 53f433bae63b |
files | libgui/src/main-window.cc libgui/src/octave-qt-link.cc libgui/src/octave-qt-link.h libgui/src/workspace-model.cc libgui/src/workspace-model.h libinterp/corefcn/symtab.cc libinterp/corefcn/workspace-element.h |
diffstat | 7 files changed, 31 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -987,12 +987,12 @@ SIGNAL (set_workspace_signal (bool, const QString&, const QStringList&, const QStringList&, const QStringList&, - const QStringList&)), + const QStringList&, const QIntList&)), _workspace_model, SLOT (set_workspace (bool, const QString&, const QStringList&, const QStringList&, const QStringList&, - const QStringList&))); + const QStringList&, const QIntList&))); connect (_octave_qt_link, SIGNAL (clear_workspace_signal ()), _workspace_model, SLOT (clear_workspace ()));
--- a/libgui/src/octave-qt-link.cc +++ b/libgui/src/octave-qt-link.cc @@ -325,6 +325,7 @@ QStringList class_names; QStringList dimensions; QStringList values; + QIntList complex_flags; for (std::list<workspace_element>::const_iterator it = ws.begin (); it != ws.end (); it++) @@ -334,10 +335,11 @@ class_names.append (QString::fromStdString (it->class_name ())); dimensions.append (QString::fromStdString (it->dimension ())); values.append (QString::fromStdString (it->value ())); + complex_flags.append (it->complex_flag ()); } emit set_workspace_signal (top_level, scopes, symbols, class_names, - dimensions, values); + dimensions, values, complex_flags); } void
--- a/libgui/src/octave-qt-link.h +++ b/libgui/src/octave-qt-link.h @@ -35,6 +35,9 @@ #include "octave-link.h" #include "octave-main-thread.h" +// Defined for purposes of sending QList<int> as part of signal. +typedef QList<int> QIntList; + // \class OctaveLink // \brief Provides threadsafe access to octave. // \author Jacob Dawid @@ -153,7 +156,8 @@ const QStringList& symbols, const QStringList& class_names, const QStringList& dimensions, - const QStringList& values); + const QStringList& values, + const QIntList& complex_flags); void clear_workspace_signal (void);
--- a/libgui/src/workspace-model.cc +++ b/libgui/src/workspace-model.cc @@ -166,16 +166,7 @@ break; case 4: - retval = QVariant (); - QString class_chars = resource_manager::storage_class_chars (); - int actual_class - = class_chars.indexOf (_scopes[idx.row ()].toAscii ()); - if (actual_class >= 0) - { - QStringList class_names - = resource_manager::storage_class_names (); - retval = QVariant (class_names.at (actual_class)); - } + retval = QVariant (_complex_flags[idx.row ()] ? "complex" : ""); break; } @@ -217,7 +208,8 @@ const QStringList& symbols, const QStringList& class_names, const QStringList& dimensions, - const QStringList& values) + const QStringList& values, + const QIntList& complex_flags) { _top_level = top_level; _scopes = scopes; @@ -225,6 +217,7 @@ _class_names = class_names; _dimensions = dimensions; _values = values; + _complex_flags = complex_flags; update_table (); @@ -249,6 +242,7 @@ _class_names = QStringList (); _dimensions = QStringList (); _values = QStringList (); + _complex_flags = QIntList (); } void
--- a/libgui/src/workspace-model.h +++ b/libgui/src/workspace-model.h @@ -33,6 +33,9 @@ #include <QColor> #include <QSettings> +// Defined for purposes of sending QList<int> as part of signal. +typedef QList<int> QIntList; + class workspace_model : public QAbstractTableModel { @@ -74,7 +77,8 @@ const QStringList& symbols, const QStringList& class_names, const QStringList& dimensions, - const QStringList& values); + const QStringList& values, + const QIntList& complex_flags); void clear_workspace (void); @@ -97,6 +101,7 @@ QStringList _class_names; QStringList _dimensions; QStringList _values; + QIntList _complex_flags; QStringList _columnNames;
--- a/libinterp/corefcn/symtab.cc +++ b/libinterp/corefcn/symtab.cc @@ -1419,7 +1419,8 @@ storage = 'i'; workspace_element elt (storage, nm, val.class_name (), - val.short_disp (), dv.str ()); + val.short_disp (), dv.str (), + val.is_complex_type ()); retval.push_back (elt); }
--- a/libinterp/corefcn/workspace-element.h +++ b/libinterp/corefcn/workspace-element.h @@ -33,16 +33,17 @@ const std::string& symbol_arg = "<name>", const std::string& class_name_arg = "<class>", const std::string& value_arg = "<value>", - const std::string& dimension_arg = "<dimension>") + const std::string& dimension_arg = "<dimension>", + bool complex_flag_arg = false) : xscope (scope_arg), xsymbol (symbol_arg), xclass_name (class_name_arg), xvalue (value_arg), - xdimension (dimension_arg) + xdimension (dimension_arg), xcomplex_flag (complex_flag_arg) { } workspace_element (const workspace_element& ws_elt) : xscope (ws_elt.xscope), xsymbol (ws_elt.xsymbol), xclass_name (ws_elt.xclass_name), xvalue (ws_elt.xvalue), - xdimension (ws_elt.xdimension) + xdimension (ws_elt.xdimension), xcomplex_flag (ws_elt.xcomplex_flag) { } workspace_element operator = (const workspace_element& ws_elt) @@ -54,6 +55,7 @@ xclass_name = ws_elt.xclass_name; xvalue = ws_elt.xvalue; xdimension = ws_elt.xdimension; + xcomplex_flag = ws_elt.xcomplex_flag; } return *this; @@ -71,6 +73,8 @@ std::string dimension (void) const { return xdimension; } + bool complex_flag (void) const { return xcomplex_flag; } + private: // [g]lobal, [p]ersistent, [l]ocal @@ -79,6 +83,7 @@ std::string xclass_name; std::string xvalue; std::string xdimension; + bool xcomplex_flag; }; #endif