diff --git a/nw/enum.py b/nw/enum.py index deacb379..78b4134b 100644 --- a/nw/enum.py +++ b/nw/enum.py @@ -50,6 +50,7 @@ class nwItemAction(Enum): DELETE = 10 DELETE_ROOT = 11 EMPTY_TRASH = 12 + RENAME = 13 # END Enum nwItemAction diff --git a/nw/gui/doctree.py b/nw/gui/doctree.py index 51ee896a..e58259e8 100644 --- a/nw/gui/doctree.py +++ b/nw/gui/doctree.py @@ -16,7 +16,7 @@ import nw from os import path from PyQt5.QtGui import QIcon from PyQt5.QtCore import Qt, QSize -from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QAbstractItemView +from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QAbstractItemView, QInputDialog, QLineEdit from nw.enum import nwItemType, nwItemClass from nw.project.item import NWItem @@ -87,6 +87,18 @@ class GuiDocTree(QTreeWidget): pItem.insertChild(nIndex, cItem) return + def renameTreeItem(self, tHandle): + tItem = self.theMap[tHandle] + oldName = tItem.text(0) + newName, isOk = QInputDialog.getText(self, "Rename Item", "New Name", QLineEdit.Normal,oldName) + if isOk: + newName = newName.strip() + if newName == "": + newName = oldName + tItem.setText(0,newName) + self.theProject.setItemName(tHandle, newName) + return + def saveTreeOrder(self): theList = [] for i in range(self.topLevelItemCount()): diff --git a/nw/gui/doctreectx.py b/nw/gui/doctreectx.py index 779696e1..859bcd9b 100644 --- a/nw/gui/doctreectx.py +++ b/nw/gui/doctreectx.py @@ -42,7 +42,6 @@ class GuiDocTreeCtx(QMenu): self.selHandle = None else: self.selHandle = selItems[0].text(3) - print(self.selHandle) self._buildMenu() @@ -54,6 +53,8 @@ class GuiDocTreeCtx(QMenu): def _buildMenu(self): vActs = self.theProject.getActionList(self.selHandle) + if nwItemAction.RENAME in vActs.keys(): + self._buildMenuRename(vActs) if nwItemAction.ADD_ROOT in vActs.keys(): self._buildMenuAddRoot(vActs) if nwItemAction.ADD_FOLDER in vActs.keys(): @@ -84,6 +85,14 @@ class GuiDocTreeCtx(QMenu): # Build Sub Menus ## + def _buildMenuRename(self, vActs): + mnuItem = QAction("Rename", self) + mnuItem.triggered.connect(lambda: self._ctxSignal( + nwItemAction.RENAME, None, None + )) + self.addAction(mnuItem) + return + def _buildMenuDelete(self, vActs): mnuItem = QAction("Delete Permanently", self) mnuItem.triggered.connect(lambda: self._ctxSignal( diff --git a/nw/gui/winmain.py b/nw/gui/winmain.py index 9eaea1af..4e7f7fda 100644 --- a/nw/gui/winmain.py +++ b/nw/gui/winmain.py @@ -211,7 +211,7 @@ class GuiMain(QMainWindow): selType = ctxMenu.selType selTarget = ctxMenu.selTarget - print(selHandle, selAction, selClass, selType, selTarget) + # print(selHandle, selAction, selClass, selType, selTarget) if selAction == nwItemAction.ADD_ROOT: self.treeView.newTreeItem(selHandle, selType, selClass) @@ -237,6 +237,8 @@ class GuiMain(QMainWindow): pass elif selAction == nwItemAction.EMPTY_TRASH: pass + elif selAction == nwItemAction.RENAME: + self.treeView.renameTreeItem(selHandle) return diff --git a/nw/project/project.py b/nw/project/project.py index 91f69ff7..3abb0741 100644 --- a/nw/project/project.py +++ b/nw/project/project.py @@ -230,6 +230,10 @@ class NWProject(): self.treeOrder = newOrder return True + def setItemName(self, tHandle, theName): + self.projTree[tHandle].setName(theName) + return + ## # Get Functions ## @@ -300,6 +304,7 @@ class NWProject(): } # Other actions available to novel or plot items + validActions[nwItemAction.RENAME] = {} validActions[nwItemAction.MOVE_UP] = {} validActions[nwItemAction.MOVE_DOWN] = {} if tType == nwItemType.ROOT: diff --git a/sample/sampleNovel/nwProject.nwx b/sample/sampleNovel/nwProject.nwx index 879e291b..591883b8 100644 --- a/sample/sampleNovel/nwProject.nwx +++ b/sample/sampleNovel/nwProject.nwx @@ -1,5 +1,5 @@ - + Sample Project Sample Project @@ -35,7 +35,7 @@ 5 - New File + Test File FILE NOVEL 2