Adds duplicate in contexte menu, and fixes a bug in it #229

This commit is contained in:
Olivier Keshavjee 2017-11-24 18:44:31 +01:00
parent 6d98427a2d
commit 66f09729b5

View file

@ -100,19 +100,28 @@ class outlineBasics(QAbstractItemView):
menu.addSeparator() menu.addSeparator()
# Copy, cut, paste # Copy, cut, paste, duplicate
self.actCopy = QAction(QIcon.fromTheme("edit-copy"), qApp.translate("outlineBasics", "Copy"), menu) self.actCopy = QAction(QIcon.fromTheme("edit-copy"),
qApp.translate("outlineBasics", "Copy"), menu)
self.actCopy.triggered.connect(self.copy) self.actCopy.triggered.connect(self.copy)
menu.addAction(self.actCopy) menu.addAction(self.actCopy)
self.actCut = QAction(QIcon.fromTheme("edit-cut"), qApp.translate("outlineBasics", "Cut"), menu) self.actCut = QAction(QIcon.fromTheme("edit-cut"),
qApp.translate("outlineBasics", "Cut"), menu)
self.actCut.triggered.connect(self.cut) self.actCut.triggered.connect(self.cut)
menu.addAction(self.actCut) menu.addAction(self.actCut)
self.actPaste = QAction(QIcon.fromTheme("edit-paste"), qApp.translate("outlineBasics", "Paste"), menu) self.actPaste = QAction(QIcon.fromTheme("edit-paste"),
qApp.translate("outlineBasics", "Paste"), menu)
self.actPaste.triggered.connect(self.paste) self.actPaste.triggered.connect(self.paste)
menu.addAction(self.actPaste) menu.addAction(self.actPaste)
self.actDuplicate = QAction(QIcon.fromTheme("folder-copy"),
qApp.translate("outlineBasics", "Duplicate"),
menu)
self.actDuplicate.triggered.connect(self.duplicate)
menu.addAction(self.actDuplicate)
menu.addSeparator() menu.addSeparator()
# POV # POV
@ -222,6 +231,7 @@ class outlineBasics(QAbstractItemView):
if len(sel) == 0: if len(sel) == 0:
self.actCopy.setEnabled(False) self.actCopy.setEnabled(False)
self.actCut.setEnabled(False) self.actCut.setEnabled(False)
self.actDuplicate.setEnabled(False)
self.actRename.setEnabled(False) self.actRename.setEnabled(False)
self.actDelete.setEnabled(False) self.actDelete.setEnabled(False)
self.menuPOV.setEnabled(False) self.menuPOV.setEnabled(False)
@ -274,12 +284,19 @@ class outlineBasics(QAbstractItemView):
mimeData = self.model().mimeData(self.selectionModel().selectedIndexes()) mimeData = self.model().mimeData(self.selectionModel().selectedIndexes())
qApp.clipboard().setMimeData(mimeData) qApp.clipboard().setMimeData(mimeData)
def paste(self): def paste(self, mimeData=None):
"""
Paste item from mimeData to selected item. If mimeData is not given,
it is taken from clipboard. If not item selected, paste into root.
"""
index = self.currentIndex() index = self.currentIndex()
if len(self.getSelection()) == 0: if len(self.getSelection()) == 0:
index = self.rootIndex() index = self.rootIndex()
data = qApp.clipboard().mimeData()
self.model().dropMimeData(data, Qt.CopyAction, -1, 0, index) if mimeData is None:
mimeData = qApp.clipboard().mimeData()
self.model().dropMimeData(mimeData, Qt.CopyAction, -1, 0, index)
def cut(self): def cut(self):
self.copy() self.copy()
@ -310,8 +327,11 @@ class outlineBasics(QAbstractItemView):
self.model().removeIndexes(self.getSelection()) self.model().removeIndexes(self.getSelection())
def duplicate(self): def duplicate(self):
self.copy() """
self.paste() Duplicates item(s), while preserving clipbaord content.
"""
mimeData = self.model().mimeData(self.selectionModel().selectedIndexes())
self.paste(mimeData)
def move(self, delta=1): def move(self, delta=1):
""" """