Merge pull request #702 from vkbo/empty_trash

Empty Trash Fix
This commit is contained in:
Veronica Berglyd Olsen
2021-03-09 12:06:51 +01:00
committed by GitHub
2 changed files with 14 additions and 17 deletions
+14 -16
View File
@@ -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):
-1
View File
@@ -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