Add remaining logic to document splitter, and fix bug in recursive permanet delete

This commit is contained in:
Veronica Berglyd Olsen
2022-10-13 17:11:43 +02:00
parent 049190739f
commit 02976c5f12
2 changed files with 70 additions and 27 deletions
+33 -20
View File
@@ -517,18 +517,14 @@ class GuiProjectTree(QTreeWidget):
# Handle new file creation
if itemType == nwItemType.FILE and hLevel > 0:
if self.theProject.writeNewFile(tHandle, hLevel, not isNote):
# If successful, update word count
wC = self.theProject.index.getCounts(tHandle)[1]
self.propagateCount(tHandle, wC)
self.projView.wordCountsChanged.emit()
self.theProject.writeNewFile(tHandle, hLevel, not isNote)
# Add the new item to the project tree
self.revealNewTreeItem(tHandle, nHandle)
self.revealNewTreeItem(tHandle, nHandle=nHandle, wordCount=True)
return True
def revealNewTreeItem(self, tHandle, nHandle=None):
def revealNewTreeItem(self, tHandle, nHandle=None, wordCount=False):
"""Reveal a newly added project item in the project tree.
"""
nwItem = self.theProject.tree[tHandle]
@@ -539,6 +535,11 @@ class GuiProjectTree(QTreeWidget):
if trItem is None:
return False
if nwItem.isFileType() and wordCount:
wC = self.theProject.index.getCounts(tHandle)[1]
self.propagateCount(tHandle, wC)
self.projView.wordCountsChanged.emit()
pHandle = nwItem.itemParent
if pHandle is not None and pHandle in self._treeMap:
self._treeMap[pHandle].setExpanded(True)
@@ -802,17 +803,16 @@ class GuiProjectTree(QTreeWidget):
logger.debug("Permanently deleting item '%s'", tHandle)
self.propagateCount(tHandle, 0)
itemList = self.getTreeFromHandle(tHandle)
trItemP = trItemS.parent()
tIndex = trItemP.indexOfChild(trItemS)
trItemP.takeChild(tIndex)
for dHandle in reversed(itemList):
for dHandle in reversed(self.getTreeFromHandle(tHandle)):
if self.mainGui.docEditor.docHandle() == dHandle:
self.mainGui.closeDocument()
self.theProject.removeItem(tHandle)
self._treeMap.pop(tHandle, None)
self.theProject.removeItem(dHandle)
self._treeMap.pop(dHandle, None)
self._alertTreeChange(tHandle, flush=flush)
self.projView.wordCountsChanged.emit()
@@ -1433,14 +1433,14 @@ class GuiProjectTree(QTreeWidget):
if not docMerger.writeTargetDoc():
self.mainGui.makeAlert([
self.tr("Could not save document."), docMerger.getError()
self.tr("Could not write document content."), docMerger.getError()
], nwAlert.ERROR)
return False
if newFile:
self.mainGui.projView.revealNewTreeItem(mHandle, tHandle)
self.theProject.index.reIndexHandle(mHandle)
if newFile:
self.revealNewTreeItem(mHandle, nHandle=tHandle, wordCount=True)
self.mainGui.openDocument(mHandle, doScroll=True)
if mrgData.get("moveToTrash", False):
@@ -1477,17 +1477,30 @@ class GuiProjectTree(QTreeWidget):
if dlgSplit.result() == QDialog.Accepted:
splitData, splitText = dlgSplit.getData()
print(splitData)
headerList = splitData.get("headerList", [])
intoFolder = splitData.get("intoFolder", False)
docHierarchy = splitData.get("docHierarchy", False)
docSplit = DocSplitter(self.theProject, tHandle)
docSplit.setParentItem(tItem.itemParent)
docSplit.splitDocument(headerList, splitText)
if intoFolder:
fHandle = docSplit.newParentFolder(tItem.itemParent, tItem.itemName)
self.revealNewTreeItem(fHandle, nHandle=tHandle)
self._alertTreeChange(fHandle, flush=False)
else:
docSplit.setParentItem(tItem.itemParent)
for writeOk, dHandle, nHandle in docSplit.writeDocuments():
self.mainGui.projView.revealNewTreeItem(dHandle, nHandle)
docSplit.splitDocument(headerList, splitText)
for writeOk, dHandle, nHandle in docSplit.writeDocuments(docHierarchy):
self.theProject.index.reIndexHandle(dHandle)
self.revealNewTreeItem(dHandle, nHandle=nHandle, wordCount=True)
self._alertTreeChange(dHandle, flush=False)
if not writeOk:
self.mainGui.makeAlert([
self.tr("Could not write document content."), docSplit.getError()
], nwAlert.ERROR)
self.saveTreeOrder()
else:
logger.info("Action cancelled by user")