From dbc3f81a66e8ebaabf0cb52e36de6300812537d6 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 3 Jun 2021 11:38:17 +0200 Subject: [PATCH] implemented base of project manager action --- openpype/modules/project_manager_action.py | 55 ++++++++++++++++++++++ openpype/modules/settings_action.py | 2 +- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 openpype/modules/project_manager_action.py diff --git a/openpype/modules/project_manager_action.py b/openpype/modules/project_manager_action.py new file mode 100644 index 0000000000..465c3cc74a --- /dev/null +++ b/openpype/modules/project_manager_action.py @@ -0,0 +1,55 @@ +from . import PypeModule, ITrayAction + + +class ProjectManagerAction(PypeModule, ITrayAction): + label = "Project Manager" + name = "project_manager" + admin_action = True + + def initialize(self, _modules_settings): + # This action is always enabled + self.enabled = True + + # Tray attributes + self.project_manager_window = None + + def tray_init(self): + """Initialization in tray implementation of ITrayAction.""" + self.create_project_manager_window() + + def on_action_trigger(self): + """Implementation for action trigger of ITrayAction.""" + self.show_project_manager_window() + + def create_project_manager_window(self): + """Initializa Settings Qt window.""" + if self.project_manager_window: + return + + def show_project_manager_window(self): + """Show project manager tool window. + + Raises: + AssertionError: Window must be already created. Call + `create_project_manager_window` before calling this method. + """ + if not self.project_manager_window: + raise AssertionError("Window is not initialized.") + + # Store if was visible + was_visible = self.project_manager_window.isVisible() + was_minimized = self.project_manager_window.isMinimized() + + # Show settings gui + self.project_manager_window.show() + + if was_minimized: + self.project_manager_window.showNormal() + + # Pull window to the front. + self.project_manager_window.raise_() + self.project_manager_window.activateWindow() + + # Reset content if was not visible + if not was_visible and not was_minimized: + self.project_manager_window.reset() diff --git a/openpype/modules/settings_action.py b/openpype/modules/settings_action.py index 5844710ff7..d0f8c4f541 100644 --- a/openpype/modules/settings_action.py +++ b/openpype/modules/settings_action.py @@ -79,7 +79,7 @@ class SettingsAction(PypeModule, ITrayAction): Raises: AssertionError: Window must be already created. Call - `create_settings_window` before callint this method. + `create_settings_window` before calling this method. """ if not self.settings_window: raise AssertionError("Window is not initialized.")