MIRA
ViewPart.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 by
3  * MetraLabs GmbH (MLAB), GERMANY
4  * and
5  * Neuroinformatics and Cognitive Robotics Labs (NICR) at TU Ilmenau, GERMANY
6  * All rights reserved.
7  *
8  * Contact: info@mira-project.org
9  *
10  * Commercial Usage:
11  * Licensees holding valid commercial licenses may use this file in
12  * accordance with the commercial license agreement provided with the
13  * software or, alternatively, in accordance with the terms contained in
14  * a written agreement between you and MLAB or NICR.
15  *
16  * GNU General Public License Usage:
17  * Alternatively, this file may be used under the terms of the GNU
18  * General Public License version 3.0 as published by the Free Software
19  * Foundation and appearing in the file LICENSE.GPL3 included in the
20  * packaging of this file. Please review the following information to
21  * ensure the GNU General Public License version 3.0 requirements will be
22  * met: http://www.gnu.org/copyleft/gpl.html.
23  * Alternatively you may (at your option) use any later version of the GNU
24  * General Public License if such license has been publicly approved by
25  * MLAB and NICR (or its successors, if any).
26  *
27  * IN NO EVENT SHALL "MLAB" OR "NICR" BE LIABLE TO ANY PARTY FOR DIRECT,
28  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
29  * THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF "MLAB" OR
30  * "NICR" HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * "MLAB" AND "NICR" SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
33  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
34  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
35  * ON AN "AS IS" BASIS, AND "MLAB" AND "NICR" HAVE NO OBLIGATION TO
36  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS.
37  */
38 
47 #ifndef _MIRA_VIEWPART_H_
48 #define _MIRA_VIEWPART_H_
49 
50 #include <rcp/WorkbenchPart.h>
51 
52 #include <QDockWidget>
53 
54 class QMenu;
55 class QToolButton;
56 
57 namespace mira {
58 
60 
61 class ViewPartTitleBar;
62 
69 class ViewPart : public QDockWidget, public WorkbenchPart
70 {
71  Q_OBJECT
73 public:
74  ViewPart();
75  virtual ~ViewPart();
76 
77 public:
78  virtual void init(IWorkbenchPartSite* site);
79 
81 
82 public: // overwritten from WorkbenchPart
83 
84  virtual void activate();
85  virtual void deactivate();
86 
87 public:
88 
95  virtual Qt::DockWidgetArea getDefaultDockArea() const;
96 
97 public:
98 
99  // overwrite QWidget::isVisible, to handle visibility of tabbified widgets correctly
100  bool isVisible() const;
101 
102 public:
103 
105  Qt::DockWidgetArea getDockArea() const;
106 
107 protected:
108 
114  virtual QWidget* createPartControl() = 0;
115 
116  virtual void focusInEvent(QFocusEvent*);
117  virtual void closeEvent(QCloseEvent*);
118 
125  QMenu* getViewMenu();
126 
129 
130  void paintEvent(QPaintEvent *event);
131 
132 signals:
133 
134  void viewClosed(ViewPart* view);
135  void viewDestroyed(ViewPart* view);
136  void viewActivated(ViewPart* view);
137 
138  void minimizedRequested(ViewPart* view);
139 
140  void currentDockLocationChanged(Qt::DockWidgetArea area);
141 
142 protected slots:
143 
144  virtual void onVisibilityChanged(bool visible);
145  void onMinimizeRequested();
146  void onDockLocationChanged(Qt::DockWidgetArea area);
147  void onTopLevelChanged(bool topLevel);
148 
149 protected:
150 
152 
153 private:
154  IWorkbenchPartSite* mSite;
155  bool mIsVisible;
156  Qt::DockWidgetArea mArea;
157 };
158 
160 
161 }
162 
163 #endif
void onDockLocationChanged(Qt::DockWidgetArea area)
virtual void closeEvent(QCloseEvent *)
void onTopLevelChanged(bool topLevel)
specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
Definition: IOService.h:67
IWorkbenchPartSite * getSite()
void viewClosed(ViewPart *view)
virtual QWidget * createPartControl()=0
Must be overloaded in subclasses to create the actual widget for this ViewPart.
virtual void deactivate()
Is called by the Workbench to inform the Part that is being deactivated since another Part got the fo...
void viewDestroyed(ViewPart *view)
A workbench part is a component within the workbench.
Definition: WorkbenchPart.h:117
void currentDockLocationChanged(Qt::DockWidgetArea area)
void paintEvent(QPaintEvent *event)
ViewPartTitleBar * mTitleBar
Definition: ViewPart.h:151
#define MIRA_ABSTRACT_OBJECT(classIdentifier)
Use this MACRO instead of MIRA_OBJECT to declare the class as abstract.
Definition: FactoryMacros.h:235
virtual void focusInEvent(QFocusEvent *)
A view is typically used to display information or properties.
Definition: ViewPart.h:69
bool isVisible() const
virtual void init(IWorkbenchPartSite *site)
Is called by the workbench.
void viewActivated(ViewPart *view)
virtual void onVisibilityChanged(bool visible)
QMenu * getViewMenu()
Returns the optional view menu that is shown when the user clicks the view menu tool button...
virtual void activate()
Is called by the Workbench to inform the Part that is being activated by the user.
The primary interface between a workbench part and the workbench.
Definition: WorkbenchPart.h:67
ViewPartTitleBar * getTitleBar()
Returns the title bar of this view part.
void minimizedRequested(ViewPart *view)
void onMinimizeRequested()
Qt::DockWidgetArea getDockArea() const
Returns the dock area, this view belongs to.
virtual Qt::DockWidgetArea getDefaultDockArea() const
Can be implemented by view implementations to provide a preferred default dock area that is assigned ...
Definition: ViewPartTitleBar.h:60
Declaration of WorkbenchPart and related interfaces.
virtual ~ViewPart()