23 #ifndef ABSTRACTDOCKWIDGET_H 24 #define ABSTRACTDOCKWIDGET_H 26 #include "../global.h" 27 #include "../common/sharedStructures.h" 29 #include <qmainwindow.h> 30 #include <qdockwidget.h> 38 #include <qshortcut.h> 50 Q_PROPERTY(
bool visible READ isVisible WRITE setVisible DESIGNABLE
false)
51 Q_PROPERTY(
bool enabled READ isEnabled WRITE setEnabled)
53 Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry)
54 Q_PROPERTY(QRect frameGeometry READ frameGeometry)
55 Q_PROPERTY(QRect normalGeometry READ normalGeometry)
56 Q_PROPERTY(
int x READ x)
57 Q_PROPERTY(
int y READ y)
58 Q_PROPERTY(QPoint pos READ pos WRITE move DESIGNABLE
false STORED
false)
59 Q_PROPERTY(QSize frameSize READ frameSize)
60 Q_PROPERTY(QSize size READ size WRITE resize DESIGNABLE
false STORED
false)
61 Q_PROPERTY(
int width READ width)
62 Q_PROPERTY(
int height READ height)
63 Q_PROPERTY(QRect rect READ rect)
64 Q_PROPERTY(QRect childrenRect READ childrenRect)
65 Q_PROPERTY(QRegion childrenRegion READ childrenRegion)
66 Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle)
70 enum tFloatingStyle { floatingNone, floatingStandard, floatingWindow };
71 enum tMovingStyle { movingDisabled, movingEnabled };
72 enum tTopLevelStyle { topLevelOverall, topLevelParentOnly, topLevelNothing };
76 Toolbar() : section(0), key(
""), tb(NULL) {}
83 AbstractDockWidget(
bool docked,
bool isDockAvailable, tFloatingStyle floatingStyle, tMovingStyle movingStyle,
const QString &title = QString(),
const QString &objName = QString(), QWidget *parent = 0);
90 RetVal setTopLevel( tTopLevelStyle topLevel );
92 void setParent ( QWidget * parent ) {
m_overallParent = parent; QDockWidget::setParent(parent); }
94 QWidget *getActiveInstance()
104 #define QWIDGETPROPGETTER(gettername) if(m_docked && m_dockAvailable) { return QDockWidget::gettername(); } else { return m_pWindow->gettername(); } 106 #define QWIDGETPROPSETTER(settername,...) \ 109 QDockWidget::settername(__VA_ARGS__); \ 113 if (m_floatingStyle == floatingWindow) \ 115 m_pWindow->settername(__VA_ARGS__); \ 116 QDockWidget::settername(__VA_ARGS__); \ 120 QDockWidget::settername(__VA_ARGS__); \ 124 #define QWIDGETPROPSETTERSPECIAL(settername,...) \ 127 QDockWidget::settername(__VA_ARGS__); \ 131 if (m_floatingStyle == floatingWindow) \ 133 m_pWindow->settername(__VA_ARGS__); \ 137 QDockWidget::settername(__VA_ARGS__); \ 141 QRect frameGeometry()
const;
142 const QRect &geometry()
const;
143 QRect normalGeometry()
const;
148 QSize frameSize()
const;
153 QRect childrenRect()
const;
154 QRegion childrenRegion()
const;
156 void move(
int x,
int y);
157 void move(
const QPoint &);
158 void resize(
int w,
int h);
159 void resize(
const QSize &);
160 void setGeometry(
int x,
int y,
int w,
int h);
161 void setGeometry(
const QRect &);
163 QString windowTitle();
164 void setWindowTitle(
const QString &title);
166 bool isEnabled()
const;
167 bool isVisible()
const;
169 void saveState(
const QString &iniName)
const;
170 void restoreState(
const QString &iniName);
174 virtual QSize sizeHint()
const;
175 virtual QSize minimumSizeHint()
const;
178 void setEnabled(
bool);
179 virtual void setVisible(
bool visible);
188 m_action =
new QAction(text, parent);
189 QString toolTipText = text;
190 toolTipText.replace(
"&",
"");
191 m_action->setToolTip(toolTipText);
196 m_action =
new QAction(icon, text, parent);
197 QString toolTipText = text;
198 toolTipText.replace(
"&",
"");
199 m_action->setToolTip(toolTipText);
202 ShortcutAction(
const QIcon &icon,
const QString &text,
AbstractDockWidget *parent,
const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut) : QObject(parent), m_action(NULL), m_shortcut(NULL)
204 QString text2 = text;
205 QString text3 = text;
206 text3.replace(
"&",
"");
209 if (key.isEmpty() ==
false)
211 text2 +=
"\t" + key.toString(QKeySequence::NativeText);
212 text3 +=
" (" + key.toString(QKeySequence::NativeText) +
")";
214 m_shortcut =
new QShortcut(key, parent->getCanvas());
215 m_shortcut->setContext(context);
218 m_action =
new QAction(icon, text2, parent);
219 m_action->setToolTip(text3);
227 void connectTrigger(
const QObject *receiver,
const char *method, Qt::ConnectionType type = Qt::AutoConnection)
231 QObject::connect(m_action, SIGNAL(triggered()), receiver, method, type);
235 QObject::connect(m_shortcut, SIGNAL(activated()), receiver, method, type);
239 void setEnabled(
bool actionEnabled,
bool shortcutEnabled)
243 m_action->setEnabled(actionEnabled);
244 if(m_shortcut) m_shortcut->setEnabled(shortcutEnabled);
248 void setEnabled(
bool enabled)
250 setEnabled(enabled,enabled);
253 void setVisible(
bool actionVisible,
bool shortcutEnabled)
257 m_action->setVisible(actionVisible);
258 if(m_shortcut) m_shortcut->setEnabled(shortcutEnabled);
262 void setVisible(
bool visible)
264 setVisible(visible,visible);
267 QAction* action() {
return m_action; }
271 QShortcut *m_shortcut;
283 if (event->type() == QEvent::Close)
286 if(testAttribute(Qt::WA_DeleteOnClose) && event->isAccepted() )
295 return QObject::eventFilter(obj,event);
303 virtual void createActions() = 0;
304 virtual void createMenus() = 0;
305 virtual void createToolBars() = 0;
306 virtual void createStatusBar() = 0;
307 virtual void updateActions() {}
308 virtual void updatePythonActions() = 0;
310 Qt::WindowFlags modifyFlags(
const Qt::WindowFlags &flags,
const Qt::WindowFlags &setFlags,
const Qt::WindowFlags &unsetFlags);
312 virtual void windowStateChanged(
bool ) {}
316 inline QMainWindow* getCanvas() {
return m_pWindow; }
325 inline QMenuBar* getMenuBar()
const {
return (m_pWindow == NULL) ? NULL : m_pWindow->menuBar(); }
327 RetVal addToolBar(QToolBar *tb,
const QString &key, Qt::ToolBarArea area = Qt::TopToolBarArea,
int section = 1);
328 RetVal removeToolBar(
const QString &key);
330 QAction *m_actStayOnTop;
331 QAction *m_actStayOnTopOfApp;
335 void contextMenuEvent(QContextMenuEvent *e)
338 qDebug() <<
"context menu of abstractDockWidget clicked. [placeholder for (un)docking feature.] pos: " << e->pos();
341 QMainWindow *m_pWindow;
351 QList<Toolbar> m_toolbars;
357 QToolBar* m_dockToolbar;
359 QAction* m_actUndock;
362 tTopLevelStyle m_recentTopLevelStyle;
366 QRect m_lastUndockedSize;
367 QByteArray m_pendingGeometryState;
376 void setDockSize(
int newWidth,
int newHeight);
382 void mnuStayOnTop(
bool checked);
383 void mnuStayOnTopOfApp(
bool checked);
385 void returnToOldMinMaxSizes();
Class for managing status values (like errors or warning)
Definition: retVal.h:54
Definition: apiFunctionsGraph.cpp:39