added launcher and browser actions to tray

This commit is contained in:
Jakub Trllo 2024-12-10 15:41:01 +01:00
parent ccd185495a
commit c400628787

View file

@ -23,6 +23,7 @@ from ayon_core.addon import (
ITrayAction,
ITrayService,
)
from ayon_core.pipeline import install_ayon_plugins
from ayon_core.tools.utils import (
WrappedCallbackItem,
get_ayon_qt_app,
@ -32,6 +33,8 @@ from ayon_core.tools.tray.lib import (
remove_tray_server_url,
TrayIsRunningError,
)
from ayon_core.tools.launcher.ui import LauncherWindow
from ayon_core.tools.loader.ui import LoaderWindow
from .addons_manager import TrayAddonsManager
from .host_console_listener import HostListener
@ -82,6 +85,9 @@ class TrayManager:
self._outdated_dialog = None
self._launcher_window = None
self._browser_window = None
self._update_check_timer = update_check_timer
self._update_check_interval = update_check_interval
self._main_thread_timer = main_thread_timer
@ -109,12 +115,15 @@ class TrayManager:
@property
def doubleclick_callback(self):
"""Double-click callback for Tray icon."""
return self._addons_manager.get_doubleclick_callback()
callback = self._addons_manager.get_doubleclick_callback()
if callback is None:
callback = self._show_launcher_window
return callback
def execute_doubleclick(self):
"""Execute double click callback in main thread."""
callback = self.doubleclick_callback
if callback:
if callback is not None:
self.execute_in_main_thread(callback)
def show_tray_message(self, title, message, icon=None, msecs=None):
@ -144,8 +153,22 @@ class TrayManager:
return
tray_menu = self.tray_widget.menu
self._addons_manager.initialize(tray_menu)
# Add default actions under addon actions
launcher_action = QtWidgets.QAction(
"Launcher", tray_menu
)
launcher_action.triggered.connect(self._show_launcher_window)
tray_menu.addAction(launcher_action)
browser_action = QtWidgets.QAction(
"Browser", tray_menu
)
browser_action.triggered.connect(self._show_browser_window)
tray_menu.addAction(browser_action)
self._addons_manager.add_route(
"GET", "/tray", self._web_get_tray_info
)
@ -522,6 +545,24 @@ class TrayManager:
self._info_widget.raise_()
self._info_widget.activateWindow()
def _show_launcher_window(self):
if self._launcher_window is None:
self._launcher_window = LauncherWindow()
self._launcher_window.show()
self._launcher_window.raise_()
self._launcher_window.activateWindow()
def _show_browser_window(self):
if self._browser_window is None:
self._browser_window = LoaderWindow()
self._browser_window.setWindowTitle("AYON Browser")
install_ayon_plugins()
self._browser_window.show()
self._browser_window.raise_()
self._browser_window.activateWindow()
class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
"""Tray widget.