Mercurial > hg > octave-nkf
view libgui/src/workspace-model.h @ 15980:6c0fce0632a4
gui: set keyboard focus when switching between dock widgets (bug #36957)
* main-window.cc (handle_command_window_visible, handle_command_history_visible,
handle_current_directory_visible, handle_workspace_visible,
handle_editor_visible, handle_documentation_visible): slots for signal
visibilityChanged, emitted when widgets get visible
* main-window.cc (construct): connect signal visibilityChanged to slots
* main-window.cc (focus_editor): call editor's own function for setting focus
* main-window.h: declaration of new slots
* file-editor.cc (set_focus): new function: setting focus to actual editor tab
* file-editor.cc (add_file_editor_tab): connect signal fetab_set_focus to the
slot set_focus of file_editor_tab
* file-editor.h: new function set_focus and new signal fetab_set_focus
* file-editor-interface.h: new virtual function set_focus
* file-editor-tab.cc (set_focus): new slot for singal fetab_set_focus from
file_editor, setting the focus to edit area
* file-edtortab.h: new slot set_focus
author | Torsten <ttl@justmail.de> |
---|---|
date | Sat, 26 Jan 2013 20:33:46 +0100 |
parents | 7f423c6111c6 |
children | 0486a29d780f |
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" class tree_item { public: tree_item (const QList<QVariant> &d, tree_item *p = 0) { _parent_item = p; _item_data = d; } tree_item (QVariant d = QVariant(), tree_item *p = 0) { QList<QVariant> variantList; variantList << d << QVariant () << QVariant () << QVariant (); _parent_item = p; _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 d) { _item_data[column] = d; } tree_item *child (int r) { return _child_items[r]; } 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 { Q_OBJECT public: workspace_model (QObject *parent = 0); ~workspace_model (); 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: void update_workspace_callback (void); /** 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