From ad6b517c1d3efa262ec268511d6e023279c0cb88 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 24 May 2023 22:38:47 +0200 Subject: [PATCH] Rename manuscript build tool file and add build dialog --- novelwriter/core/options.py | 2 +- novelwriter/core/tokenizer.py | 3 +- novelwriter/core/toodt.py | 8 ++- novelwriter/guimain.py | 8 +-- .../tools/{manusbuild.py => manuscript.py} | 69 +++++++++++++++---- novelwriter/tools/manussettings.py | 2 +- 6 files changed, 69 insertions(+), 23 deletions(-) rename novelwriter/tools/{manusbuild.py => manuscript.py} (81%) diff --git a/novelwriter/core/options.py b/novelwriter/core/options.py index 8637d937..e0ce2a2c 100644 --- a/novelwriter/core/options.py +++ b/novelwriter/core/options.py @@ -63,7 +63,7 @@ VALID_MAP = { "GuiBuildSettings": { "winWidth", "winHeight", "treeWidth", "filterWidth" }, - "GuiBuildManuscript": { + "GuiManuscript": { "winWidth", "winHeight", "optsWidth", "viewWidth" }, } diff --git a/novelwriter/core/tokenizer.py b/novelwriter/core/tokenizer.py index fe5bb06d..a978cff4 100644 --- a/novelwriter/core/tokenizer.py +++ b/novelwriter/core/tokenizer.py @@ -4,7 +4,8 @@ novelWriter – Text Tokenizer Split novelWriter plain text into its elements File History: -Created: 2019-05-05 [0.0.1] +Created: 2019-05-05 [0.0.1] Tokenizer +Created: 2023-05-23 [2.1b1] HeadingFormatter This file is a part of novelWriter Copyright 2018–2023, Veronica Berglyd Olsen diff --git a/novelwriter/core/toodt.py b/novelwriter/core/toodt.py index 4251d066..4892d435 100644 --- a/novelwriter/core/toodt.py +++ b/novelwriter/core/toodt.py @@ -4,7 +4,10 @@ novelWriter – ODT Text Converter Extends the Tokenizer class to generate ODT and FODT files File History: -Created: 2021-01-26 [1.2b1] +Created: 2021-01-26 [1.2b1] ToOdt +Created: 2021-01-27 [1.2b1] ODTParagraphStyle +Created: 2021-01-27 [1.2b1] ODTTextStyle +Created: 2021-08-14 [1.5b1] XMLParagraph This file is a part of novelWriter Copyright 2018–2023, Veronica Berglyd Olsen @@ -1439,7 +1442,8 @@ class XMLParagraph: def checkError(self): """Check that the number of characters written matches the - number of characters received.""" + number of characters received. + """ errMsg = "" nMissed = len(self._rawTxt) - self._chrPos if nMissed != 0: diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index 684b61d6..44bfaebb 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -57,7 +57,7 @@ from novelwriter.dialogs.projdetails import GuiProjectDetails from novelwriter.dialogs.projsettings import GuiProjectSettings from novelwriter.tools.build import GuiBuildNovel from novelwriter.tools.lipsum import GuiLipsum -from novelwriter.tools.manusbuild import GuiBuildManuscript +from novelwriter.tools.manuscript import GuiManuscript from novelwriter.tools.projwizard import GuiProjectWizard from novelwriter.tools.writingstats import GuiWritingStats from novelwriter.core.project import NWProject @@ -1020,10 +1020,10 @@ class GuiMain(QMainWindow): logger.error("No project open") return False - dlgBuild = getGuiItem("GuiBuildManuscript") + dlgBuild = getGuiItem("GuiManuscript") if dlgBuild is None: - dlgBuild = GuiBuildManuscript(self) - assert isinstance(dlgBuild, GuiBuildManuscript) + dlgBuild = GuiManuscript(self) + assert isinstance(dlgBuild, GuiManuscript) dlgBuild.setModal(False) dlgBuild.show() diff --git a/novelwriter/tools/manusbuild.py b/novelwriter/tools/manuscript.py similarity index 81% rename from novelwriter/tools/manusbuild.py rename to novelwriter/tools/manuscript.py index 986f1d26..e638776a 100644 --- a/novelwriter/tools/manusbuild.py +++ b/novelwriter/tools/manuscript.py @@ -4,7 +4,9 @@ novelWriter – GUI Build Manuscript GUI classes for the Manuscript Build Tool File History: -Created: 2023-05-13 [2.1b1] +Created: 2023-05-13 [2.1b1] GuiManuscript +Created: 2023-05-13 [2.1b1] GuiManuscriptPreview +Created: 2023-05-24 [2.1b1] GuiManuscriptBuild This file is a part of novelWriter Copyright 2018–2023, Veronica Berglyd Olsen @@ -44,11 +46,14 @@ if TYPE_CHECKING: logger = logging.getLogger(__name__) -class GuiBuildManuscript(QDialog): +class GuiManuscript(QDialog): def __init__(self, mainGui: GuiMain): super().__init__(parent=mainGui) + logger.debug("Initialising GuiManuscript ...") + self.setObjectName("GuiManuscript") + self.mainGui = mainGui self.mainTheme = mainGui.mainTheme self.theProject = mainGui.theProject @@ -65,8 +70,8 @@ class GuiBuildManuscript(QDialog): pOptions = self.theProject.options self.resize( - CONFIG.pxInt(pOptions.getInt("GuiBuildManuscript", "winWidth", wWin)), - CONFIG.pxInt(pOptions.getInt("GuiBuildManuscript", "winHeight", hWin)) + CONFIG.pxInt(pOptions.getInt("GuiManuscript", "winWidth", wWin)), + CONFIG.pxInt(pOptions.getInt("GuiManuscript", "winHeight", hWin)) ) # Build Controls @@ -110,6 +115,7 @@ class GuiBuildManuscript(QDialog): self.btnSave.setMenu(self.menuSave) self.btnClose = QPushButton(self.tr("Close")) + self.btnClose.clicked.connect(self._doClose) # Assemble GUI # ============ @@ -139,8 +145,8 @@ class GuiBuildManuscript(QDialog): self.mainSplit.addWidget(self.optsWidget) self.mainSplit.addWidget(self.manPreview) self.mainSplit.setSizes([ - CONFIG.pxInt(pOptions.getInt("GuiBuildManuscript", "optsWidth", wWin//3)), - CONFIG.pxInt(pOptions.getInt("GuiBuildManuscript", "viewWidth", 2*wWin//3)), + CONFIG.pxInt(pOptions.getInt("GuiManuscript", "optsWidth", wWin//3)), + CONFIG.pxInt(pOptions.getInt("GuiManuscript", "viewWidth", 2*wWin//3)), ]) self.outerBox = QVBoxLayout() @@ -148,10 +154,12 @@ class GuiBuildManuscript(QDialog): self.setLayout(self.outerBox) + logger.debug("GuiManuscript initialisation complete") + return def loadContent(self): - """ + """Load dialog content from project data. """ self._builds.loadCollection() self._updateBuildsList() @@ -164,7 +172,7 @@ class GuiBuildManuscript(QDialog): def closeEvent(self, event): """Capture the user closing the window so we can save settings. """ - self._saveSettings() + self._beforeClose() event.accept() return @@ -201,14 +209,36 @@ class GuiBuildManuscript(QDialog): self._updateBuildItem(build) return + @pyqtSlot() + def _doClose(self): + """The close button has been clicked. + """ + self._beforeClose() + self.close() + return + ## # Internal Functions ## + def _saveManuscript(self, outFormat: int): + """Save the manuscript file or files. + """ + return + + def _beforeClose(self): + """List of things to do before closing. + """ + self._saveSettings() + for qWidget in qApp.topLevelWidgets(): + if qWidget.objectName() == "GuiBuildSettings": + qWidget.close() + return + def _saveSettings(self): """Save the various user settings. """ - logger.debug("Saving GuiBuildManuscript settings") + logger.debug("Saving GuiManuscript settings") winWidth = CONFIG.rpxInt(self.width()) winHeight = CONFIG.rpxInt(self.height()) @@ -218,10 +248,10 @@ class GuiBuildManuscript(QDialog): viewWidth = mainSplit[1] pOptions = self.theProject.options - pOptions.setValue("GuiBuildManuscript", "winWidth", winWidth) - pOptions.setValue("GuiBuildManuscript", "winHeight", winHeight) - pOptions.setValue("GuiBuildManuscript", "optsWidth", optsWidth) - pOptions.setValue("GuiBuildManuscript", "viewWidth", viewWidth) + pOptions.setValue("GuiManuscript", "winWidth", winWidth) + pOptions.setValue("GuiManuscript", "winHeight", winHeight) + pOptions.setValue("GuiManuscript", "optsWidth", optsWidth) + pOptions.setValue("GuiManuscript", "viewWidth", viewWidth) pOptions.saveSettings() return @@ -260,7 +290,7 @@ class GuiBuildManuscript(QDialog): self._updateBuildsList() return -# END Class GuiBuildManuscript +# END Class GuiManuscript class GuiManuscriptPreview(QTextBrowser): @@ -275,3 +305,14 @@ class GuiManuscriptPreview(QTextBrowser): return # END Class GuiManuscriptPreview + + +class GuiManuscriptBuild(QDialog): + + def __init__(self, parent): + super().__init__(parent=parent) + self._manusGui = parent + + return + +# END Class GuiManuscriptBuild diff --git a/novelwriter/tools/manussettings.py b/novelwriter/tools/manussettings.py index 7ed048a7..777ffa13 100644 --- a/novelwriter/tools/manussettings.py +++ b/novelwriter/tools/manussettings.py @@ -238,7 +238,7 @@ class GuiBuildSettings(QDialog): """ if self._build.changed: return self.mainGui.askQuestion( - self.tr("Close"), + self.tr("Build Settings"), self.tr("There are unsaved changes. Close anyway?") ) return True