Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qdesigner_workbench.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3// Qt-Security score:significant reason:default
4
5#ifndef QDESIGNER_WORKBENCH_H
6#define QDESIGNER_WORKBENCH_H
7
9
10#include <QtCore/qhash.h>
11#include <QtCore/qlist.h>
12#include <QtCore/qobject.h>
13#include <QtCore/qpointer.h>
14#include <QtCore/qrect.h>
15#include <QtCore/qset.h>
16
18
24
25class QAction;
26class QActionGroup;
27class QDockWidget;
28class QMenu;
29class QMenuBar;
30class QToolBar;
31class QMdiSubWindow;
32class QCloseEvent;
33class QScreen;
34class ToolBarManager;
35
36class QDesignerFormEditorInterface;
37class QDesignerFormWindowInterface;
38class QDesignerFormWindowManagerInterface;
39class QDesignerIntegration;
40
41struct Options;
42
44{
46
47public:
48 explicit QDesignerWorkbench(const Options &options);
50
51 UIMode mode() const;
52
53 QDesignerFormEditorInterface *core() const;
54 QDesignerFormWindow *findFormWindow(QWidget *widget) const;
55
56 QDesignerFormWindow *openForm(const QString &fileName, QString *errorMessage);
57 QDesignerFormWindow *openTemplate(const QString &templateFileName,
58 const QString &editorFileName,
59 QString *errorMessage);
60
61 int toolWindowCount() const;
62 QDesignerToolWindow *toolWindow(int index) const;
63
64 int formWindowCount() const;
65 QDesignerFormWindow *formWindow(int index) const;
66
68
69 QActionGroup *modeActionGroup() const;
70
71 bool readInForm(const QString &fileName) const;
72 bool writeOutForm(QDesignerFormWindowInterface *formWindow, const QString &fileName) const;
73 bool saveForm(QDesignerFormWindowInterface *fw);
74 bool handleClose();
75 bool readInBackup();
76 void updateBackup(QDesignerFormWindowInterface* fwi);
77 void applyUiSettings();
78
79 bool suppressNewFormShow() const { return m_suppressNewFormShow; }
80 void setSuppressNewFormShow(bool v) { m_suppressNewFormShow = v; }
81
85
86public slots:
88 void removeFormWindow(QDesignerFormWindow *formWindow);
89 void bringAllToFront();
91 void showNewForm();
92 void requestActivate();
93
94private slots:
96 void switchToDockedMode();
97 void switchToTopLevelMode();
98 void initializeCorePlugins();
99 void handleCloseEvent(QCloseEvent *);
100 void slotFormWindowActivated(QDesignerFormWindow* fw);
101 void updateWindowMenu(QDesignerFormWindowInterface *fw);
102 void formWindowActionTriggered(QAction *a);
103 void adjustMDIFormPositions();
104 void minimizationStateChanged(QDesignerFormWindowInterface *formWindow, bool minimized);
105
106 void restoreUISettings();
107 void notifyUISettingsChanged();
108 void slotFileDropped(const QString &f);
109
110private:
111 QScreen *screen() const;
112 QRect availableFormGeometry() const;
113 QWidget *magicalParent(const QWidget *w) const;
114 Qt::WindowFlags magicalWindowFlags(const QWidget *widgetForFlags) const;
115 QDesignerFormWindowManagerInterface *formWindowManager() const;
116 void closeAllToolWindows();
117 QDesignerToolWindow *widgetBoxToolWindow() const;
118 QDesignerFormWindow *loadForm(const QString &fileName, bool detectLineTermiantorMode, QString *errorMessage);
119 void resizeForm(QDesignerFormWindow *fw, const QWidget *mainContainer) const;
120 void saveGeometriesForModeChange();
121 void saveGeometries(QDesignerSettings &settings) const;
122
123 bool isFormWindowMinimized(const QDesignerFormWindow *fw);
124 void setFormWindowMinimized(QDesignerFormWindow *fw, bool minimized);
125 void saveSettings() const;
126
127 QDesignerFormEditorInterface *m_core;
128 QDesignerIntegration *m_integration;
129
130 QDesignerActions *m_actionManager;
131 QActionGroup *m_windowActions;
132
133 QMenu *m_windowMenu;
134
135 QPointer<QMenuBar> m_globalMenuBar;
136
137 struct TopLevelData {
138 ToolBarManager *toolbarManager;
139 QList<QToolBar *> toolbars;
140 };
141 TopLevelData m_topLevelData;
142
143 UIMode m_mode = NeutralMode;
144 QPointer<DockedMainWindow> m_dockedMainWindow;
145
146 QList<QDesignerToolWindow *> m_toolWindows;
147 QList<QDesignerFormWindow *> m_formWindows;
148
149 QMenu *m_toolbarMenu;
150
151 // Helper class to remember the position of a window while switching user
152 // interface modes.
153 class Position {
154 public:
155 explicit Position(const QDockWidget *dockWidget);
156 explicit Position(const QMdiSubWindow *mdiSubWindow);
157 explicit Position(const QWidget *topLevelWindow);
158
159 void applyTo(QMdiSubWindow *mdiSubWindow, const QPoint &mdiAreaOffset) const;
160 void applyTo(QWidget *topLevelWindow, const QPoint &desktopTopLeft) const;
161 void applyTo(QDockWidget *dockWidget) const;
162
163 QPoint position() const { return m_position; }
164 private:
165 bool m_minimized;
166 // Position referring to top-left corner (desktop in top-level mode or
167 // main window in MDI mode)
168 QPoint m_position;
169 };
171 PositionMap m_Positions;
172
173 enum State { StateInitializing, StateUp, StateClosing };
174 State m_state = StateInitializing;
175 bool m_uiSettingsChanged = false; // UI mode changed in preference dialog, trigger delayed slot.
176 bool m_suppressNewFormShow = false;
177};
178
179QT_END_NAMESPACE
180
181#endif // QDESIGNER_WORKBENCH_H
void restoreSettings(const QDesignerSettings &s, const DockWidgetList &dws, const QRect &desktopArea)
DockedMainWindow(QDesignerWorkbench *wb, QMenu *toolBarMenu, const DesignerToolWindowList &toolWindows)
DockWidgetList addToolWindows(const DesignerToolWindowList &toolWindows)
void saveSettings(QDesignerSettings &) const
QMdiSubWindow * createMdiSubWindow(QWidget *fw, Qt::WindowFlags f, const QKeySequence &designerCloseActionShortCut)
QMdiArea * mdiArea() const
void formWindowActivated(QDesignerFormWindow *)
bool event(QEvent *event) override
static QString mainWindowTitle()
CloseEventPolicy closeEventPolicy() const
Definition mainwindow.h:47
void closeEvent(QCloseEvent *e) override
This event handler is called with the given event when Qt receives a window close request for a top-l...
static int settingsVersion()
static QList< QToolBar * > createToolBars(const QDesignerActions *actions, bool singleToolBar)
void setCloseEventPolicy(CloseEventPolicy pol)
Definition mainwindow.h:48
QActionGroup * helpActions() const
QActionGroup * fileActions() const
QActionGroup * settingsActions() const
QAction * minimizeAction() const
QActionGroup * styleActions() const
QMap< QString, QString > pendingBackups() const
QActionGroup * editActions() const
QActionGroup * uiMode() const
QString uiExtension() const
QActionGroup * formActions() const
bool openForm(QWidget *parent)
QDesignerFormEditorInterface * core() const
QActionGroup * toolActions() const
QAction * previewFormAction() const
QActionGroup * windowActions() const
QAction * closeFormAction() const
void setWindowListSeparatorVisible(bool visible)
bool saveForm(QDesignerFormWindowInterface *fw)
QAction * editWidgets() const
QAction * openFormAction() const
QAction * viewCodeAction() const
QDesignerWorkbench * workbench() const
static const char * defaultToolbarPropertyName
void setBringAllToFrontVisible(bool visible)
QActionGroup * recentFilesActions() const
QStringList recentFilesList() const
void setToolWindowFont(const ToolWindowFontSettings &fontSettings)
void setShowNewFormOnStartup(bool showIt)
void setToolBarsState(UIMode mode, const QByteArray &mainWindowState)
void setMainWindowState(UIMode mode, const QByteArray &mainWindowState)
void setUiMode(UIMode mode)
void setBackup(const QMap< QString, QString > &map)
void restoreGeometry(QWidget *w, QRect fallBack=QRect()) const
QByteArray mainWindowState(UIMode mode) const
QDesignerSettings(QDesignerFormEditorInterface *core)
QMap< QString, QString > backup() const
QByteArray toolBarsState(UIMode mode) const
void setRecentFilesList(const QStringList &list)
ToolWindowFontSettings toolWindowFont() const
void saveGeometryFor(const QWidget *w)
bool showNewFormOnStartup() const
QDesignerActions * actionManager() const
QActionGroup * modeActionGroup() const
QDesignerToolWindow * toolWindow(int index) const
bool saveForm(QDesignerFormWindowInterface *fw)
QDesignerFormEditorInterface * core() const
void setSuppressNewFormShow(bool v)
bool suppressNewFormShow() const
QDesignerFormWindow * formWindow(int index) const
void removeFormWindow(QDesignerFormWindow *formWindow)
void updateBackup(QDesignerFormWindowInterface *fwi)
friend class QWidget
Definition qpainter.h:432
The QtToolBarDialog class provides a dialog for customizing toolbars.
void setToolBarManager(QtToolBarManager *toolBarManager)
Connects the toolbar dialog to the given toolBarManager.
The QtToolBarManager class provides toolbar management for main windows.
QByteArray saveState(int version=0) const
Saves the state of the toolbar manager's toolbars.
void addAction(QAction *action, const QString &category)
Adds the given action to the given category in the manager's list of actions.
bool restoreState(const QByteArray &state, int version=0)
Restores the saved state of the toolbar manager's toolbars.
void setMainWindow(QMainWindow *mainWindow)
Sets the main window upon which the toolbar manager operates, to be the given mainWindow.
QByteArray saveState(int version=0) const
bool restoreState(const QByteArray &state, int version=0)
Combined button and popup list for selecting options.
Auxiliary methods to store/retrieve settings.
#define qDesigner
Definition qdesigner.h:20
static void addActionsToToolBar(const ActionList &actions, QToolBar *t)
static void addActionsToToolBarManager(const ActionList &al, const QString &title, QtToolBarManager *tbm)
static QToolBar * createToolBar(const QString &title, const QString &objectName, const ActionList &actions)
bool toolBarTitleLessThan(const QToolBar *t1, const QToolBar *t2)
#define QDESIGNER_SHARED_EXPORT
#define QDESIGNER_SHARED_IMPORT