QCAD
Open Source 2D CAD
RMainWindowQt.h
Go to the documentation of this file.
1 
20 #ifndef RMAINWINDOWQT_H
21 #define RMAINWINDOWQT_H
22 
23 #include "gui_global.h"
24 
25 #include <QDockWidget>
26 #include <QMainWindow>
27 #include <QKeyEvent>
28 #include <QToolBar>
29 
30 #include "RCloseCurrentEvent.h"
31 #include "RMainWindow.h"
32 #include "RObject.h"
33 
34 class QMdiArea;
35 class QMdiSubWindow;
36 
37 class RBlockListener;
39 class RDocument;
40 class RDocumentInterface;
41 class RFocusListener;
42 class RGraphicsView;
43 class RKeyListener;
44 class RLayerListener;
45 class RMdiArea;
46 class RMdiChildQt;
48 class RPaletteListener;
49 class RPenListener;
51 class RPropertyListener;
52 class RSelectionListener;
53 class RSnapListener;
54 class RUcsListener;
55 class RViewFocusListener;
56 class RViewListener;
57 
65 class QCADGUI_EXPORT RMainWindowQt: public QMainWindow, public RMainWindow {
66 Q_OBJECT
67 
68 public:
69  RMainWindowQt(QWidget* parent = 0, bool hasMdiArea = true);
70  virtual ~RMainWindowQt();
71  static RMainWindowQt* getMainWindow();
72  virtual int getWidth();
73  virtual int getHeight();
74  virtual int getPositionX();
75  virtual int getPositionY();
76  virtual void resize(int width, int height);
77  virtual void move(int x, int y);
78  virtual void disable();
79  virtual void enable();
80  virtual RDocument* getDocument();
82 
83  virtual void handleUserMessage(const QString& message, bool escape = true);
84  virtual void handleUserInfo(const QString& message, bool escape = true);
85  virtual void handleUserWarning(const QString& message, bool messageBox = false, bool escape = true);
86  virtual void handleUserCommand(const QString& message, bool escape = true);
87 
88  virtual void postSelectionChangedEvent();
89  virtual void postTransactionEvent(
90  RTransaction& t,
91  bool onlyChanges=false,
92  RS::EntityType entityTypeFilter = RS::EntityAll
93  );
94  virtual void postPropertyEvent(RPropertyTypeId propertyTypeId,
95  const QVariant& value,
96  RS::EntityType entityTypeFilter = RS::EntityAll
97  );
98  virtual void postCloseEvent();
99 
100  RMdiChildQt* getMdiChild();
101  QTabBar* getTabBar();
102  RMdiArea* getMdiArea();
103 
104  virtual void cancelProgress();
105  virtual void setProgress(int value);
106  virtual void setProgressEnd();
107  virtual void setProgressText(const QString& text = "");
108 
109  virtual void setCommandPrompt(const QString& text = "");
110  virtual void setLeftMouseTip(const QString& text = "");
111  virtual void setRightMouseTip(const QString& text = "");
112 
113  virtual void showContextMenu(RObject::Id entityId, const RVector& pos);
114  virtual void escapeEvent();
115 
116  virtual void setGraphicsViewCursor(const QCursor& cursor);
117 
118  virtual bool readSettings();
119  virtual void writeSettings();
120 
121  virtual QMenu* createPopupMenu();
122 
123  virtual QWidget* getChildWidget(const QString& name);
124 
125  QList<QDockWidget*> getDockWidgets() {
126  return findChildren<QDockWidget*>();
127  }
128  QList<QToolBar*> getToolBars() {
129  return findChildren<QToolBar*>();
130  }
131 
132  void clearKeyLog();
133 
134  QString getKeyLog() const {
135  return keyLog;
136  }
137 
138 public slots:
139  void quit();
140  void currentTabChanged(int index);
141  void subWindowActivated(QMdiSubWindow* sw);
142  //void objectDestroyed(QObject *obj);
143 
144 signals:
148  void commandPrompt(const QString& text);
149 
153  void leftMouseTip(const QString& message);
154 
158  void rightMouseTip(const QString& message);
159 
160  void progress(int value);
161  void progressEnd();
162  void progressText(const QString& label);
164 
165  void userMessage(const QString& message, bool escape);
166  void userInfo(const QString& message, bool escape);
167  void userWarning(const QString& message, bool messageBox, bool escape);
168  void userCommand(const QString& message, bool escape);
169 
173  void contextMenu(int entityId, const RVector& pos);
174  void escape();
175  void drop(QDropEvent* event);
176  void dragEnter(QDragEnterEvent* event);
177 
178  void resumedTab(RMdiChildQt* mdiChild);
179 
181  void enterPressed();
182 
183  void toolBarContextMenu(QMenu* menu);
184 
185 protected:
186  virtual void closeEvent(QCloseEvent* e);
187  virtual void dropEvent(QDropEvent* event);
188  virtual void dragEnterEvent(QDragEnterEvent* event);
189 
190  virtual bool event(QEvent* e);
191 
192 protected slots:
193  void updateGuiActions(QMdiSubWindow* mdiChild = NULL);
194  void initGuiActions();
195  void updateScenes(QMdiSubWindow* mdiChild);
196  void notifyListenersSlot(QMdiSubWindow* mdiChild);
197  void suspendAndResume(QMdiSubWindow* mdiChild);
198 
199 protected:
201 
203 
204  QString keyLog;
205  QTime keyTimeOut;
206 
207 //private:
208 // bool objectWasDestroyed;
209 };
210 
212 
213 #endif
RProgressHandler::setProgressEnd
virtual void setProgressEnd()=0
RMainWindowQt::drop
void drop(QDropEvent *event)
RMainWindow::setCommandPrompt
virtual void setCommandPrompt(const QString &text="")=0
RPropertyListener
Abstract base class for classes that are interested in properties of the current selection or the cur...
Definition: RPropertyListener.h:43
RMainWindowQt::mdiArea
RMdiArea * mdiArea
Definition: RMainWindowQt.h:200
RMainWindow::handleUserCommand
virtual void handleUserCommand(const QString &message, bool escape=true)
Definition: RMainWindow.h:272
gui_global.h
RMainWindowQt::commandPrompt
void commandPrompt(const QString &text)
Emitted when the command prompt is requested to change.
RMainWindow::resize
virtual void resize(int width, int height)=0
Resizes the application window to the given width and height.
RMainWindow::escapeEvent
virtual void escapeEvent()=0
RMainWindowQt::enterPressed
void enterPressed()
RMainWindow::postSelectionChangedEvent
virtual void postSelectionChangedEvent()=0
RMdiArea
MDI area with tabbar that features add tab button.
Definition: RMdiArea.h:38
RMainWindowQt::userWarning
void userWarning(const QString &message, bool messageBox, bool escape)
RLayerListener
Abstract base class for classes that are interested in being notified whenever a layer has been added...
Definition: RLayerListener.h:39
RMainWindowQt::closeRequested
void closeRequested()
RBlockListener
Abstract base class for classes that are interested in being notified whenever a block has been added...
Definition: RBlockListener.h:37
RFocusListener
Abstract base class for classes that are interested in the current focus.
Definition: RFocusListener.h:36
RVector
Represents a 3d vector (x/y/z).
Definition: RVector.h:46
RMainWindow::setLeftMouseTip
virtual void setLeftMouseTip(const QString &text="")=0
RMainWindow::setGraphicsViewCursor
virtual void setGraphicsViewCursor(const QCursor &cursor)=0
Sets the cursor of all graphics views in all MDI children.
RMainWindow::enable
virtual void enable()
Definition: RMainWindow.h:89
RSnapListener
Abstract base class for classes that are interested in the current snap mode.
Definition: RSnapListener.h:39
RS::EntityType
EntityType
Entity types used for property handling / filtering.
Definition: RS.h:125
RMainWindow::handleUserMessage
virtual void handleUserMessage(const QString &message, bool escape=true)
Definition: RMainWindow.h:253
RProgressHandler::setProgress
virtual void setProgress(int value)=0
RMainWindow::quit
virtual void quit()=0
Closes the application window.
RMainWindowQt::keyLog
QString keyLog
Definition: RMainWindowQt.h:204
RMainWindowQt::contextMenu
void contextMenu(int entityId, const RVector &pos)
Emitted when a context menu is requested on top of the given entity.
RMainWindowQt
Base class for a Qt based MDI main application window.
Definition: RMainWindowQt.h:65
RPaletteListener
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RPaletteListener.h:33
RMainWindow::postCloseEvent
virtual void postCloseEvent()=0
RMainWindowQt::leftMouseTip
void leftMouseTip(const QString &message)
Emitted when the left mouse button tip is requested to change.
RMainWindowQt::keyTimeOut
QTime keyTimeOut
Definition: RMainWindowQt.h:205
RMainWindow::getMainWindow
static RMainWindow * getMainWindow()
Definition: RMainWindow.cpp:63
RPenListener
Abstract base class for classes that are interested in being notified whenever the current pen change...
Definition: RPenListener.h:37
RViewListener
Abstract base class for classes that are interested in being notified whenever a view has been added ...
Definition: RViewListener.h:37
RGraphicsView
Graphics view.
Definition: RGraphicsView.h:58
RMainWindowQt::progressEnd
void progressEnd()
RMainWindowQt::progressCanceled
void progressCanceled()
RMainWindowQt::getKeyLog
QString getKeyLog() const
Definition: RMainWindowQt.h:134
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(RMath *)
RMainWindow::disable
virtual void disable()
Definition: RMainWindow.h:88
RProgressHandler::setProgressText
virtual void setProgressText(const QString &text="")=0
RMainWindow::readSettings
virtual bool readSettings()
Restores the application window settings (size, position, ...).
Definition: RMainWindow.cpp:771
RMainWindowQt::userInfo
void userInfo(const QString &message, bool escape)
RMdiChildQt
MDI child window.
Definition: RMdiChildQt.h:41
RMainWindowQt::rightMouseTip
void rightMouseTip(const QString &message)
Emitted when the right mouse button tip is requested to change.
RMainWindowQt::progressText
void progressText(const QString &label)
RNewDocumentListener
Abstract base class for classes that are interested in being notified when a new document is created.
Definition: RNewDocumentListener.h:37
RMainWindowQt::getToolBars
QList< QToolBar * > getToolBars()
Definition: RMainWindowQt.h:128
RS::EntityAll
@ EntityAll
All entities (for filters)
Definition: RS.h:138
RMainWindow::getPositionY
virtual int getPositionY()=0
RPropertyTypeId
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RPropertyTypeId.h:59
RObject::Id
int Id
Definition: RObject.h:66
RMainWindowQt::getDockWidgets
QList< QDockWidget * > getDockWidgets()
Definition: RMainWindowQt.h:125
RMainWindow::handleUserInfo
virtual void handleUserInfo(const QString &message, bool escape=true)
Definition: RMainWindow.h:259
RMainWindow::getHeight
virtual int getHeight()=0
RMainWindowQt::userCommand
void userCommand(const QString &message, bool escape)
RMainWindowQt::toolBarContextMenu
void toolBarContextMenu(QMenu *menu)
RMainWindow::writeSettings
virtual void writeSettings()
Stores the application window settings (size, position, ...).
Definition: RMainWindow.cpp:805
RMainWindowQt::disableCounter
int disableCounter
Definition: RMainWindowQt.h:202
RDocument
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition: RDocument.h:72
RKeyListener
Abstract base class for classes that are interested in key events.
Definition: RKeyListener.h:33
RMainWindow.h
QCADGUI_EXPORT
#define QCADGUI_EXPORT
Definition: gui_global.h:10
RMainWindowQt::resumedTab
void resumedTab(RMdiChildQt *mdiChild)
RUcsListener
Abstract base class for classes that are interested in being notified whenever a UCS has been added o...
Definition: RUcsListener.h:36
RObject.h
RMainWindow::handleUserWarning
virtual void handleUserWarning(const QString &message, bool messageBox=false, bool escape=true)
Definition: RMainWindow.h:265
RViewFocusListener
Abstract base class for classes that are interested in the current view focus.
Definition: RViewFocusListener.h:36
RCloseCurrentEvent.h
RMainWindow::getPositionX
virtual int getPositionX()=0
RMainWindow::postPropertyEvent
virtual void postPropertyEvent(RPropertyTypeId propertyTypeId, const QVariant &value, RS::EntityType entityTypeFilter=RS::EntityAll)=0
RPreferencesListener
Abstract base class for classes that are interested in changes in drawing or application preferences.
Definition: RPreferencesListener.h:36
RMainWindow::getWidth
virtual int getWidth()=0
RMainWindowQt::userMessage
void userMessage(const QString &message, bool escape)
RTransaction
Transaction implementation.
Definition: RTransaction.h:74
RMainWindow
Base class for an MDI main application window.
Definition: RMainWindow.h:70
RMainWindow::postTransactionEvent
virtual void postTransactionEvent(RTransaction &t, bool onlyChanges=false, RS::EntityType entityTypeFilter=RS::EntityAll)=0
RMainWindow::getDocument
virtual RDocument * getDocument()=0
RMainWindow::setRightMouseTip
virtual void setRightMouseTip(const QString &text="")=0
RMainWindowQt::escape
void escape()
RDocumentInterface
Interface for interaction between a graphics document and a user.
Definition: RDocumentInterface.h:85
RMainWindow::getChildWidget
virtual QWidget * getChildWidget(const QString &name)=0
RCoordinateListener
Abstract base class for classes that are interested in the current coordinate of the mouse cursor.
Definition: RCoordinateListener.h:38
RMainWindow::move
virtual void move(int x, int y)=0
Moves the application window to the given x / y position.
RSelectionListener
Abstract base class for classes that are interested in the current selection and want to be notified ...
Definition: RSelectionListener.h:36
RMainWindowQt::progress
void progress(int value)
RMainWindow::getDocumentInterface
virtual RDocumentInterface * getDocumentInterface()=0
RMainWindowQt::dragEnter
void dragEnter(QDragEnterEvent *event)