From 68a7dd439078b00e534e74fe42db12ddf35c88d9 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" <1619840+vkbo@users.noreply.github.com> Date: Sun, 16 Aug 2020 17:25:11 +0200 Subject: [PATCH] Fixed menu entries and drop options for trash and archive folders --- nw/core/index.py | 11 +++++++++++ nw/core/tree.py | 6 ++---- nw/gui/projtree.py | 18 +++++++++++++++--- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/nw/core/index.py b/nw/core/index.py index 5b7cc05c..6962dbb7 100644 --- a/nw/core/index.py +++ b/nw/core/index.py @@ -267,13 +267,24 @@ class NWIndex(): files before we save them, unless we're rebuilding the index. """ theItem = self.theProject.projTree[tHandle] + theRoot = self.theProject.projTree.getRootItem(tHandle) if theItem is None: + logger.error("Not indexing unknown item %s" % tHandle) return False if theItem.itemType != nwItemType.FILE: + logger.error("Not indexing non-file item %s" % tHandle) return False if theItem.parHandle == self.theProject.projTree.trashRoot(): + logger.error("Not indexing trash item %s" % tHandle) return False if theItem.itemLayout == nwItemLayout.NO_LAYOUT: + logger.error("Not indexing no-layout item %s" % tHandle) + return False + if theRoot is None: + logger.error("Not indexing homeless item %s" % tHandle) + return False + if theRoot.itemClass == nwItemClass.ARCHIVE: + logger.error("Not indexing archived item %s" % tHandle) return False itemClass = theItem.itemClass diff --git a/nw/core/tree.py b/nw/core/tree.py index 74080bd3..3181892a 100644 --- a/nw/core/tree.py +++ b/nw/core/tree.py @@ -245,12 +245,10 @@ class NWTree(): if tItem is not None: for i in range(200): if tItem.parHandle is None: - return tHandle + return tItem else: tHandle = tItem.parHandle - tItem = self.__getitem__(tHandle) - if tItem is None: - return tHandle + tItem = self.__getitem__(tHandle) return None def getItemPath(self, tHandle): diff --git a/nw/gui/projtree.py b/nw/gui/projtree.py index f80437ed..bcc81036 100644 --- a/nw/gui/projtree.py +++ b/nw/gui/projtree.py @@ -201,7 +201,17 @@ class GuiProjectTree(QTreeWidget): if pHandle == self.theProject.projTree.trashRoot(): self.makeAlert( - "Cannot add new files or folders to the trash folder.", nwAlert.ERROR + "Cannot add new files or folders to the %s folder." % ( + nwLabels.CLASS_NAME[nwItemClass.TRASH] + ), nwAlert.ERROR + ) + return False + + if pItem.itemClass == nwItemClass.ARCHIVE: + self.makeAlert( + "Cannot add new files or folders to the %s folder." % ( + nwLabels.CLASS_NAME[nwItemClass.ARCHIVE] + ), nwAlert.ERROR ) return False @@ -671,6 +681,7 @@ class GuiProjectTree(QTreeWidget): isRoot = snItem.itemType == nwItemType.ROOT onFree = dnItem.itemClass == nwItemClass.ARCHIVE onFree |= dnItem.itemClass == nwItemClass.TRASH + onFree &= snItem.itemType == nwItemType.FILE isOnTop = self.dropIndicatorPosition() == QAbstractItemView.OnItem if (isSame or isNone or isNote or onFree) and not (onFile and isOnTop) and not isRoot: logger.debug("Drag'n'drop of item %s accepted" % sHandle) @@ -944,14 +955,15 @@ class GuiProjectTreeMenu(QMenu): inTrash = theItem.parHandle == trashHandle isTrash = theItem.itemHandle == trashHandle isFile = theItem.itemType == nwItemType.FILE + isArch = theItem.itemClass == nwItemClass.ARCHIVE isOrph = isFile and theItem.parHandle is None showOpen = isFile showView = isFile showEdit = not isTrash and not isOrph showExport = isFile and not inTrash and not isOrph - showNewFile = not isTrash and not inTrash and not isOrph - showNewFolder = not isTrash and not inTrash and not isOrph + showNewFile = not isTrash and not inTrash and not isOrph and not isArch + showNewFolder = not isTrash and not inTrash and not isOrph and not isArch showDelete = not isTrash showEmpty = isTrash