From a76980a1a969178d716984c926592d2baff9b6cb Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 11 Dec 2020 10:48:58 +0100 Subject: [PATCH] always create services menu but hide it until any action is added --- pype/modules/base.py | 27 ++++++++++++++++----------- pype/tools/tray/pype_tray.py | 5 ++--- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/pype/modules/base.py b/pype/modules/base.py index cd8ab6978c..d02c49ccc5 100644 --- a/pype/modules/base.py +++ b/pype/modules/base.py @@ -144,12 +144,19 @@ class ITrayService(ITrayModule): # pass @staticmethod - def services_submenu(): + def services_submenu(tray_menu): + if ITrayService._services_submenu is None: + from Qt import QtWidgets + services_submenu = QtWidgets.QMenu("Services", tray_menu) + services_submenu.setVisible(False) + ITrayService._services_submenu = services_submenu return ITrayService._services_submenu @staticmethod - def _set_services_submenu(services_submenu): - ITrayService._services_submenu = services_submenu + def add_service_action(action): + ITrayService._services_submenu.addAction(action) + if not ITrayService._services_submenu.isVisible(): + ITrayService._services_submenu.setVisible(True) @staticmethod def _load_service_icons(): @@ -184,16 +191,14 @@ class ITrayService(ITrayModule): def tray_menu(self, tray_menu): from Qt import QtWidgets - services_submenu = self.services_submenu() - if services_submenu is None: - services_submenu = QtWidgets.QMenu("Services", tray_menu) - self._set_services_submenu(services_submenu) - - action = QtWidgets.QAction(self.label, services_submenu) - services_submenu.addAction(action) - + action = QtWidgets.QAction( + self.label, + self.services_submenu(tray_menu) + ) self.menu_action = action + self.add_service_action(action) + self.set_service_running_icon() def set_service_running_icon(self): diff --git a/pype/tools/tray/pype_tray.py b/pype/tools/tray/pype_tray.py index 55f8e975db..c8c04d229a 100644 --- a/pype/tools/tray/pype_tray.py +++ b/pype/tools/tray/pype_tray.py @@ -39,9 +39,8 @@ class TrayManager: self.modules_manager.initialize(self.tray_widget.menu) # Add services if they are - services_submenu = ITrayService.services_submenu() - if services_submenu is not None: - self.tray_widget.menu.addMenu(services_submenu) + services_submenu = ITrayService.services_submenu(self.tray_widget.menu) + self.tray_widget.menu.addMenu(services_submenu) # Add separator self.tray_widget.menu.addSeparator()