From b03b80961b17491b0afb7e79f0ac200e70bf41d6 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sun, 9 Feb 2020 20:45:36 +0100 Subject: [PATCH 1/4] Clarified dropdown options on split document dialog --- nw/gui/dialogs/docmerge.py | 2 +- nw/gui/dialogs/docsplit.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/nw/gui/dialogs/docmerge.py b/nw/gui/dialogs/docmerge.py index 2b46eba5..ba3f8d61 100644 --- a/nw/gui/dialogs/docmerge.py +++ b/nw/gui/dialogs/docmerge.py @@ -46,7 +46,7 @@ class GuiDocMerge(QDialog): self.outerBox.addLayout(self.innerBox) self.doMergeForm = QGridLayout() - self.doMergeForm.setContentsMargins(10,5,0,10) + self.doMergeForm.setContentsMargins(0,0,0,0) self.listBox = QListWidget() self.listBox.setDragDropMode(QAbstractItemView.InternalMove) diff --git a/nw/gui/dialogs/docsplit.py b/nw/gui/dialogs/docsplit.py index 739bb14e..817a3284 100644 --- a/nw/gui/dialogs/docsplit.py +++ b/nw/gui/dialogs/docsplit.py @@ -46,16 +46,16 @@ class GuiDocSplit(QDialog): self.outerBox.addLayout(self.innerBox) self.doMergeForm = QGridLayout() - self.doMergeForm.setContentsMargins(10,5,0,10) + self.doMergeForm.setContentsMargins(0,0,0,0) self.listBox = QListWidget() self.listBox.setDragDropMode(QAbstractItemView.NoDragDrop) self.splitLevel = QComboBox(self) - self.splitLevel.addItem("Split on Title (Level 1)", 1) - self.splitLevel.addItem("Split on Chapter (Level 2)", 2) - self.splitLevel.addItem("Split on Scene (Level 3)", 3) - self.splitLevel.addItem("Split on Section (Level 4)", 4) + self.splitLevel.addItem("Split on Header Level 1 (Title)", 1) + self.splitLevel.addItem("Split up to Header Level 2 (Chapter)", 2) + self.splitLevel.addItem("Split up to Header Level 3 (Scene)", 3) + self.splitLevel.addItem("Split up to Header Level 4 (Section)", 4) self.splitLevel.setCurrentIndex(2) self.splitLevel.currentIndexChanged.connect(self._populateList) From f2eedff6d212ca5fc3246990436496db5bc6757a Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sun, 9 Feb 2020 21:17:57 +0100 Subject: [PATCH 2/4] Added empty trash option --- nw/gui/elements/doctree.py | 40 ++++++++++++++++++++++++++++++++++++-- nw/gui/mainmenu.py | 6 ++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/nw/gui/elements/doctree.py b/nw/gui/elements/doctree.py index 5ade6c5b..a388a7a4 100644 --- a/nw/gui/elements/doctree.py +++ b/nw/gui/elements/doctree.py @@ -246,7 +246,43 @@ class GuiDocTree(QTreeWidget): ] return retVals - def deleteItem(self, tHandle=None): + def emptyTrash(self): + """Permanently delete all documents in the Trash folder. This + function only asks for confirmation once, and calls the regular + deleteItem function for each document in the Trash folder. + """ + + if self.theProject.trashRoot is None: + self.makeAlert("There is no Trash folder.", nwAlert.INFO) + return False + + theTrash = self.getTreeFromHandle(self.theProject.trashRoot) + if self.theProject.trashRoot in theTrash: + theTrash.remove(self.theProject.trashRoot) + + nTrash = len(theTrash) + print(theTrash) + if nTrash == 0: + self.makeAlert("The Trash folder is empty.", nwAlert.INFO) + return False + + msgBox = QMessageBox() + msgRes = msgBox.question( + self, "Empty Trash", "Permanently delete %d file%s from Trash?" % ( + nTrash, "s"*int(nTrash > 1) + ) + ) + if msgRes != QMessageBox.Yes: + return False + + for tHandle in self.getTreeFromHandle(self.theProject.trashRoot): + if tHandle == self.theProject.trashRoot: + continue + self.deleteItem(tHandle, True) + + return True + + def deleteItem(self, tHandle=None, alreadyAsked=False): """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 @@ -280,7 +316,7 @@ class GuiDocTree(QTreeWidget): # user if they want to permanently delete the file. doPermanent = False - if self.mainConf.showGUI: + if self.mainConf.showGUI and not alreadyAsked: msgBox = QMessageBox() msgRes = msgBox.question( self, "Delete File", "Permanently delete file '%s'?" % nwItemS.itemName diff --git a/nw/gui/mainmenu.py b/nw/gui/mainmenu.py index ba75e779..b515576a 100644 --- a/nw/gui/mainmenu.py +++ b/nw/gui/mainmenu.py @@ -281,6 +281,12 @@ class GuiMainMenu(QMenuBar): self.aDeleteItem.triggered.connect(lambda : self.theParent.treeView.deleteItem(None)) self.projMenu.addAction(self.aDeleteItem) + # Project > Empty Trash + self.aEmptyTrash = QAction("Empty Trash", self) + self.aEmptyTrash.setStatusTip("Permanently delete all files in the Trash folder") + self.aEmptyTrash.triggered.connect(self.theParent.treeView.emptyTrash) + self.projMenu.addAction(self.aEmptyTrash) + # Project > Separator self.projMenu.addSeparator() From 963c819f859a05d70a3f89d7d8c5c97e68756160 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sun, 9 Feb 2020 21:20:34 +0100 Subject: [PATCH 3/4] Removed debug print and added logging stuff --- nw/gui/elements/doctree.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nw/gui/elements/doctree.py b/nw/gui/elements/doctree.py index a388a7a4..28222af9 100644 --- a/nw/gui/elements/doctree.py +++ b/nw/gui/elements/doctree.py @@ -252,6 +252,7 @@ class GuiDocTree(QTreeWidget): deleteItem function for each document in the Trash folder. """ + logger.debug("Emptying Trash folder") if self.theProject.trashRoot is None: self.makeAlert("There is no Trash folder.", nwAlert.INFO) return False @@ -261,7 +262,6 @@ class GuiDocTree(QTreeWidget): theTrash.remove(self.theProject.trashRoot) nTrash = len(theTrash) - print(theTrash) if nTrash == 0: self.makeAlert("The Trash folder is empty.", nwAlert.INFO) return False @@ -275,6 +275,7 @@ class GuiDocTree(QTreeWidget): if msgRes != QMessageBox.Yes: return False + logger.verbose("Deleting %d files from Trash" % nTrash) for tHandle in self.getTreeFromHandle(self.theProject.trashRoot): if tHandle == self.theProject.trashRoot: continue From 7858412419b621b87c9df5cfd135a63d469dc498 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sun, 9 Feb 2020 21:25:20 +0100 Subject: [PATCH 4/4] Added check to make sure items are not dropped on the oprhaned folder --- nw/gui/elements/doctree.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/nw/gui/elements/doctree.py b/nw/gui/elements/doctree.py index 28222af9..ae7aef17 100644 --- a/nw/gui/elements/doctree.py +++ b/nw/gui/elements/doctree.py @@ -613,16 +613,22 @@ class GuiDocTree(QTreeWidget): """ sHandle = self.getSelectedHandle() if sHandle is None: + logger.error("No handle selected") return - dIndex = self.indexAt(theEvent.pos()) + dIndex = self.indexAt(theEvent.pos()) if not dIndex.isValid(): + logger.error("Invalid drop index") return dItem = self.itemFromIndex(dIndex) dHandle = dItem.text(self.C_HANDLE) snItem = self.theProject.getItem(sHandle) dnItem = self.theProject.getItem(dHandle) + if dnItem is None: + self.makeAlert("The item cannot be moved to that location.", nwAlert.ERROR) + return + isSame = snItem.itemClass == dnItem.itemClass isNone = snItem.itemClass == nwItemClass.NO_CLASS isNote = snItem.itemLayout == nwItemLayout.NOTE