changed multi item to single item

This commit is contained in:
Jakub Trllo 2022-04-25 15:24:37 +02:00
parent 7fe279fda5
commit 2efd8b774c
4 changed files with 29 additions and 31 deletions

View file

@ -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:

View file

@ -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 []

View file

@ -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

View file

@ -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: