Significant restructuring of the main menu

This commit is contained in:
Veronica K. B. Olsen
2019-04-27 00:28:19 +02:00
parent af062c3160
commit d639dcd219
3 changed files with 85 additions and 43 deletions
+1
View File
@@ -32,6 +32,7 @@ class nwItemClass(Enum):
WORLD = 4 WORLD = 4
TIMELINE = 5 TIMELINE = 5
OBJECT = 6 OBJECT = 6
CUSTOM = 7
# END Enum nwItemClass # END Enum nwItemClass
+82 -42
View File
@@ -15,7 +15,7 @@ import nw
from os import path from os import path
from PyQt5.QtWidgets import qApp, QWidget, QMainWindow, QVBoxLayout, QFrame, QSplitter, QAction, QToolBar, QFileDialog, QStackedWidget from PyQt5.QtWidgets import qApp, QWidget, QMainWindow, QVBoxLayout, QFrame, QSplitter, QAction, QToolBar, QFileDialog, QStackedWidget
from PyQt5.QtCore import Qt, QSize from PyQt5.QtCore import Qt, QSize, pyqtSlot
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon
from nw.gui.doctree import GuiDocTree from nw.gui.doctree import GuiDocTree
@@ -26,7 +26,8 @@ from nw.gui.projecteditor import GuiProjectEditor
from nw.gui.statusbar import GuiMainStatus from nw.gui.statusbar import GuiMainStatus
from nw.project.project import NWProject from nw.project.project import NWProject
from nw.project.document import NWDoc from nw.project.document import NWDoc
from nw.enum import nwItemType, nwDocAction, nwItemAction from nw.project.item import NWItem
from nw.enum import nwItemType, nwItemClass, nwDocAction, nwItemAction
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -139,7 +140,7 @@ class GuiMain(QMainWindow):
dlgProj.exec_() dlgProj.exec_()
return True return True
def openRecentProject(self, recentItem): def openRecentProject(self, menuItem, recentItem):
logger.verbose("User requested opening recent project #%d" % recentItem) logger.verbose("User requested opening recent project #%d" % recentItem)
self.theProject.openProject(self.mainConf.recentList[recentItem]) self.theProject.openProject(self.mainConf.recentList[recentItem])
self.treeView.buildTree() self.treeView.buildTree()
@@ -292,71 +293,110 @@ class GuiMain(QMainWindow):
def _buildMenu(self): def _buildMenu(self):
menuBar = self.menuBar() menuBar = self.menuBar()
# File # Project
fileMenu = menuBar.addMenu("&File") projMenu = menuBar.addMenu("&Project")
# File > New Project # Project > New Project
menuItem = QAction(QIcon.fromTheme("folder-new"), "New Project", menuBar) menuItem = QAction(QIcon.fromTheme("folder-new"), "New Project", menuBar)
menuItem.setStatusTip("Create New Project") menuItem.setStatusTip("Create New Project")
menuItem.triggered.connect(self.newProject) menuItem.triggered.connect(self.newProject)
fileMenu.addAction(menuItem) projMenu.addAction(menuItem)
# File > Open Project # Project > Open Project
menuItem = QAction(QIcon.fromTheme("folder-open"), "Open Project", menuBar) menuItem = QAction(QIcon.fromTheme("folder-open"), "Open Project", menuBar)
menuItem.setStatusTip("Open Project") menuItem.setStatusTip("Open Project")
menuItem.setShortcut("Ctrl+Shift+O")
menuItem.triggered.connect(self.openProject) menuItem.triggered.connect(self.openProject)
fileMenu.addAction(menuItem) projMenu.addAction(menuItem)
# File > Save Project # Project > Save Project
menuItem = QAction(QIcon.fromTheme("document-save"), "Save Project", menuBar) menuItem = QAction(QIcon.fromTheme("document-save"), "Save Project", menuBar)
menuItem.setStatusTip("Save Project") menuItem.setStatusTip("Save Project")
menuItem.setShortcut("Ctrl+Shift+S")
menuItem.triggered.connect(self.saveProject) menuItem.triggered.connect(self.saveProject)
fileMenu.addAction(menuItem) projMenu.addAction(menuItem)
# File > Recent Project # Project > Recent Projects
recentMenu = fileMenu.addMenu(QIcon.fromTheme("document-open-recent"),"Recent Projects") recentMenu = projMenu.addMenu(QIcon.fromTheme("document-open-recent"),"Recent Projects")
itemCount = 0 for n in range(len(self.mainConf.recentList)):
for recentProject in self.mainConf.recentList: recentProject = self.mainConf.recentList[n]
if recentProject == "": continue if recentProject == "": continue
menuItem = QAction(QIcon.fromTheme("folder-open"), "%d: %s" % (itemCount,recentProject), fileMenu) menuItem = QAction(QIcon.fromTheme("folder-open"), "%d: %s" % (n,recentProject), projMenu)
menuItem.triggered.connect(lambda: self.openRecentProject(0)) menuItem.triggered.connect(lambda menuItem, n=n : self.openRecentProject(menuItem, n))
recentMenu.addAction(menuItem) recentMenu.addAction(menuItem)
itemCount += 1
# File > Separator # Project > Separator
fileMenu.addSeparator() projMenu.addSeparator()
# File > Project Settings # Project > Project Settings
menuItem = QAction(QIcon.fromTheme("document-properties"), "Project Settings", menuBar) menuItem = QAction(QIcon.fromTheme("document-properties"), "Project Settings", menuBar)
menuItem.setStatusTip("Project Settings") menuItem.setStatusTip("Project Settings")
menuItem.triggered.connect(self.editProject) menuItem.triggered.connect(self.editProject)
fileMenu.addAction(menuItem) projMenu.addAction(menuItem)
# File > Separator # Project > Separator
fileMenu.addSeparator() projMenu.addSeparator()
# File > New # Project > Exit
menuItem = QAction(QIcon.fromTheme("document-new"), "&New", menuBar)
menuItem.setStatusTip("Create new document")
menuItem.setShortcut("Ctrl+N")
fileMenu.addAction(menuItem)
# File > Save
menuItem = QAction(QIcon.fromTheme("document-save"), "&Save", menuBar)
menuItem.setStatusTip("Save document")
menuItem.setShortcut("Ctrl+S")
menuItem.triggered.connect(self.saveDocument)
fileMenu.addAction(menuItem)
# File > Separator
fileMenu.addSeparator()
# File > Exit
menuItem = QAction(QIcon.fromTheme("application-exit"), "Exit", menuBar) menuItem = QAction(QIcon.fromTheme("application-exit"), "Exit", menuBar)
menuItem.setStatusTip("Exit %s" % nw.__package__) menuItem.setStatusTip("Exit %s" % nw.__package__)
menuItem.setShortcut("Ctrl+Q") menuItem.setShortcut("Ctrl+Q")
menuItem.triggered.connect(self._menuExit) menuItem.triggered.connect(self._menuExit)
fileMenu.addAction(menuItem) projMenu.addAction(menuItem)
############################################################################################
# Item
itemMenu = menuBar.addMenu("&Item")
# Item > New
menuItem = QAction(QIcon.fromTheme("document-new"), "&New Document", menuBar)
menuItem.setStatusTip("Create New Document")
menuItem.setShortcut("Ctrl+N")
itemMenu.addAction(menuItem)
# Item > Open
menuItem = QAction(QIcon.fromTheme("document-open"), "&Open Document", menuBar)
menuItem.setStatusTip("Open Selected Document")
menuItem.setShortcut("Ctrl+O")
itemMenu.addAction(menuItem)
# Item > Save
menuItem = QAction(QIcon.fromTheme("document-save"), "&Save Document", menuBar)
menuItem.setStatusTip("Save Current Document")
menuItem.setShortcut("Ctrl+S")
menuItem.triggered.connect(self.saveDocument)
itemMenu.addAction(menuItem)
# Item > Separator
itemMenu.addSeparator()
# Item > New Folder
menuItem = QAction(QIcon.fromTheme("folder-new"), "New Folder", menuBar)
menuItem.setStatusTip("New Folder")
menuItem.setShortcut("Ctrl+Shift+N")
itemMenu.addAction(menuItem)
# Item > New Root
rootMenu = itemMenu.addMenu(QIcon.fromTheme("folder-new"), "Create Root Group")
self.rootItems = {}
self.rootItems[nwItemClass.NOVEL] = QAction(QIcon.fromTheme("folder-new"), "Novel Root", rootMenu)
self.rootItems[nwItemClass.PLOT] = QAction(QIcon.fromTheme("folder-new"), "Plot Root", rootMenu)
self.rootItems[nwItemClass.CHARACTER] = QAction(QIcon.fromTheme("folder-new"), "Character Root", rootMenu)
self.rootItems[nwItemClass.WORLD] = QAction(QIcon.fromTheme("folder-new"), "Location Root", rootMenu)
self.rootItems[nwItemClass.TIMELINE] = QAction(QIcon.fromTheme("folder-new"), "Timeline Root", rootMenu)
self.rootItems[nwItemClass.OBJECT] = QAction(QIcon.fromTheme("folder-new"), "Object Root", rootMenu)
self.rootItems[nwItemClass.CUSTOM] = QAction(QIcon.fromTheme("folder-new"), "Custom Root", rootMenu)
rootMenu.addActions(self.rootItems.values())
# Item > Separator
itemMenu.addSeparator()
# Item > Delete Item
menuItem = QAction(QIcon.fromTheme("folder-delete"), "Delete Item", menuBar)
menuItem.setStatusTip("Delete Selected Item")
menuItem.setShortcut("Del")
itemMenu.addAction(menuItem)
############################################################################################ ############################################################################################
+2 -1
View File
@@ -25,13 +25,14 @@ class NWItem():
MAX_DEPTH = 8 MAX_DEPTH = 8
CLASS_NAME = { CLASS_NAME = {
nwItemClass.NO_CLASS : "Custom", nwItemClass.NO_CLASS : "None",
nwItemClass.NOVEL : "Novel", nwItemClass.NOVEL : "Novel",
nwItemClass.PLOT : "Plot", nwItemClass.PLOT : "Plot",
nwItemClass.CHARACTER : "Characters", nwItemClass.CHARACTER : "Characters",
nwItemClass.WORLD : "Locations", nwItemClass.WORLD : "Locations",
nwItemClass.TIMELINE : "Timeline", nwItemClass.TIMELINE : "Timeline",
nwItemClass.OBJECT : "Objects", nwItemClass.OBJECT : "Objects",
nwItemClass.CUSTOM : "Custom",
} }
CLASS_FLAG = { CLASS_FLAG = {
nwItemClass.NO_CLASS : "X", nwItemClass.NO_CLASS : "X",