mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
Merge pull request #1531 from pypeclub/bugfix/handle_duplicated_task_names
This commit is contained in:
commit
1be1e634c9
1 changed files with 36 additions and 0 deletions
|
|
@ -1797,7 +1797,11 @@ class AssetItem(BaseItem):
|
|||
item.setData(False, DUPLICATED_ROLE)
|
||||
|
||||
def _remove_task(self, item):
|
||||
# This method is probably obsolete with changed logic and added
|
||||
# `on_task_remove_state_change` method.
|
||||
item_id = item.data(IDENTIFIER_ROLE)
|
||||
if item_id not in self._task_name_by_item_id:
|
||||
return
|
||||
|
||||
name = self._task_name_by_item_id.pop(item_id)
|
||||
self._task_items_by_name[name].remove(item)
|
||||
|
|
@ -1810,6 +1814,9 @@ class AssetItem(BaseItem):
|
|||
_item.setData(False, DUPLICATED_ROLE)
|
||||
|
||||
def _rename_task(self, item):
|
||||
if item.data(REMOVED_ROLE):
|
||||
return
|
||||
|
||||
new_name = item.data(QtCore.Qt.EditRole, "name").lower()
|
||||
item_id = item.data(IDENTIFIER_ROLE)
|
||||
prev_name = self._task_name_by_item_id[item_id]
|
||||
|
|
@ -1840,6 +1847,32 @@ class AssetItem(BaseItem):
|
|||
def on_task_name_change(self, task_item):
|
||||
self._rename_task(task_item)
|
||||
|
||||
def on_task_remove_state_change(self, task_item):
|
||||
is_removed = task_item.data(REMOVED_ROLE)
|
||||
item_id = task_item.data(IDENTIFIER_ROLE)
|
||||
if is_removed:
|
||||
name = self._task_name_by_item_id.pop(item_id)
|
||||
self._task_items_by_name[name].remove(task_item)
|
||||
|
||||
else:
|
||||
name = task_item.data(QtCore.Qt.EditRole, "name").lower()
|
||||
self._task_name_by_item_id[item_id] = name
|
||||
self._task_items_by_name[name].append(task_item)
|
||||
|
||||
# Remove from previous name mapping
|
||||
if not self._task_items_by_name[name]:
|
||||
self._task_items_by_name.pop(name)
|
||||
|
||||
elif len(self._task_items_by_name[name]) == 1:
|
||||
if name in self._duplicated_task_names:
|
||||
self._duplicated_task_names.remove(name)
|
||||
task_item.setData(False, DUPLICATED_ROLE)
|
||||
|
||||
else:
|
||||
self._duplicated_task_names.add(name)
|
||||
for _item in self._task_items_by_name[name]:
|
||||
_item.setData(True, DUPLICATED_ROLE)
|
||||
|
||||
def add_child(self, item, row=None):
|
||||
if item in self._children:
|
||||
return
|
||||
|
|
@ -1975,7 +2008,10 @@ class TaskItem(BaseItem):
|
|||
return True
|
||||
|
||||
if role == REMOVED_ROLE:
|
||||
if value == self._removed:
|
||||
return False
|
||||
self._removed = value
|
||||
self.parent().on_task_remove_state_change(self)
|
||||
return True
|
||||
|
||||
if (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue