+14
-16
@@ -451,14 +451,14 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
for tHandle in self.getTreeFromHandle(trashHandle):
|
for tHandle in self.getTreeFromHandle(trashHandle):
|
||||||
if tHandle == trashHandle:
|
if tHandle == trashHandle:
|
||||||
continue
|
continue
|
||||||
self.deleteItem(tHandle, alreadyAsked=True)
|
self.deleteItem(tHandle, alreadyAsked=True, bulkAction=True)
|
||||||
|
|
||||||
if nTrash > 0:
|
if nTrash > 0:
|
||||||
self._setTreeChanged(True)
|
self._setTreeChanged(True)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def deleteItem(self, tHandle=None, alreadyAsked=False, askForTrash=False):
|
def deleteItem(self, tHandle=None, alreadyAsked=False, bulkAction=False):
|
||||||
"""Delete an item from the project tree. As a first step, files are
|
"""Delete an item from the project tree. As a first step, files are
|
||||||
moved to the Trash folder. Permanent deletion is a second step. This
|
moved to the Trash folder. Permanent deletion is a second step. This
|
||||||
second step also deletes the item from the project object as well as
|
second step also deletes the item from the project object as well as
|
||||||
@@ -469,24 +469,27 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
logger.error("No project open")
|
logger.error("No project open")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not self.hasFocus():
|
if not self.hasFocus() and not bulkAction:
|
||||||
|
logger.info("Delete action blocked due to no widget focus")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if tHandle is None:
|
if tHandle is None:
|
||||||
tHandle = self.getSelectedHandle()
|
tHandle = self.getSelectedHandle()
|
||||||
|
|
||||||
if tHandle is None:
|
if tHandle is None:
|
||||||
|
logger.error("There is no item to delete")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
trItemS = self._getTreeItem(tHandle)
|
trItemS = self._getTreeItem(tHandle)
|
||||||
nwItemS = self.theProject.projTree[tHandle]
|
nwItemS = self.theProject.projTree[tHandle]
|
||||||
|
|
||||||
if trItemS is None or nwItemS is None:
|
if trItemS is None or nwItemS is None:
|
||||||
|
logger.error("Could not find tree item for deletion")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
wCount = int(trItemS.data(self.C_COUNT, Qt.UserRole))
|
wCount = int(trItemS.data(self.C_COUNT, Qt.UserRole))
|
||||||
if nwItemS.itemType == nwItemType.FILE:
|
if nwItemS.itemType == nwItemType.FILE:
|
||||||
logger.debug("User requested file %s moved to trash" % tHandle)
|
logger.debug("User requested file %s deleted" % tHandle)
|
||||||
trItemP = trItemS.parent()
|
trItemP = trItemS.parent()
|
||||||
trItemT = self._addTrashRoot()
|
trItemT = self._addTrashRoot()
|
||||||
if trItemP is None or trItemT is None:
|
if trItemP is None or trItemT is None:
|
||||||
@@ -526,20 +529,15 @@ class GuiProjectTree(QTreeWidget):
|
|||||||
else:
|
else:
|
||||||
# The file is not already in the trash folder, so we
|
# The file is not already in the trash folder, so we
|
||||||
# move it there.
|
# move it there.
|
||||||
doTrash = False
|
msgYes = self.askQuestion(
|
||||||
if askForTrash:
|
"Delete File", "Move file '%s' to Trash?" % nwItemS.itemName
|
||||||
msgYes = self.askQuestion(
|
)
|
||||||
"Delete File", "Move file '%s' to Trash?" % nwItemS.itemName
|
if msgYes:
|
||||||
)
|
|
||||||
if msgYes:
|
|
||||||
doTrash = True
|
|
||||||
else:
|
|
||||||
doTrash = True
|
|
||||||
|
|
||||||
if doTrash:
|
|
||||||
if pHandle is None:
|
if pHandle is None:
|
||||||
logger.warning("File has no parent item")
|
logger.warning("File has no parent item")
|
||||||
|
|
||||||
|
logger.debug("Moving file %s to trash" % tHandle)
|
||||||
|
|
||||||
self.propagateCount(tHandle, 0)
|
self.propagateCount(tHandle, 0)
|
||||||
tIndex = trItemP.indexOfChild(trItemS)
|
tIndex = trItemP.indexOfChild(trItemS)
|
||||||
trItemC = trItemP.takeChild(tIndex)
|
trItemC = trItemP.takeChild(tIndex)
|
||||||
@@ -1205,7 +1203,7 @@ class GuiProjectTreeMenu(QMenu):
|
|||||||
"""Forward the delete item call to the project tree.
|
"""Forward the delete item call to the project tree.
|
||||||
"""
|
"""
|
||||||
if self.theItem is not None:
|
if self.theItem is not None:
|
||||||
self.theTree.deleteItem(askForTrash=True)
|
self.theTree.deleteItem()
|
||||||
return
|
return
|
||||||
|
|
||||||
def _doEmptyTrash(self):
|
def _doEmptyTrash(self):
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ def testGuiProjTree_TreeItems(qtbot, caplog, monkeypatch, nwGUI, nwMinimal):
|
|||||||
monkeypatch.setattr(QMessageBox, "warning", lambda *args: QMessageBox.Yes)
|
monkeypatch.setattr(QMessageBox, "warning", lambda *args: QMessageBox.Yes)
|
||||||
monkeypatch.setattr(QMessageBox, "information", lambda *args: QMessageBox.Yes)
|
monkeypatch.setattr(QMessageBox, "information", lambda *args: QMessageBox.Yes)
|
||||||
monkeypatch.setattr(GuiMain, "editItem", lambda *args: None)
|
monkeypatch.setattr(GuiMain, "editItem", lambda *args: None)
|
||||||
monkeypatch.setattr(GuiProjectTree, "hasFocus", lambda *args: True)
|
|
||||||
|
|
||||||
nwGUI.theProject.projTree.setSeed(42)
|
nwGUI.theProject.projTree.setSeed(42)
|
||||||
nwTree = nwGUI.treeView
|
nwTree = nwGUI.treeView
|
||||||
|
|||||||
Reference in New Issue
Block a user