Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions client/ayon_core/tools/workfiles/widgets/files_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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"],
Expand Down
16 changes: 10 additions & 6 deletions client/ayon_core/tools/workfiles/widgets/save_as_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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)

Expand Down
Loading