always create services menu but hide it until any action is added

This commit is contained in:
iLLiCiTiT 2020-12-11 10:48:58 +01:00
parent 4a39f7b371
commit a76980a1a9
2 changed files with 18 additions and 14 deletions

View file

@ -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):

View file

@ -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()