Skip to content

Commit 9815ff3

Browse files
authored
Merge pull request #151 from hsorby/main
Add infrasturcture to handle dock widgets in plugins
2 parents 07f2049 + a141962 commit 9815ff3

3 files changed

Lines changed: 38 additions & 3 deletions

File tree

src/mapclient/view/mainwindow.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ def __init__(self, model):
5353
self._setup_menus()
5454
self.setMenuBar(self._menu_bar)
5555
self._make_connections()
56+
self._dynamic_actions = []
5657

5758
self._action_Annotation.setEnabled(False)
5859

@@ -85,6 +86,9 @@ def _setup_menus(self):
8586
self._menu_Help.setObjectName("menu_Help")
8687
self._menu_View = QtWidgets.QMenu(self._menu_bar)
8788
self._menu_View.setObjectName("menu_View")
89+
self._menu_DockWidgets = QtWidgets.QMenu(self._menu_View)
90+
self._menu_DockWidgets.setObjectName("menu_DockWidgets")
91+
self._menu_DockWidgets.setEnabled(False)
8892
self._menu_File = QtWidgets.QMenu(self._menu_bar)
8993
self._menu_File.setObjectName("menu_File")
9094
self._menu_Edit = QtWidgets.QMenu(self._menu_bar)
@@ -128,6 +132,8 @@ def _setup_menus(self):
128132
self._menu_View.addSeparator()
129133
self._menu_View.addAction(self._action_LogInformation)
130134
self._menu_View.addAction(self._action_Options)
135+
self._menu_View.addSeparator()
136+
self._menu_View.addMenu(self._menu_DockWidgets)
131137
self._menu_File.addSeparator()
132138
self._menu_File.addAction(self._action_Quit)
133139
self._menu_Tools.addAction(self._action_PluginFinder)
@@ -152,6 +158,7 @@ def _setup_menus(self):
152158
def _re_translate_ui(self):
153159
self._menu_Help.setTitle(QtWidgets.QApplication.translate("MainWindow", "&Help", None, -1))
154160
self._menu_View.setTitle(QtWidgets.QApplication.translate("MainWindow", "&View", None, -1))
161+
self._menu_DockWidgets.setTitle(QtWidgets.QApplication.translate("MainWindow", "&Dock Widgets", None, -1))
155162
self._menu_File.setTitle(QtWidgets.QApplication.translate("MainWindow", "&File", None, -1))
156163
self._menu_Edit.setTitle(QtWidgets.QApplication.translate("MainWindow", "&Edit", None, -1))
157164
self._menu_Workflow.setTitle(QtWidgets.QApplication.translate("MainWindow", "&Workflow", None, -1))
@@ -314,7 +321,23 @@ def set_workflow_direction(self, direction):
314321
def set_current_widget(self, widget):
315322
if self._ui.stackedWidget.indexOf(widget) <= 0:
316323
self._ui.stackedWidget.addWidget(widget)
324+
325+
self._menu_DockWidgets.setEnabled(False)
326+
for act in self._dynamic_actions:
327+
self._menu_DockWidgets.removeAction(act)
328+
self._dynamic_actions.clear()
329+
317330
self._ui.stackedWidget.setCurrentWidget(widget)
331+
docks = widget.findChildren(QtWidgets.QDockWidget)
332+
333+
for dock in docks:
334+
if not dock:
335+
continue
336+
337+
toggle_act = dock.toggleViewAction()
338+
self._menu_DockWidgets.addAction(toggle_act)
339+
self._dynamic_actions.append(toggle_act)
340+
self._menu_DockWidgets.setEnabled(True)
318341

319342
def current_widget(self):
320343
return self._ui.stackedWidget.currentWidget()

src/mapclient/view/qt/mainwindow.ui

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,14 @@
2323
<widget class="QWidget" name="centralwidget">
2424
<layout class="QHBoxLayout" name="horizontalLayout">
2525
<item>
26-
<widget class="QStackedWidget" name="stackedWidget"/>
26+
<widget class="QStackedWidget" name="stackedWidget">
27+
<property name="sizePolicy">
28+
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
29+
<horstretch>0</horstretch>
30+
<verstretch>0</verstretch>
31+
</sizepolicy>
32+
</property>
33+
</widget>
2734
</item>
2835
</layout>
2936
</widget>

src/mapclient/view/ui/ui_mainwindow.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
################################################################################
44
## Form generated from reading UI file 'mainwindow.ui'
55
##
6-
## Created by: Qt User Interface Compiler version 6.7.0
6+
## Created by: Qt User Interface Compiler version 6.8.1
77
##
88
## WARNING! All changes made in this file will be lost when recompiling UI file!
99
################################################################################
@@ -26,7 +26,7 @@ def setupUi(self, MainWindow):
2626
MainWindow.setObjectName(u"MainWindow")
2727
MainWindow.resize(800, 600)
2828
icon = QIcon()
29-
icon.addFile(u":/mapclient/images/icon-app.png", QSize(), QIcon.Normal, QIcon.Off)
29+
icon.addFile(u":/mapclient/images/icon-app.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
3030
MainWindow.setWindowIcon(icon)
3131
MainWindow.setLocale(QLocale(QLocale.English, QLocale.UnitedKingdom))
3232
self.action_About = QAction(MainWindow)
@@ -47,6 +47,11 @@ def setupUi(self, MainWindow):
4747
self.horizontalLayout.setObjectName(u"horizontalLayout")
4848
self.stackedWidget = QStackedWidget(self.centralwidget)
4949
self.stackedWidget.setObjectName(u"stackedWidget")
50+
sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
51+
sizePolicy.setHorizontalStretch(0)
52+
sizePolicy.setVerticalStretch(0)
53+
sizePolicy.setHeightForWidth(self.stackedWidget.sizePolicy().hasHeightForWidth())
54+
self.stackedWidget.setSizePolicy(sizePolicy)
5055

5156
self.horizontalLayout.addWidget(self.stackedWidget)
5257

0 commit comments

Comments
 (0)