From 6f2191128dc6b8fc14a6ba419c4f5ffa848aa132 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 11 Dec 2023 10:42:34 +0100 Subject: [PATCH 01/24] Refactor create_editorial.py for better track handling - Refactored the code to filter tracks based on their kind being "Video" - Added a comment to clarify the purpose of media_data variable - Added a comment to explain setting track name - Removed an unnecessary blank line --- .../plugins/create/create_editorial.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/openpype/hosts/traypublisher/plugins/create/create_editorial.py b/openpype/hosts/traypublisher/plugins/create/create_editorial.py index dce4a051fd..e6f29af40f 100644 --- a/openpype/hosts/traypublisher/plugins/create/create_editorial.py +++ b/openpype/hosts/traypublisher/plugins/create/create_editorial.py @@ -381,15 +381,19 @@ def _get_clip_instances( """ self.asset_name_check = [] - tracks = otio_timeline.each_child( - descended_from_type=otio.schema.Track - ) + tracks = [ + track for track in otio_timeline.each_child( + descended_from_type=otio.schema.Track) + if track.kind == "Video" + ] - # media data for audio sream and reference solving + # media data for audio stream and reference solving media_data = self._get_media_source_metadata(media_path) for track in tracks: + # set track name track.name = f"{sequence_file_name} - {otio_timeline.name}" + try: track_start_frame = ( abs(track.source_range.start_time.value) @@ -398,7 +402,6 @@ def _get_clip_instances( except AttributeError: track_start_frame = 0 - for clip in track.each_child(): if not self._validate_clip_for_processing(clip): continue From fc179befc24469b39325e0ec12517263cb313410 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 11 Dec 2023 10:43:11 +0100 Subject: [PATCH 02/24] improving plugin label so it is easier to read --- openpype/plugins/publish/validate_resources.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/plugins/publish/validate_resources.py b/openpype/plugins/publish/validate_resources.py index 7911c70c2d..ce03515400 100644 --- a/openpype/plugins/publish/validate_resources.py +++ b/openpype/plugins/publish/validate_resources.py @@ -17,7 +17,7 @@ class ValidateResources(pyblish.api.InstancePlugin): """ order = ValidateContentsOrder - label = "Resources" + label = "Validate Resources" def process(self, instance): From dadf8989be620616cdebc0bc3ee99dc3ba9d9ebd Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Fri, 26 Jan 2024 16:45:44 +0100 Subject: [PATCH 03/24] Use QDialog as super class and pass parent to init --- openpype/tools/publisher/window.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openpype/tools/publisher/window.py b/openpype/tools/publisher/window.py index 5dd6998b24..de1a6249ad 100644 --- a/openpype/tools/publisher/window.py +++ b/openpype/tools/publisher/window.py @@ -42,7 +42,7 @@ ) -class PublisherWindow(QtWidgets.QWidget): +class PublisherWindow(QtWidgets.QDialog): """Main window of publisher.""" default_width = 1300 default_height = 800 @@ -50,7 +50,7 @@ class PublisherWindow(QtWidgets.QWidget): publish_footer_spacer = 2 def __init__(self, parent=None, controller=None, reset_on_show=None): - super(PublisherWindow, self).__init__() + super(PublisherWindow, self).__init__(parent) self.setObjectName("PublishWindow") From 34b42c132d56a69c190681b6b3aad0c4c8f06369 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Fri, 26 Jan 2024 16:46:03 +0100 Subject: [PATCH 04/24] ignore enter and return event key --- openpype/tools/publisher/window.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openpype/tools/publisher/window.py b/openpype/tools/publisher/window.py index de1a6249ad..ab337c9b32 100644 --- a/openpype/tools/publisher/window.py +++ b/openpype/tools/publisher/window.py @@ -328,7 +328,6 @@ def __init__(self, parent=None, controller=None, reset_on_show=None): "copy_report.request", self._copy_report ) - # Store extra header widget for TrayPublisher # - can be used to add additional widgets to header between context # label and help button @@ -492,7 +491,11 @@ def _uninstall_app_event_listener(self): def keyPressEvent(self, event): # Ignore escape button to close window - if event.key() == QtCore.Qt.Key_Escape: + if event.key() in { + QtCore.Qt.Key_Escape, + QtCore.Qt.Key_Enter, + QtCore.Qt.Key_Return, + }: event.accept() return From 87b4b6e483de6dfc5db677a8fbc848f24cedda3a Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Fri, 26 Jan 2024 17:43:09 +0100 Subject: [PATCH 05/24] removed '_make_sure_on_top' --- openpype/tools/publisher/window.py | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/openpype/tools/publisher/window.py b/openpype/tools/publisher/window.py index ab337c9b32..5b56802055 100644 --- a/openpype/tools/publisher/window.py +++ b/openpype/tools/publisher/window.py @@ -294,12 +294,6 @@ def __init__(self, parent=None, controller=None, reset_on_show=None): controller.event_system.add_callback( "publish.process.stopped", self._on_publish_stop ) - controller.event_system.add_callback( - "publish.process.instance.changed", self._on_instance_change - ) - controller.event_system.add_callback( - "publish.process.plugin.changed", self._on_plugin_change - ) controller.event_system.add_callback( "show.card.message", self._on_overlay_message ) @@ -561,18 +555,6 @@ def _on_show_timer(self): self._reset_on_show = False self.reset() - def _make_sure_on_top(self): - """Raise window to top and activate it. - - This may not work for some DCCs without Qt. - """ - - if not self._window_is_visible: - self.show() - - self.setWindowState(QtCore.Qt.WindowActive) - self.raise_() - def _checks_before_save(self, explicit_save): """Save of changes may trigger some issues. @@ -885,12 +867,6 @@ def _on_publish_start(self): if self._is_on_create_tab(): self._go_to_publish_tab() - def _on_instance_change(self): - self._make_sure_on_top() - - def _on_plugin_change(self): - self._make_sure_on_top() - def _on_publish_validated_change(self, event): if event["value"]: self._validate_btn.setEnabled(False) @@ -901,7 +877,6 @@ def _on_publish_finished_change(self, event): self._comment_input.setText("") def _on_publish_stop(self): - self._make_sure_on_top() self._set_publish_overlay_visibility(False) self._reset_btn.setEnabled(True) self._stop_btn.setEnabled(False) From 781bd615a6506dd36d5c69c90393596a3a35e299 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Fri, 26 Jan 2024 17:53:30 +0100 Subject: [PATCH 06/24] add comments to enter and return keys --- openpype/tools/publisher/window.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openpype/tools/publisher/window.py b/openpype/tools/publisher/window.py index 5b56802055..82c7b167b7 100644 --- a/openpype/tools/publisher/window.py +++ b/openpype/tools/publisher/window.py @@ -484,9 +484,11 @@ def _uninstall_app_event_listener(self): app.removeEventFilter(self) def keyPressEvent(self, event): - # Ignore escape button to close window if event.key() in { + # Ignore escape button to close window QtCore.Qt.Key_Escape, + # Ignore enter keyboard event which by default triggers + # first available button in QDialog QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return, }: From 0bbe25fab1b7259c118c03f37748a4bc570eb530 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Mon, 29 Jan 2024 16:57:15 +0100 Subject: [PATCH 07/24] Refactor code for creating and publishing editorial clips - renaming variable to specify correctly value type - Added a condition in `collect_shot_instances.py` to check if the parent kind is "Video" before collecting shot instances. --- .../plugins/create/create_editorial.py | 13 +++++++------ .../plugins/publish/collect_shot_instances.py | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/openpype/hosts/traypublisher/plugins/create/create_editorial.py b/openpype/hosts/traypublisher/plugins/create/create_editorial.py index e6f29af40f..3898635254 100644 --- a/openpype/hosts/traypublisher/plugins/create/create_editorial.py +++ b/openpype/hosts/traypublisher/plugins/create/create_editorial.py @@ -402,18 +402,19 @@ def _get_clip_instances( except AttributeError: track_start_frame = 0 - for clip in track.each_child(): - if not self._validate_clip_for_processing(clip): + for otio_clip in track.each_child(): + if not self._validate_clip_for_processing(otio_clip): continue + # get available frames info to clip data - self._create_otio_reference(clip, media_path, media_data) + self._create_otio_reference(otio_clip, media_path, media_data) # convert timeline range to source range - self._restore_otio_source_range(clip) + self._restore_otio_source_range(otio_clip) base_instance_data = self._get_base_instance_data( - clip, + otio_clip, instance_data, track_start_frame ) @@ -432,7 +433,7 @@ def _get_clip_instances( continue instance = self._make_subset_instance( - clip, + otio_clip, _fpreset, deepcopy(base_instance_data), parenting_data diff --git a/openpype/hosts/traypublisher/plugins/publish/collect_shot_instances.py b/openpype/hosts/traypublisher/plugins/publish/collect_shot_instances.py index b99b634da1..43f6518374 100644 --- a/openpype/hosts/traypublisher/plugins/publish/collect_shot_instances.py +++ b/openpype/hosts/traypublisher/plugins/publish/collect_shot_instances.py @@ -79,6 +79,7 @@ def _get_otio_clip(self, instance): clip for clip in otio_timeline.each_child( descended_from_type=otio.schema.Clip) if clip.name == otio_clip.name + if clip.parent().kind == "Video" ] otio_clip = clips.pop() From 449e601a5fe37617d7c663b47f9d0bd45b083aec Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Mon, 29 Jan 2024 17:39:28 +0000 Subject: [PATCH 08/24] Show message with error on action failure. --- openpype/tools/publisher/control.py | 15 +++++++++++++++ openpype/tools/publisher/window.py | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/openpype/tools/publisher/control.py b/openpype/tools/publisher/control.py index 47e374edf2..0137d5c95f 100644 --- a/openpype/tools/publisher/control.py +++ b/openpype/tools/publisher/control.py @@ -2329,6 +2329,21 @@ def run_action(self, plugin_id, action_id): result = pyblish.plugin.process( plugin, self._publish_context, None, action.id ) + exception = result.get("error") + if exception: + self._emit_event( + "action.failed", + { + "title": "Action failed", + "message": "Action failed.", + "traceback": "".join( + traceback.format_exception(exception) + ), + "label": "", + "identifier": action.__name__ + } + ) + self._publish_report.add_action_result(action, result) def _publish_next_process(self): diff --git a/openpype/tools/publisher/window.py b/openpype/tools/publisher/window.py index 5dd6998b24..e5b47f4309 100644 --- a/openpype/tools/publisher/window.py +++ b/openpype/tools/publisher/window.py @@ -321,6 +321,9 @@ def __init__(self, parent=None, controller=None, reset_on_show=None): controller.event_system.add_callback( "convertors.find.failed", self._on_convertor_error ) + controller.event_system.add_callback( + "action.failed", self._on_action_error + ) controller.event_system.add_callback( "export_report.request", self._export_report ) @@ -1012,6 +1015,18 @@ def _on_convertor_error(self, event): event["title"], new_failed_info, "Convertor:" ) + def _on_action_error(self, event): + self.add_error_message_dialog( + event["title"], + [{ + "message": event["message"], + "traceback": event["traceback"], + "label": event["label"], + "identifier": event["identifier"] + }], + "Action:" + ) + def _update_create_overlay_size(self): metrics = self._create_overlay_button.fontMetrics() height = int(metrics.height()) From 2b3160773332c53cc4e923e897ea532e06d7c968 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Tue, 30 Jan 2024 10:57:59 +0000 Subject: [PATCH 09/24] Feedback action finished. --- openpype/tools/publisher/control.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openpype/tools/publisher/control.py b/openpype/tools/publisher/control.py index 0137d5c95f..61528c7c88 100644 --- a/openpype/tools/publisher/control.py +++ b/openpype/tools/publisher/control.py @@ -2346,6 +2346,8 @@ def run_action(self, plugin_id, action_id): self._publish_report.add_action_result(action, result) + self.emit_card_message("Action finished.") + def _publish_next_process(self): # Validations of progress before using iterator # - same conditions may be inside iterator but they may be used From d0a09bcad47299e341152cb47a600abc3d269f43 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Wed, 31 Jan 2024 07:15:36 +0000 Subject: [PATCH 10/24] Illicit suggestion --- openpype/tools/publisher/control.py | 2 +- openpype/tools/publisher/window.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openpype/tools/publisher/control.py b/openpype/tools/publisher/control.py index 61528c7c88..9bae0deac8 100644 --- a/openpype/tools/publisher/control.py +++ b/openpype/tools/publisher/control.py @@ -2332,7 +2332,7 @@ def run_action(self, plugin_id, action_id): exception = result.get("error") if exception: self._emit_event( - "action.failed", + "publish.action.failed", { "title": "Action failed", "message": "Action failed.", diff --git a/openpype/tools/publisher/window.py b/openpype/tools/publisher/window.py index e5b47f4309..193b6948a5 100644 --- a/openpype/tools/publisher/window.py +++ b/openpype/tools/publisher/window.py @@ -322,7 +322,7 @@ def __init__(self, parent=None, controller=None, reset_on_show=None): "convertors.find.failed", self._on_convertor_error ) controller.event_system.add_callback( - "action.failed", self._on_action_error + "publish.action.failed", self._on_action_error ) controller.event_system.add_callback( "export_report.request", self._export_report From 149f53daff8a4267fc0a45370bcd414db00d7981 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Wed, 31 Jan 2024 09:15:11 +0000 Subject: [PATCH 11/24] identifier > name --- openpype/tools/publisher/control.py | 2 +- openpype/tools/publisher/window.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openpype/tools/publisher/control.py b/openpype/tools/publisher/control.py index 9bae0deac8..23ef6ae6c1 100644 --- a/openpype/tools/publisher/control.py +++ b/openpype/tools/publisher/control.py @@ -2340,7 +2340,7 @@ def run_action(self, plugin_id, action_id): traceback.format_exception(exception) ), "label": "", - "identifier": action.__name__ + "name": action.__name__ } ) diff --git a/openpype/tools/publisher/window.py b/openpype/tools/publisher/window.py index 193b6948a5..f4de3a08f7 100644 --- a/openpype/tools/publisher/window.py +++ b/openpype/tools/publisher/window.py @@ -1022,7 +1022,7 @@ def _on_action_error(self, event): "message": event["message"], "traceback": event["traceback"], "label": event["label"], - "identifier": event["identifier"] + "identifier": event["name"] }], "Action:" ) From b39c41f98a5ece76b6466ab08e8e55e7462df8a3 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Wed, 31 Jan 2024 10:01:02 +0000 Subject: [PATCH 12/24] Use label --- openpype/tools/publisher/control.py | 4 ++-- openpype/tools/publisher/window.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openpype/tools/publisher/control.py b/openpype/tools/publisher/control.py index 23ef6ae6c1..13d007dd35 100644 --- a/openpype/tools/publisher/control.py +++ b/openpype/tools/publisher/control.py @@ -2339,8 +2339,8 @@ def run_action(self, plugin_id, action_id): "traceback": "".join( traceback.format_exception(exception) ), - "label": "", - "name": action.__name__ + "label": action.__name__, + "identifier": action.id } ) diff --git a/openpype/tools/publisher/window.py b/openpype/tools/publisher/window.py index f4de3a08f7..193b6948a5 100644 --- a/openpype/tools/publisher/window.py +++ b/openpype/tools/publisher/window.py @@ -1022,7 +1022,7 @@ def _on_action_error(self, event): "message": event["message"], "traceback": event["traceback"], "label": event["label"], - "identifier": event["name"] + "identifier": event["identifier"] }], "Action:" ) From b26ea7a62039ba766085377bf51b8b521f8014a9 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Thu, 1 Feb 2024 12:18:46 +0000 Subject: [PATCH 13/24] Fix getting node and node name. --- openpype/hosts/nuke/plugins/load/load_camera_abc.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/openpype/hosts/nuke/plugins/load/load_camera_abc.py b/openpype/hosts/nuke/plugins/load/load_camera_abc.py index 898c5e4e7b..7f0452d6d4 100644 --- a/openpype/hosts/nuke/plugins/load/load_camera_abc.py +++ b/openpype/hosts/nuke/plugins/load/load_camera_abc.py @@ -112,8 +112,6 @@ def update(self, container, representation): project_name = get_current_project_name() version_doc = get_version_by_id(project_name, representation["parent"]) - object_name = container["node"] - # get main variables version_data = version_doc.get("data", {}) vname = version_doc.get("name", None) @@ -139,7 +137,7 @@ def update(self, container, representation): file = get_representation_path(representation).replace("\\", "/") with maintained_selection(): - camera_node = nuke.toNode(object_name) + camera_node = container["node"] camera_node['selected'].setValue(True) # collect input output dependencies @@ -154,9 +152,10 @@ def update(self, container, representation): xpos = camera_node.xpos() ypos = camera_node.ypos() nuke.nodeCopy("%clipboard%") + camera_name = camera_node.name() nuke.delete(camera_node) nuke.nodePaste("%clipboard%") - camera_node = nuke.toNode(object_name) + camera_node = nuke.toNode(camera_name) camera_node.setXYpos(xpos, ypos) # link to original input nodes From 6290343ce7b9b1facebcb7148fc41f775d9ae5fe Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Mon, 5 Feb 2024 12:24:48 +0100 Subject: [PATCH 14/24] Use better resolution of Ayon apps on 4k display Special get_qt_app is used instead of shared get_openpype_qt_app as we don't want to set application icon. --- openpype/hosts/fusion/api/menu.py | 32 ++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/fusion/api/menu.py b/openpype/hosts/fusion/api/menu.py index 0b9ad1a43b..53ff5af767 100644 --- a/openpype/hosts/fusion/api/menu.py +++ b/openpype/hosts/fusion/api/menu.py @@ -173,8 +173,38 @@ def on_set_framerange_clicked(self): set_asset_framerange() +def get_qt_app(): + """Main Qt application.""" + + app = QtWidgets.QApplication.instance() + if app is None: + for attr_name in ( + "AA_EnableHighDpiScaling", + "AA_UseHighDpiPixmaps", + ): + attr = getattr(QtCore.Qt, attr_name, None) + if attr is not None: + QtWidgets.QApplication.setAttribute(attr) + + policy = os.getenv("QT_SCALE_FACTOR_ROUNDING_POLICY") + if ( + hasattr( + QtWidgets.QApplication, "setHighDpiScaleFactorRoundingPolicy" + ) + and not policy + ): + QtWidgets.QApplication.setHighDpiScaleFactorRoundingPolicy( + QtCore.Qt.HighDpiScaleFactorRoundingPolicy.PassThrough + ) + + app = QtWidgets.QApplication(sys.argv) + + return app + + def launch_openpype_menu(): - app = QtWidgets.QApplication(sys.argv) + + app = get_qt_app() pype_menu = OpenPypeMenu() From 9452cdb06d289aced41d4bffb0104f6fc24d2ab5 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Mon, 5 Feb 2024 13:45:04 +0100 Subject: [PATCH 15/24] define 'get_qt_app' in tools utils --- openpype/hosts/fusion/api/menu.py | 30 +----------------------------- openpype/tools/utils/__init__.py | 1 + openpype/tools/utils/lib.py | 23 +++++++++++++++++++---- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/openpype/hosts/fusion/api/menu.py b/openpype/hosts/fusion/api/menu.py index 53ff5af767..ff4a734928 100644 --- a/openpype/hosts/fusion/api/menu.py +++ b/openpype/hosts/fusion/api/menu.py @@ -15,6 +15,7 @@ ) from openpype.pipeline import get_current_asset_name from openpype.resources import get_openpype_icon_filepath +from openpype.tools.utils import get_qt_app from .pipeline import FusionEventHandler from .pulse import FusionPulse @@ -173,35 +174,6 @@ def on_set_framerange_clicked(self): set_asset_framerange() -def get_qt_app(): - """Main Qt application.""" - - app = QtWidgets.QApplication.instance() - if app is None: - for attr_name in ( - "AA_EnableHighDpiScaling", - "AA_UseHighDpiPixmaps", - ): - attr = getattr(QtCore.Qt, attr_name, None) - if attr is not None: - QtWidgets.QApplication.setAttribute(attr) - - policy = os.getenv("QT_SCALE_FACTOR_ROUNDING_POLICY") - if ( - hasattr( - QtWidgets.QApplication, "setHighDpiScaleFactorRoundingPolicy" - ) - and not policy - ): - QtWidgets.QApplication.setHighDpiScaleFactorRoundingPolicy( - QtCore.Qt.HighDpiScaleFactorRoundingPolicy.PassThrough - ) - - app = QtWidgets.QApplication(sys.argv) - - return app - - def launch_openpype_menu(): app = get_qt_app() diff --git a/openpype/tools/utils/__init__.py b/openpype/tools/utils/__init__.py index 50d50f467a..74702a2a10 100644 --- a/openpype/tools/utils/__init__.py +++ b/openpype/tools/utils/__init__.py @@ -32,6 +32,7 @@ set_style_property, DynamicQThread, qt_app_context, + get_qt_app, get_openpype_qt_app, get_asset_icon, get_asset_icon_by_name, diff --git a/openpype/tools/utils/lib.py b/openpype/tools/utils/lib.py index 365caaafd9..c7f92dd26e 100644 --- a/openpype/tools/utils/lib.py +++ b/openpype/tools/utils/lib.py @@ -154,11 +154,15 @@ def qt_app_context(): yield app -def get_openpype_qt_app(): - """Main Qt application initialized for OpenPype processed. +def get_qt_app(): + """Get Qt application. - This function should be used only inside OpenPype process and never inside - other processes. + The function initializes new Qt application if it is not already + initialized. It also sets some attributes to the application to + ensure that it will work properly on high DPI displays. + + Returns: + QtWidgets.QApplication: Current Qt application. """ app = QtWidgets.QApplication.instance() @@ -184,6 +188,17 @@ def get_openpype_qt_app(): app = QtWidgets.QApplication(sys.argv) + return app + + +def get_openpype_qt_app(): + """Main Qt application initialized for OpenPype processed. + + This function should be used only inside OpenPype process and never inside + other processes. + """ + + app = get_qt_app() app.setWindowIcon(QtGui.QIcon(get_app_icon_path())) return app From 1c9c125dc2dcb6662c69cff95f881263b49711c5 Mon Sep 17 00:00:00 2001 From: Braden Jennings Date: Wed, 7 Feb 2024 11:00:33 +1300 Subject: [PATCH 16/24] enhancement/OP-8033 --- openpype/modules/timers_manager/timers_manager.py | 5 +++-- openpype/modules/timers_manager/widget_user_idle.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/openpype/modules/timers_manager/timers_manager.py b/openpype/modules/timers_manager/timers_manager.py index 674d834a1d..e684737d5e 100644 --- a/openpype/modules/timers_manager/timers_manager.py +++ b/openpype/modules/timers_manager/timers_manager.py @@ -162,6 +162,7 @@ def tray_init(self): def tray_start(self, *_a, **_kw): if self._idle_manager: self._idle_manager.start() + self.show_message() def tray_exit(self): if self._idle_manager: @@ -373,8 +374,8 @@ def connect_with_modules(self, enabled_modules): ).format(module.name)) def show_message(self): - if self.is_running is False: - return + # if self.is_running is False: + # return if not self._widget_user_idle.is_showed(): self._widget_user_idle.reset_countdown() self._widget_user_idle.show() diff --git a/openpype/modules/timers_manager/widget_user_idle.py b/openpype/modules/timers_manager/widget_user_idle.py index 9df328e6b2..8cc78cf102 100644 --- a/openpype/modules/timers_manager/widget_user_idle.py +++ b/openpype/modules/timers_manager/widget_user_idle.py @@ -17,6 +17,7 @@ def __init__(self, module): self.setWindowFlags( QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.WindowMinimizeButtonHint + | QtCore.Qt.WindowStaysOnTopHint ) self._is_showed = False From 1d3c1c7c6c0bb5a0a4bd3c62e91c7a58e1a72c86 Mon Sep 17 00:00:00 2001 From: Braden Jennings Date: Wed, 7 Feb 2024 11:06:28 +1300 Subject: [PATCH 17/24] enhancement/OP-8033 --- openpype/modules/timers_manager/timers_manager.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openpype/modules/timers_manager/timers_manager.py b/openpype/modules/timers_manager/timers_manager.py index e684737d5e..674d834a1d 100644 --- a/openpype/modules/timers_manager/timers_manager.py +++ b/openpype/modules/timers_manager/timers_manager.py @@ -162,7 +162,6 @@ def tray_init(self): def tray_start(self, *_a, **_kw): if self._idle_manager: self._idle_manager.start() - self.show_message() def tray_exit(self): if self._idle_manager: @@ -374,8 +373,8 @@ def connect_with_modules(self, enabled_modules): ).format(module.name)) def show_message(self): - # if self.is_running is False: - # return + if self.is_running is False: + return if not self._widget_user_idle.is_showed(): self._widget_user_idle.reset_countdown() self._widget_user_idle.show() From bac4f6d9bd2b53b97c01eb7d40bda7415b062e0b Mon Sep 17 00:00:00 2001 From: Ynbot Date: Wed, 7 Feb 2024 03:25:17 +0000 Subject: [PATCH 18/24] [Automated] Bump version --- openpype/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/version.py b/openpype/version.py index db6da9f656..d105b0169e 100644 --- a/openpype/version.py +++ b/openpype/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring Pype version.""" -__version__ = "3.18.7-nightly.1" +__version__ = "3.18.7-nightly.2" From 4243ee427cd24d9eb67fdd38c051c2388eb45e27 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 7 Feb 2024 03:25:56 +0000 Subject: [PATCH 19/24] chore(): update bug report / version --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 54a9d69bdc..f751a54116 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -35,6 +35,7 @@ body: label: Version description: What version are you running? Look to OpenPype Tray options: + - 3.18.7-nightly.2 - 3.18.7-nightly.1 - 3.18.6 - 3.18.6-nightly.2 @@ -134,7 +135,6 @@ body: - 3.15.10-nightly.1 - 3.15.9 - 3.15.9-nightly.2 - - 3.15.9-nightly.1 validations: required: true - type: dropdown From 5b9b26050d071b48c5141faffa46d439473f5f20 Mon Sep 17 00:00:00 2001 From: Jakub Jezek Date: Wed, 7 Feb 2024 10:47:41 +0100 Subject: [PATCH 20/24] feat: Add settings category for Tray Publisher This commit adds a new settings category for the Tray Publisher plugin in order to organize its configuration options more effectively. --- openpype/hosts/traypublisher/api/plugin.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openpype/hosts/traypublisher/api/plugin.py b/openpype/hosts/traypublisher/api/plugin.py index 6859b85a46..a6075f0eb5 100644 --- a/openpype/hosts/traypublisher/api/plugin.py +++ b/openpype/hosts/traypublisher/api/plugin.py @@ -32,6 +32,7 @@ class HiddenTrayPublishCreator(HiddenCreator): host_name = "traypublisher" + settings_category = "traypublisher" def collect_instances(self): instances_by_identifier = cache_and_get_instances( @@ -68,6 +69,7 @@ def _store_new_instance(self, new_instance): class TrayPublishCreator(Creator): create_allow_context_change = True host_name = "traypublisher" + settings_category = "traypublisher" def collect_instances(self): instances_by_identifier = cache_and_get_instances( From 1fcdde0a9cc3a8b31697540ce320286d83d30e99 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 8 Feb 2024 13:46:56 +0100 Subject: [PATCH 21/24] AfterEffects: added toggle for applying values from DB during creation (#6204) * OP-8130 - After Effects added flag to force values from Asset to composition during creation This allows controlling setting of values (resolution, duration) from Asset (DB) to the created instance. Default is to set it automatically. * OP-8130 - Ayon version of Settings for AE creator --- openpype/hosts/aftereffects/plugins/create/create_render.py | 6 +++++- .../settings/defaults/project_settings/aftereffects.json | 3 ++- .../projects_schema/schema_project_aftereffects.json | 6 ++++++ .../aftereffects/server/settings/creator_plugins.py | 2 ++ server_addon/aftereffects/server/version.py | 2 +- 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/openpype/hosts/aftereffects/plugins/create/create_render.py b/openpype/hosts/aftereffects/plugins/create/create_render.py index fadfc0c206..b4fb20f922 100644 --- a/openpype/hosts/aftereffects/plugins/create/create_render.py +++ b/openpype/hosts/aftereffects/plugins/create/create_render.py @@ -29,6 +29,7 @@ class RenderCreator(Creator): # Settings mark_for_review = True + force_setting_values = True def create(self, subset_name_from_ui, data, pre_create_data): stub = api.get_stub() # only after After Effects is up @@ -96,7 +97,9 @@ def create(self, subset_name_from_ui, data, pre_create_data): self._add_instance_to_context(new_instance) stub.rename_item(comp.id, subset_name) - set_settings(True, True, [comp.id], print_msg=False) + + if self.force_setting_values: + set_settings(True, True, [comp.id], print_msg=False) def get_pre_create_attr_defs(self): output = [ @@ -173,6 +176,7 @@ def apply_settings(self, project_settings): ) self.mark_for_review = plugin_settings["mark_for_review"] + self.force_setting_values = plugin_settings["force_setting_values"] self.default_variants = plugin_settings.get( "default_variants", plugin_settings.get("defaults") or [] diff --git a/openpype/settings/defaults/project_settings/aftereffects.json b/openpype/settings/defaults/project_settings/aftereffects.json index 77ccb74410..9e2ab7334b 100644 --- a/openpype/settings/defaults/project_settings/aftereffects.json +++ b/openpype/settings/defaults/project_settings/aftereffects.json @@ -15,7 +15,8 @@ "default_variants": [ "Main" ], - "mark_for_review": true + "mark_for_review": true, + "force_setting_values": true } }, "publish": { diff --git a/openpype/settings/entities/schemas/projects_schema/schema_project_aftereffects.json b/openpype/settings/entities/schemas/projects_schema/schema_project_aftereffects.json index 72f09a641d..b0f8a7357f 100644 --- a/openpype/settings/entities/schemas/projects_schema/schema_project_aftereffects.json +++ b/openpype/settings/entities/schemas/projects_schema/schema_project_aftereffects.json @@ -42,6 +42,12 @@ "key": "mark_for_review", "label": "Review", "default": true + }, + { + "type": "boolean", + "key": "force_setting_values", + "label": "Force resolution and duration values from Asset", + "default": true } ] } diff --git a/server_addon/aftereffects/server/settings/creator_plugins.py b/server_addon/aftereffects/server/settings/creator_plugins.py index 988a036589..5d4ba30cd0 100644 --- a/server_addon/aftereffects/server/settings/creator_plugins.py +++ b/server_addon/aftereffects/server/settings/creator_plugins.py @@ -7,6 +7,8 @@ class CreateRenderPlugin(BaseSettingsModel): default_factory=list, title="Default Variants" ) + force_setting_values: bool = SettingsField( + True, title="Force resolution and duration values from Asset") class AfterEffectsCreatorPlugins(BaseSettingsModel): diff --git a/server_addon/aftereffects/server/version.py b/server_addon/aftereffects/server/version.py index df0c92f1e2..e57ad00718 100644 --- a/server_addon/aftereffects/server/version.py +++ b/server_addon/aftereffects/server/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring addon version.""" -__version__ = "0.1.2" +__version__ = "0.1.3" From b70b418dee0a08b320eed557490edc237a48a0ed Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Thu, 8 Feb 2024 14:34:41 +0100 Subject: [PATCH 22/24] update ayon unreal plugin --- openpype/hosts/unreal/integration | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/hosts/unreal/integration b/openpype/hosts/unreal/integration index 63266607ce..a4755d2869 160000 --- a/openpype/hosts/unreal/integration +++ b/openpype/hosts/unreal/integration @@ -1 +1 @@ -Subproject commit 63266607ceb972a61484f046634ddfc9eb0b5757 +Subproject commit a4755d2869694fcf58c98119298cde8d204e2ce4 From 2c4e22a65a7012e8e35fdabf1327f2c6e8b8e980 Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 9 Feb 2024 07:58:43 +0000 Subject: [PATCH 23/24] Add submodule --- client/ayon_core/hosts/unreal/integration | 1 + 1 file changed, 1 insertion(+) create mode 160000 client/ayon_core/hosts/unreal/integration diff --git a/client/ayon_core/hosts/unreal/integration b/client/ayon_core/hosts/unreal/integration new file mode 160000 index 0000000000..6d2793170e --- /dev/null +++ b/client/ayon_core/hosts/unreal/integration @@ -0,0 +1 @@ +Subproject commit 6d2793170ed57187842f683a943593973abcc337 From 6d2a6e4d5d36fc8848346a5b50ebc116aa7ce1fd Mon Sep 17 00:00:00 2001 From: Toke Stuart Jepsen Date: Fri, 9 Feb 2024 08:01:10 +0000 Subject: [PATCH 24/24] Fix AE json --- .../settings/defaults/project_settings/aftereffects.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/ayon_core/settings/defaults/project_settings/aftereffects.json b/client/ayon_core/settings/defaults/project_settings/aftereffects.json index 9e2ab7334b..77ccb74410 100644 --- a/client/ayon_core/settings/defaults/project_settings/aftereffects.json +++ b/client/ayon_core/settings/defaults/project_settings/aftereffects.json @@ -15,8 +15,7 @@ "default_variants": [ "Main" ], - "mark_for_review": true, - "force_setting_values": true + "mark_for_review": true } }, "publish": {