Workfiles: keep Browse always enabled (#4766)

* OP-5494 - keep Browse always enable din Workfiles

Browse might make sense even if there are no workfiles present, better in that case it makes the most sense (eg. I want to locate workfile from outside).

* use last existing directory of workfile root instead of goint to cwd

* use lstring instead of index cut

---------

Co-authored-by: Jakub Trllo <jakub.trllo@gmail.com>
This commit is contained in:
Petr Kalis 2023-04-03 18:01:33 +02:00 committed by GitHub
parent fc5f8ceeb0
commit 177cce233c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 9 deletions

View file

@ -379,7 +379,7 @@ class FilesWidget(QtWidgets.QWidget):
# Disable/Enable buttons based on available files in model
has_valid_items = self._workarea_files_model.has_valid_items()
self._btn_browse.setEnabled(has_valid_items)
self._btn_browse.setEnabled(True)
self._btn_open.setEnabled(has_valid_items)
if self._publish_context_select_mode:
@ -617,14 +617,24 @@ class FilesWidget(QtWidgets.QWidget):
ext_filter = "Work File (*{0})".format(
" *".join(self._get_host_extensions())
)
dir_key = "directory"
if qtpy.API in ("pyside", "pyside2", "pyside6"):
dir_key = "dir"
workfile_root = self._workfiles_root
# Find existing directory of workfile root
# - Qt will use 'cwd' instead, if path does not exist, which may lead
# to igniter directory
while workfile_root:
if os.path.exists(workfile_root):
break
workfile_root = os.path.dirname(workfile_root)
kwargs = {
"caption": "Work Files",
"filter": ext_filter
"filter": ext_filter,
dir_key: workfile_root
}
if qtpy.API in ("pyside", "pyside2", "pyside6"):
kwargs["dir"] = self._workfiles_root
else:
kwargs["directory"] = self._workfiles_root
work_file = QtWidgets.QFileDialog.getOpenFileName(**kwargs)[0]
if work_file:

View file

@ -51,7 +51,7 @@ class CommentMatcher(object):
# Create a regex group for extensions
extensions = registered_host().file_extensions()
any_extension = "(?:{})".format(
"|".join(re.escape(ext[1:]) for ext in extensions)
"|".join(re.escape(ext.lstrip(".")) for ext in extensions)
)
# Use placeholders that will never be in the filename
@ -373,7 +373,7 @@ class SaveAsDialog(QtWidgets.QDialog):
if not data["comment"]:
data.pop("comment", None)
data["ext"] = data["ext"][1:]
data["ext"] = data["ext"].lstrip(".")
anatomy_filled = self.anatomy.format(data)
return anatomy_filled[self.template_key]["file"]
@ -413,7 +413,7 @@ class SaveAsDialog(QtWidgets.QDialog):
if not data["comment"]:
data.pop("comment", None)
data["ext"] = data["ext"][1:]
data["ext"] = data["ext"].lstrip(".")
version = get_last_workfile_with_version(
self.root, template, data, extensions