Mercurial > octave
view libgui/src/workspace-model.h @ 15367:501a9cc2c68f
maint: whitespace cleanup in GUI code
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Wed, 12 Sep 2012 16:34:39 -0400 |
parents | 359098ad343e |
children | 36ececf69385 |
line wrap: on
line source
/* Copyright (C) 2011-2012 Jacob Dawid This file is part of Octave. Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. */ #ifndef WORKSPACEMODEL_H #define WORKSPACEMODEL_H // Qt includes #include <QAbstractItemModel> #include <QVector> #include <QSemaphore> #include <QTimer> #include "symbol-information.h" #include "octave-event-observer.h" class tree_item { public: tree_item (const QList<QVariant> &data, tree_item *parent = 0) { _parent_item = parent; _item_data = data; } tree_item (QVariant data = QVariant(), tree_item *parent = 0) { QList<QVariant> variantList; variantList << data << QVariant () << QVariant () << QVariant (); _parent_item = parent; _item_data = variantList; } ~tree_item () { qDeleteAll (_child_items); } void insert_child_item (int at, tree_item *item) { item->_parent_item = this; _child_items.insert (at, item); } void add_child (tree_item *item) { item->_parent_item = this; _child_items.append (item); } void delete_child_items () { qDeleteAll (_child_items); _child_items.clear (); } void remove_child (tree_item *item) { _child_items.removeAll (item); } QVariant data (int column) const { return _item_data[column]; } void set_data (int column, QVariant data) { _item_data[column] = data; } tree_item *child (int row) { return _child_items[row]; } int child_count () const { return _child_items.count(); } int column_count () const { return _item_data.count(); } int row () const { if (_parent_item) return _parent_item->_child_items.indexOf (const_cast<tree_item*>(this)); return 0; } tree_item *parent () { return _parent_item; } private: QList<tree_item*> _child_items; QList<QVariant> _item_data; tree_item *_parent_item; }; class workspace_model : public QAbstractItemModel, public octave_event_observer { Q_OBJECT public: workspace_model (QObject *parent = 0); ~workspace_model (); void event_accepted (octave_event *e); void event_reject (octave_event *e); 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); public slots: void request_update_workspace (); signals: void model_changed (); private: /** Timer for periodically updating the workspace model from the current * symbol information. */ QTimer _update_workspace_model_timer; /** Stores the current symbol information. */ QList <symbol_information> _symbol_information; tree_item *_rootItem; }; #endif // WORKSPACEMODEL_H