@@ -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 ()
0 commit comments