mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 21:32:15 +01:00
changed multi item to single item
This commit is contained in:
parent
7fe279fda5
commit
2efd8b774c
4 changed files with 29 additions and 31 deletions
|
|
@ -74,7 +74,7 @@ class SettingsCreator(TrayPublishCreator):
|
|||
folders=False,
|
||||
extensions=self.extensions,
|
||||
sequence_extensions=self.sequence_extensions,
|
||||
label="Filepath"
|
||||
label="Filepath",
|
||||
)
|
||||
output.append(file_def)
|
||||
if self.enable_review:
|
||||
|
|
|
|||
|
|
@ -505,7 +505,7 @@ class FileDef(AbtractAttrDef):
|
|||
It is possible to define filters of allowed file extensions and if supports
|
||||
folders.
|
||||
Args:
|
||||
multipath(bool): Allow multiple path.
|
||||
single_item(bool): Allow only single path item.
|
||||
folders(bool): Allow folder paths.
|
||||
extensions(list<str>): Allow files with extensions. Empty list will
|
||||
allow all extensions and None will disable files completely.
|
||||
|
|
@ -527,7 +527,7 @@ class FileDef(AbtractAttrDef):
|
|||
]
|
||||
|
||||
def __init__(
|
||||
self, key, multipath=False, folders=None, extensions=None,
|
||||
self, key, single_item=True, folders=None, extensions=None,
|
||||
sequence_extensions=None, default=None, **kwargs
|
||||
):
|
||||
if folders is None and extensions is None:
|
||||
|
|
@ -535,19 +535,12 @@ class FileDef(AbtractAttrDef):
|
|||
extensions = []
|
||||
|
||||
if default is None:
|
||||
if multipath:
|
||||
default = []
|
||||
else:
|
||||
if single_item:
|
||||
default = FileDefItem.create_empty_item().to_dict()
|
||||
else:
|
||||
if multipath:
|
||||
if not isinstance(default, (tuple, list, set)):
|
||||
raise TypeError((
|
||||
"'default' argument must be 'list', 'tuple' or 'set'"
|
||||
", not '{}'"
|
||||
).format(type(default)))
|
||||
|
||||
else:
|
||||
default = []
|
||||
else:
|
||||
if single_item:
|
||||
if isinstance(default, dict):
|
||||
FileDefItem.from_dict(default)
|
||||
|
||||
|
|
@ -559,18 +552,26 @@ class FileDef(AbtractAttrDef):
|
|||
"'default' argument must be 'str' or 'dict' not '{}'"
|
||||
).format(type(default)))
|
||||
|
||||
else:
|
||||
if not isinstance(default, (tuple, list, set)):
|
||||
raise TypeError((
|
||||
"'default' argument must be 'list', 'tuple' or 'set'"
|
||||
", not '{}'"
|
||||
).format(type(default)))
|
||||
|
||||
# Change horizontal label
|
||||
is_label_horizontal = kwargs.get("is_label_horizontal")
|
||||
if is_label_horizontal is None:
|
||||
is_label_horizontal = True
|
||||
if multipath:
|
||||
if single_item:
|
||||
is_label_horizontal = True
|
||||
else:
|
||||
is_label_horizontal = False
|
||||
kwargs["is_label_horizontal"] = is_label_horizontal
|
||||
|
||||
if sequence_extensions is None:
|
||||
sequence_extensions = self.default_sequence_extensions
|
||||
|
||||
self.multipath = multipath
|
||||
self.single_item = single_item
|
||||
self.folders = folders
|
||||
self.extensions = set(extensions)
|
||||
self.sequence_extensions = set(sequence_extensions)
|
||||
|
|
@ -581,7 +582,7 @@ class FileDef(AbtractAttrDef):
|
|||
return False
|
||||
|
||||
return (
|
||||
self.multipath == other.multipath
|
||||
self.single_item == other.single_item
|
||||
and self.folders == other.folders
|
||||
and self.extensions == other.extensions
|
||||
and self.sequence_extensions == self.sequence_extensions
|
||||
|
|
@ -611,13 +612,13 @@ class FileDef(AbtractAttrDef):
|
|||
for file_item in file_items
|
||||
])
|
||||
|
||||
if self.multipath:
|
||||
if not self.single_item:
|
||||
return dict_items
|
||||
|
||||
if not dict_items:
|
||||
return self.default
|
||||
return dict_items[0]
|
||||
|
||||
if self.multipath:
|
||||
return []
|
||||
return FileDefItem.create_empty_item().to_dict()
|
||||
if self.single_item:
|
||||
return FileDefItem.create_empty_item().to_dict()
|
||||
return []
|
||||
|
|
|
|||
|
|
@ -75,10 +75,10 @@ class DropEmpty(QtWidgets.QWidget):
|
|||
|
||||
|
||||
class FilesModel(QtGui.QStandardItemModel):
|
||||
def __init__(self, allow_multiple_items, sequence_exts):
|
||||
def __init__(self, single_item, sequence_exts):
|
||||
super(FilesModel, self).__init__()
|
||||
|
||||
self._allow_multiple_items = allow_multiple_items
|
||||
self._single_item = single_item
|
||||
self._sequence_exts = sequence_exts
|
||||
|
||||
self._items_by_id = {}
|
||||
|
|
@ -94,7 +94,7 @@ class FilesModel(QtGui.QStandardItemModel):
|
|||
if not obj_items:
|
||||
return
|
||||
|
||||
if not self._allow_multiple_items:
|
||||
if self._single_item:
|
||||
obj_items = [obj_items[0]]
|
||||
current_ids = list(self._file_items_by_id.keys())
|
||||
if current_ids:
|
||||
|
|
@ -288,13 +288,13 @@ class FilesView(QtWidgets.QListView):
|
|||
class FilesWidget(QtWidgets.QFrame):
|
||||
value_changed = QtCore.Signal()
|
||||
|
||||
def __init__(self, allow_multiple_items, sequence_exts, parent):
|
||||
def __init__(self, single_item, sequence_exts, parent):
|
||||
super(FilesWidget, self).__init__(parent)
|
||||
self.setAcceptDrops(True)
|
||||
|
||||
empty_widget = DropEmpty(self)
|
||||
|
||||
files_model = FilesModel(allow_multiple_items, sequence_exts)
|
||||
files_model = FilesModel(single_item, sequence_exts)
|
||||
files_proxy_model = FilesProxyModel()
|
||||
files_proxy_model.setSourceModel(files_model)
|
||||
files_view = FilesView(self)
|
||||
|
|
@ -311,7 +311,6 @@ class FilesWidget(QtWidgets.QFrame):
|
|||
|
||||
self._in_set_value = False
|
||||
|
||||
self._allow_multiple_items = allow_multiple_items
|
||||
self._empty_widget = empty_widget
|
||||
self._files_model = files_model
|
||||
self._files_proxy_model = files_proxy_model
|
||||
|
|
|
|||
|
|
@ -338,10 +338,8 @@ class UnknownAttrWidget(_BaseAttrDefWidget):
|
|||
|
||||
class FileAttrWidget(_BaseAttrDefWidget):
|
||||
def _ui_init(self):
|
||||
self.multipath = self.attr_def.multipath
|
||||
|
||||
input_widget = FilesWidget(
|
||||
self.multipath, self.attr_def.sequence_extensions, self
|
||||
self.attr_def.single_item, self.attr_def.sequence_extensions, self
|
||||
)
|
||||
|
||||
if self.attr_def.tooltip:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue