mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 21:32:15 +01:00
Merge pull request #3226 from BigRoy/project_manager_paste_multiple
This commit is contained in:
commit
ea339f894a
2 changed files with 27 additions and 9 deletions
|
|
@ -1472,12 +1472,7 @@ class HierarchyModel(QtCore.QAbstractItemModel):
|
|||
mimedata.setData("application/copy_task", encoded_data)
|
||||
return mimedata
|
||||
|
||||
def paste_mime_data(self, index, mime_data):
|
||||
if not index.isValid():
|
||||
return
|
||||
|
||||
item_id = index.data(IDENTIFIER_ROLE)
|
||||
item = self._items_by_id[item_id]
|
||||
def _paste_mime_data(self, item, mime_data):
|
||||
if not isinstance(item, (AssetItem, TaskItem)):
|
||||
return
|
||||
|
||||
|
|
@ -1511,6 +1506,25 @@ class HierarchyModel(QtCore.QAbstractItemModel):
|
|||
task_item = TaskItem(task_data, True)
|
||||
self.add_item(task_item, parent)
|
||||
|
||||
def paste(self, indexes, mime_data):
|
||||
|
||||
# Get the selected Assets uniquely
|
||||
items = set()
|
||||
for index in indexes:
|
||||
if not index.isValid():
|
||||
return
|
||||
item_id = index.data(IDENTIFIER_ROLE)
|
||||
item = self._items_by_id[item_id]
|
||||
|
||||
# Do not copy into the Task Item so get parent Asset instead
|
||||
if isinstance(item, TaskItem):
|
||||
item = item.parent()
|
||||
|
||||
items.add(item)
|
||||
|
||||
for item in items:
|
||||
self._paste_mime_data(item, mime_data)
|
||||
|
||||
|
||||
class BaseItem:
|
||||
"""Base item for HierarchyModel.
|
||||
|
|
|
|||
|
|
@ -365,20 +365,24 @@ class HierarchyView(QtWidgets.QTreeView):
|
|||
event.accept()
|
||||
|
||||
def _copy_items(self, indexes=None):
|
||||
clipboard = QtWidgets.QApplication.clipboard()
|
||||
try:
|
||||
if indexes is None:
|
||||
indexes = self.selectedIndexes()
|
||||
mime_data = self._source_model.copy_mime_data(indexes)
|
||||
|
||||
QtWidgets.QApplication.clipboard().setMimeData(mime_data)
|
||||
clipboard.setMimeData(mime_data)
|
||||
self._show_message("Tasks copied")
|
||||
except ValueError as exc:
|
||||
# Change clipboard to contain empty data
|
||||
empty_mime_data = QtCore.QMimeData()
|
||||
clipboard.setMimeData(empty_mime_data)
|
||||
self._show_message(str(exc))
|
||||
|
||||
def _paste_items(self):
|
||||
index = self.currentIndex()
|
||||
mime_data = QtWidgets.QApplication.clipboard().mimeData()
|
||||
self._source_model.paste_mime_data(index, mime_data)
|
||||
rows = self.selectionModel().selectedRows()
|
||||
self._source_model.paste(rows, mime_data)
|
||||
|
||||
def _delete_items(self, indexes=None):
|
||||
if indexes is None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue