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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-dock-widget.h	Wed Feb 06 21:45:04 2013 +0000
@@ -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