Mercurial > hg > octave-lyh
diff libgui/src/octave-dock-widget.h @ 16057:c3057d80cf91
Created common octave_dock_widget class
* octave_dock_widget.h : New class octave_dock_widget with common dock widget
methods, slots and signals
* file_editor_interface.h: Now inherit from octave_dock_widget, removed common
dock widget code
* file_editor.h: Now inherit from octave_dock_widget, removed common
dock widget code
* file_editor.cc: Now inherit from octave_dock_widget, removed common
dock widget code
* files_dockwidget.h: Now inherit from octave_dock_widget, removed common
dock widget code
* files_dockwidget.cc: Now inherit from octave_dock_widget, removed common
dock widget code
* history_dockwidget.h: Now inherit from octave_dock_widget, removed common
dock widget code
* history_dockwidget.cc: Now inherit from octave_dock_widget, removed common
dock widget methods
* terminal_dockwidget.h: Now inherit from octave_dock_widget, removed common
dock widget code
* terminal_dockwidget.cc: Now inherit from octave_dock_widget, removed common
dock widget code
* module.mk: Added octave_dock_widget
author | Richard Crozier <richard.crozier@yahoo.co.uk> |
---|---|
date | Wed, 06 Feb 2013 21:45:04 +0000 |
parents | |
children | 045ce3896e3f |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/libgui/src/octave-dock-widget.h @@ -0,0 +1,81 @@ +/* + +Copyright (C) 2012-2013 Richard Crozier + +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 OCTAVEDOCKWIDGET_H +#define OCTAVEDOCKWIDGET_H + +#include <QDockWidget> +//#include <QMenu> +//#include <QToolBar> + +class octave_dock_widget : public QDockWidget +{ + Q_OBJECT + + public: + octave_dock_widget (QWidget *p) + : QDockWidget (p) + { + connect (this, SIGNAL (visibilityChanged (bool)), + this, SLOT (handle_visibility_changed (bool))); + + connect (this, SIGNAL (topLevelChanged(bool)), + this, SLOT(top_level_changed(bool))); + } + + virtual ~octave_dock_widget () { } + +signals: + /** Custom signal that tells if a user has clicked away + * that dock widget, i.e the active dock widget has + * changed. */ + virtual void active_changed (bool active); + +protected: + virtual void closeEvent (QCloseEvent *e) + { + emit active_changed (false); + QDockWidget::closeEvent (e); + } + +protected slots: + + /** Slot to steer changing visibility from outside. */ + virtual void handle_visibility_changed (bool visible) + { + if (visible) + emit active_changed (true); + } + + /** Slot when floating property changes */ + virtual void top_level_changed (bool floating) + { + if(floating) + { + setWindowFlags(Qt::Window); // make a window from the widget when floating + show(); // make it visible again since setWindowFlags hides it + } + } + +}; + +#endif // OCTAVEDOCKWIDGET_H