From 94702cc2cda1177cd8973e64fbd62e4635a442fb Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Fri, 26 Jan 2024 10:56:09 +0100 Subject: [PATCH 1/3] reset loader window on reopen --- openpype/tools/ayon_loader/ui/window.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openpype/tools/ayon_loader/ui/window.py b/openpype/tools/ayon_loader/ui/window.py index a6d40d52e7..d0455c901d 100644 --- a/openpype/tools/ayon_loader/ui/window.py +++ b/openpype/tools/ayon_loader/ui/window.py @@ -322,6 +322,7 @@ class LoaderWindow(QtWidgets.QWidget): ) def refresh(self): + self._reset_on_show = False self._controller.reset() def showEvent(self, event): @@ -332,6 +333,10 @@ class LoaderWindow(QtWidgets.QWidget): self._show_timer.start() + def closeEvent(self, event): + super(LoaderWindow, self).closeEvent(event) + self._reset_on_show = True + def keyPressEvent(self, event): modifiers = event.modifiers() ctrl_pressed = QtCore.Qt.ControlModifier & modifiers @@ -378,8 +383,7 @@ class LoaderWindow(QtWidgets.QWidget): self._show_timer.stop() if self._reset_on_show: - self._reset_on_show = False - self._controller.reset() + self.refresh() def _show_group_dialog(self): project_name = self._projects_combobox.get_selected_project_name() From d2ee1b91f55449f43b0783f7b6ab59532352606c Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Fri, 26 Jan 2024 11:15:08 +0100 Subject: [PATCH 2/3] deselect project on close --- openpype/tools/ayon_loader/ui/window.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openpype/tools/ayon_loader/ui/window.py b/openpype/tools/ayon_loader/ui/window.py index d0455c901d..8982d92c0f 100644 --- a/openpype/tools/ayon_loader/ui/window.py +++ b/openpype/tools/ayon_loader/ui/window.py @@ -335,6 +335,9 @@ class LoaderWindow(QtWidgets.QWidget): def closeEvent(self, event): super(LoaderWindow, self).closeEvent(event) + # Deselect project so current context will be selected + # on next 'showEvent' + self._controller.set_selected_project(None) self._reset_on_show = True def keyPressEvent(self, event): From 7a7a4b1e9a084956d6923658848eeb896f3d88c2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Mon, 5 Feb 2024 12:04:55 +0100 Subject: [PATCH 3/3] handle empty project in 'get_project_product_types' --- openpype/tools/ayon_loader/abstract.py | 3 +++ openpype/tools/ayon_loader/models/products.py | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/openpype/tools/ayon_loader/abstract.py b/openpype/tools/ayon_loader/abstract.py index bf3e81d485..1d93716e07 100644 --- a/openpype/tools/ayon_loader/abstract.py +++ b/openpype/tools/ayon_loader/abstract.py @@ -531,6 +531,9 @@ class FrontendLoaderController(_BaseLoaderController): Product types have defined if are checked for filtering or not. + Args: + project_name (Union[str, None]): Project name. + Returns: list[ProductTypeItem]: List of product type items for a project. """ diff --git a/openpype/tools/ayon_loader/models/products.py b/openpype/tools/ayon_loader/models/products.py index 135f28df97..40b6474d12 100644 --- a/openpype/tools/ayon_loader/models/products.py +++ b/openpype/tools/ayon_loader/models/products.py @@ -179,12 +179,15 @@ class ProductsModel: """Product type items for project. Args: - project_name (str): Project name. + project_name (Union[str, None]): Project name. Returns: list[ProductTypeItem]: Product type items. """ + if not project_name: + return [] + cache = self._product_type_items_cache[project_name] if not cache.is_valid: product_types = ayon_api.get_project_product_types(project_name)