From 2425af4bfeceff3ce23c0a252c720d0ad687de7f Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sun, 22 May 2022 17:00:45 +0200 Subject: [PATCH] Add menu to view bar settings, and add build button --- novelwriter/enum.py | 12 ++++-------- novelwriter/gui/theme.py | 2 +- novelwriter/gui/viewsbar.py | 37 +++++++++++++++++++++++++++++-------- novelwriter/guimain.py | 9 --------- 4 files changed, 34 insertions(+), 26 deletions(-) diff --git a/novelwriter/enum.py b/novelwriter/enum.py index 20332b2f..fc9604e0 100644 --- a/novelwriter/enum.py +++ b/novelwriter/enum.py @@ -132,14 +132,10 @@ class nwState(Enum): class nwView(Enum): - EDITOR = 0 - PROJECT = 1 - NOVEL = 2 - OUTLINE = 3 - DETAILS = 4 - STATS = 5 - SET_PROJ = 6 - SET_MAIN = 7 + EDITOR = 0 + PROJECT = 1 + NOVEL = 2 + OUTLINE = 3 # END Enum nwView diff --git a/novelwriter/gui/theme.py b/novelwriter/gui/theme.py index e3151ea8..7c0e3ce6 100644 --- a/novelwriter/gui/theme.py +++ b/novelwriter/gui/theme.py @@ -462,7 +462,7 @@ class GuiIcons: "proj_folder", "proj_note", "proj_nwx", "proj_scene", "proj_stats", "proj_title", "search_cancel", "search_case", "search_loop", "search_preserve", "search_project", "search_regex", "search_word", "status_idle", "status_lang", "status_lines", - "status_stats", "status_time", "view_editor", "view_novel", "view_outline", + "status_stats", "status_time", "view_build", "view_editor", "view_novel", "view_outline", # General Button Icons "add", "backward", "check", "clear", "close", "cross", "delete", "done", "down", "edit", diff --git a/novelwriter/gui/viewsbar.py b/novelwriter/gui/viewsbar.py index c4dfc476..5a96d92e 100644 --- a/novelwriter/gui/viewsbar.py +++ b/novelwriter/gui/viewsbar.py @@ -27,7 +27,9 @@ import logging import novelwriter from PyQt5.QtCore import Qt, QSize, pyqtSignal -from PyQt5.QtWidgets import QToolBar, QWidget, QSizePolicy, QAction +from PyQt5.QtWidgets import ( + QToolBar, QWidget, QSizePolicy, QAction, QMenu, QToolButton +) from novelwriter.enum import nwView @@ -49,7 +51,7 @@ class GuiViewsBar(QToolBar): # Style iPx = self.mainConf.pxInt(22) - mPx = self.mainConf.pxInt(58) + mPx = self.mainConf.pxInt(60) lblFont = self.theTheme.guiFont lblFont.setPointSizeF(0.65*self.theTheme.fontPointSize) @@ -77,26 +79,45 @@ class GuiViewsBar(QToolBar): self.aOutline.setIcon(self.theTheme.getIcon("view_outline")) self.aOutline.triggered.connect(lambda: self.viewChangeRequested.emit(nwView.OUTLINE)) + self.aBuild = QAction(self.tr("Build")) + self.aBuild.setIcon(self.theTheme.getIcon("view_build")) + self.aBuild.triggered.connect(lambda: self.theParent.showBuildProjectDialog()) + self.aDetails = QAction(self.tr("Details")) self.aDetails.setIcon(self.theTheme.getIcon("proj_details")) - self.aDetails.triggered.connect(lambda: self.viewChangeRequested.emit(nwView.DETAILS)) + self.aDetails.triggered.connect(lambda: self.theParent.showProjectDetailsDialog()) self.aStats = QAction(self.tr("Stats")) self.aStats.setIcon(self.theTheme.getIcon("proj_stats")) - self.aStats.triggered.connect(lambda: self.viewChangeRequested.emit(nwView.STATS)) + self.aStats.triggered.connect(lambda: self.theParent.showWritingStatsDialog()) - self.aSettings = QAction(self.tr("Settings")) - self.aSettings.setIcon(self.theTheme.getIcon("settings")) - self.aSettings.triggered.connect(lambda: self.viewChangeRequested.emit(nwView.SET_PROJ)) + # Settings Menu + self.mSettings = QMenu() + + self.aPrjSettings = QAction(self.tr("Project Settings")) + self.aPrjSettings.triggered.connect(lambda: self.theParent.showProjectSettingsDialog()) + self.mSettings.addAction(self.aPrjSettings) + + self.aPreferences = QAction(self.tr("Preferences")) + self.aPreferences.triggered.connect(lambda: self.theParent.showPreferencesDialog()) + self.mSettings.addAction(self.aPreferences) + + self.tbSettings = QToolButton(self) + self.tbSettings.setIcon(self.theTheme.getIcon("settings")) + self.tbSettings.setText(self.tr("Settings")) + self.tbSettings.setMenu(self.mSettings) + self.tbSettings.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) + self.tbSettings.setPopupMode(QToolButton.InstantPopup) # Assemble self.addAction(self.aProject) self.addAction(self.aNovel) self.addAction(self.aOutline) + self.addAction(self.aBuild) self.addWidget(stretch) self.addAction(self.aDetails) self.addAction(self.aStats) - self.addAction(self.aSettings) + self.addWidget(self.tbSettings) logger.debug("GuiViewsBar initialisation complete") diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index a99375d7..bf1475b7 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -1496,15 +1496,6 @@ class GuiMain(QMainWindow): elif view == nwView.OUTLINE: self.mainStack.setCurrentWidget(self.splitOutline) - elif view == nwView.DETAILS: - self.showProjectDetailsDialog() - - elif view == nwView.STATS: - self.showWritingStatsDialog() - - elif view == nwView.SET_PROJ: - self.showProjectSettingsDialog() - return @pyqtSlot()