From 0a5d1e593c330525b72ac81d3638fb7486be583a Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sat, 2 Nov 2019 11:40:14 +0100 Subject: [PATCH] Make sure deleted items are also deleted from the index, so the index is up to date --- nw/gui/elements/doctree.py | 3 ++- nw/project/index.py | 28 +++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/nw/gui/elements/doctree.py b/nw/gui/elements/doctree.py index 75c745a6..d618e4ce 100644 --- a/nw/gui/elements/doctree.py +++ b/nw/gui/elements/doctree.py @@ -220,7 +220,7 @@ class GuiDocTree(QTreeWidget): def deleteItem(self, tHandle=None): """Delete items from the tree. Note that this does not delete the item from the item tree in the project object. However, since this is only meta data, there isn't really a need to do - that to save memory. As items not in the tree are not saved to the project file, a loaded + that to save memory. Items not in the tree are not saved to the project file, so a loaded project will be clean anyway. """ @@ -247,6 +247,7 @@ class GuiDocTree(QTreeWidget): self.clearSelection() trItemP.setSelected(True) self.theProject.setProjectChanged(True) + self.theParent.theIndex.deleteHandle(tHandle) elif nwItemS.itemType == nwItemType.FOLDER: logger.debug("User requested folder %s deleted" % tHandle) diff --git a/nw/project/index.py b/nw/project/index.py index 9097c462..93890664 100644 --- a/nw/project/index.py +++ b/nw/project/index.py @@ -64,10 +64,27 @@ class NWIndex(): return + ## + # Public Methods + ## + def clearIndex(self): self.tagIndex = {} self.refIndex = {} self.novelIndex = {} + self.noteIndex = {} + return + + def deleteHandle(self, tHandle): + + for tTag in self.tagIndex: + if self.tagIndex[tTag][1] == tHandle: + self.tagIndex.pop(tTag, None) + + self.refIndex.pop(tHandle, None) + self.novelIndex.pop(tHandle, None) + self.noteIndex.pop(tHandle, None) + return ## @@ -142,6 +159,7 @@ class NWIndex(): theItem = self.theProject.getItem(tHandle) if theItem is None: return False if theItem.itemType != nwItemType.FILE: return False + if theItem.parHandle == self.theProject.trashRoot: return False itemClass = theItem.itemClass itemLayout = theItem.itemLayout @@ -336,19 +354,19 @@ class NWIndex(): return True - def buildReferenceList(self, theHandle): - """Build a list of files referring back to our file, specified by theHandle. + def buildReferenceList(self, tHandle): + """Build a list of files referring back to our file, specified by tHandle. """ theRefs = {} - tItem = self.theProject.getItem(theHandle) - if theHandle is None: + tItem = self.theProject.getItem(tHandle) + if tHandle is None: return theRefs theTag = None for tTag in self.tagIndex: - if theHandle == self.tagIndex[tTag][1]: + if tHandle == self.tagIndex[tTag][1]: theTag = tTag break