From 4bd830f0d62ac9c3692a8ed560ad23f3b7950fbd Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Thu, 23 Nov 2023 16:45:08 +0100 Subject: [PATCH] Add an "Open Folder" button to build dialog (#1554) --- novelwriter/tools/manusbuild.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/novelwriter/tools/manusbuild.py b/novelwriter/tools/manusbuild.py index 70235ebf..3decd730 100644 --- a/novelwriter/tools/manusbuild.py +++ b/novelwriter/tools/manusbuild.py @@ -37,7 +37,7 @@ from PyQt5.QtWidgets import ( from novelwriter import CONFIG, SHARED from novelwriter.enum import nwBuildFmt -from novelwriter.common import makeFileNameSafe +from novelwriter.common import makeFileNameSafe, openExternalPath from novelwriter.constants import nwLabels from novelwriter.core.item import NWItem from novelwriter.core.docbuild import NWBuildDocument @@ -176,9 +176,11 @@ class GuiManuscriptBuild(QDialog): self.buildBox.setVerticalSpacing(sp4) # Dialog Buttons + self.btnOpen = QPushButton(SHARED.theme.getIcon("browse"), self.tr("Open Folder")) self.btnBuild = QPushButton(SHARED.theme.getIcon("export"), self.tr("&Build")) - self.dlgButtons = QDialogButtonBox(QDialogButtonBox.Close) - self.dlgButtons.addButton(self.btnBuild, QDialogButtonBox.ActionRole) + self.dlgButtons = QDialogButtonBox(QDialogButtonBox.StandardButton.Close) + self.dlgButtons.addButton(self.btnOpen, QDialogButtonBox.ButtonRole.ActionRole) + self.dlgButtons.addButton(self.btnBuild, QDialogButtonBox.ButtonRole.ActionRole) # Assemble GUI # ============ @@ -254,7 +256,10 @@ class GuiManuscriptBuild(QDialog): """Handle button clicks from the dialog button box.""" role = self.dlgButtons.buttonRole(button) if role == QDialogButtonBox.ActionRole: - self._runBuild() + if button == self.btnBuild: + self._runBuild() + elif button == self.btnOpen: + self._openOutputFolder() elif role == QDialogButtonBox.RejectRole: self.close() return @@ -386,4 +391,9 @@ class GuiManuscriptBuild(QDialog): return + def _openOutputFolder(self): + """Open the build folder in the system's file explorer.""" + openExternalPath(Path(self.buildPath.text())) + return + # END Class GuiManuscriptBuild