From e6bb56b088ba001859ff02b61d577638f8d61ce1 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Fri, 21 Jun 2024 22:56:53 +0300 Subject: [PATCH] refactor launching the workfile - remove redundant code --- .../houdini/client/ayon_houdini/api/lib.py | 50 +------------------ .../client/ayon_houdini/api/pipeline.py | 11 +++- 2 files changed, 10 insertions(+), 51 deletions(-) diff --git a/server_addon/houdini/client/ayon_houdini/api/lib.py b/server_addon/houdini/client/ayon_houdini/api/lib.py index eefe895b8f..671265fae9 100644 --- a/server_addon/houdini/client/ayon_houdini/api/lib.py +++ b/server_addon/houdini/client/ayon_houdini/api/lib.py @@ -8,7 +8,6 @@ import json from contextlib import contextmanager import six -from qtpy import QtCore, QtWidgets import ayon_api from ayon_core.lib import StringTemplate @@ -24,11 +23,7 @@ from ayon_core.pipeline import ( from ayon_core.pipeline.create import CreateContext from ayon_core.pipeline.template_data import get_template_data from ayon_core.pipeline.context_tools import get_current_folder_entity -from ayon_core.tools.utils import ( - PopupUpdateKeys, - SimplePopup, - host_tools -) +from ayon_core.tools.utils import PopupUpdateKeys, SimplePopup from ayon_core.tools.utils.host_tools import get_tool_by_name import hou @@ -1198,46 +1193,3 @@ def prompt_reset_context(): update_content_on_context_change() dialog.deleteLater() - - -def wait_startup_launch_workfiles_app(): - """Show workfiles tool on Houdini launch. - - Trigger to show workfiles tool on application launch. Can be executed only - once all other calls are ignored. - - Workfiles tool show is deferred after application initialization using - QTimer. - - Basically, it should wait till the app finish starting up. - """ - - # Show workfiles tool using timer - # - this will be probably triggered during initialization in that case - # the application is not be able to show uis so it must be - # deferred using timer - # - timer should be processed when initialization ends - # When applications starts to process events. - timer = QtCore.QTimer() - timer.timeout.connect(lambda: _launch_workfile_app(timer)) - timer.setInterval(100) - timer.start() - - -def _launch_workfile_app(timer): - # Safeguard to not show window when application is still starting up - # or is already closing down. - closing_down = QtWidgets.QApplication.closingDown() - starting_up = QtWidgets.QApplication.startingUp() - - # Stop the timer if application finished start up of is closing down - if closing_down or not starting_up: - timer.stop() - - # Skip if application is starting up or closing down - if starting_up or closing_down: - return - - # Make sure on top is enabled on first show so the window is not hidden - # under main nuke window - host_tools.show_workfiles(parent=hou.qt.mainWindow(), on_top=True) diff --git a/server_addon/houdini/client/ayon_houdini/api/pipeline.py b/server_addon/houdini/client/ayon_houdini/api/pipeline.py index 9d420a92d3..2c28e33929 100644 --- a/server_addon/houdini/client/ayon_houdini/api/pipeline.py +++ b/server_addon/houdini/client/ayon_houdini/api/pipeline.py @@ -6,7 +6,7 @@ import logging import hou # noqa from ayon_core.host import HostBase, IWorkfileHost, ILoadHost, IPublishHost - +from ayon_core.tools.utils import host_tools import pyblish.api from ayon_core.pipeline import ( @@ -25,6 +25,13 @@ from ayon_core.lib import ( emit_event, ) +def show_workfiles_tool(): + # Make sure on top is enabled on first show so the + # window is not hidden under main nuke window + print("showing workfiles tool..") + from ayon_core.tools.utils import host_tools + host_tools.show_workfiles(parent=hou.qt.mainWindow(), + on_top=True) log = logging.getLogger("ayon_houdini") @@ -87,7 +94,7 @@ class HoudiniHost(HostBase, IWorkfileHost, ILoadHost, IPublishHost): hdefereval.executeDeferred(shelves.generate_shelves) hdefereval.executeDeferred(creator_node_shelves.install) if os.environ.get("AYON_WORKFILE_TOOL_ON_START"): - hdefereval.executeDeferred(lib.wait_startup_launch_workfiles_app) + hdefereval.executeDeferred(lambda: host_tools.show_workfiles(parent=hou.qt.mainWindow())) def workfile_has_unsaved_changes(self): return hou.hipFile.hasUnsavedChanges()