diff --git a/client/ayon_core/tools/workfiles/widgets/files_widget.py b/client/ayon_core/tools/workfiles/widgets/files_widget.py index 9c12fa575c6..7274e00f8df 100644 --- a/client/ayon_core/tools/workfiles/widgets/files_widget.py +++ b/client/ayon_core/tools/workfiles/widgets/files_widget.py @@ -166,14 +166,18 @@ def set_text_filter(self, text_filter): self._workarea_widget.set_text_filter(text_filter) self._published_widget.set_text_filter(text_filter) - def _exec_save_as_dialog(self): + def _exec_save_as_dialog(self, extension=None): """Show SaveAs dialog using currently selected context. Returns: Union[dict[str, Any], None]: Result of the dialog. """ - dialog = SaveAsDialog(self._controller, self) + dialog = SaveAsDialog( + self._controller, + self, + extension=extension, + ) dialog.update_context() dialog.exec_() return dialog.get_result() @@ -315,11 +319,14 @@ def _on_task_changed(self, event): self._update_workarea_btns_state() def _on_published_save_clicked(self): - result = self._exec_save_as_dialog() + repre_info = self._published_widget.get_selected_repre_info() + extension = os.path.splitext(repre_info["filepath"])[1].lower() + result = self._exec_save_as_dialog( + extension=extension, + ) if result is None: return - repre_info = self._published_widget.get_selected_repre_info() self._controller.copy_workfile_representation( repre_info["representation_id"], repre_info["filepath"], diff --git a/client/ayon_core/tools/workfiles/widgets/save_as_dialog.py b/client/ayon_core/tools/workfiles/widgets/save_as_dialog.py index 24d64319cad..bb7792a426a 100644 --- a/client/ayon_core/tools/workfiles/widgets/save_as_dialog.py +++ b/client/ayon_core/tools/workfiles/widgets/save_as_dialog.py @@ -89,15 +89,16 @@ class SaveAsDialog(QtWidgets.QDialog): The filename is calculated in controller where UI sends values from dialog inputs. - Args: - controller (AbstractWorkfilesFrontend): The control object. + controller (AbstractWorkfilesFrontend): The control object. + parent (QtWidgets.QWidget): Parent widget. + extension (str | None): Limit extensions to specific one. """ - - def __init__(self, controller, parent): + def __init__(self, controller, parent, extension=None): super(SaveAsDialog, self).__init__(parent=parent) self.setWindowFlags(self.windowFlags() | QtCore.Qt.FramelessWindowHint) self._controller = controller + self._extension = extension self._folder_id = None self._task_id = None @@ -196,7 +197,6 @@ def __init__(self, controller, parent): subversion_input.text_changed.connect(self._on_comment_change) extension_combobox.currentIndexChanged.connect( self._on_extension_change) - btn_ok.pressed.connect(self._on_ok_pressed) btn_cancel.pressed.connect(self._on_cancel_pressed) @@ -263,7 +263,11 @@ def update_context(self): self._last_version = data["last_version"] self._extension_combobox.clear() - self._extension_combobox.addItems(data["extensions"]) + extensions = data["extensions"] + if self._extension: + extensions = [self._extension] + + self._extension_combobox.addItems(extensions) self._version_input.setValue(last_version)