diff --git a/novelwriter/tools/manuscript.py b/novelwriter/tools/manuscript.py index e5ffa5b0..1112622f 100644 --- a/novelwriter/tools/manuscript.py +++ b/novelwriter/tools/manuscript.py @@ -330,15 +330,13 @@ class GuiManuscript(QDialog): def _buildManuscript(self): """Open the build dialog and build the manuscript.""" build = self._getSelectedBuild() - if build is None: - return + if isinstance(build, BuildSettings): + dlgBuild = GuiManuscriptBuild(self, self.mainGui, build) + dlgBuild.exec_() - dlgBuild = GuiManuscriptBuild(self, self.mainGui, build) - dlgBuild.exec_() - - # After the build is done, save build settings changes - if build.changed: - self._builds.setBuild(build) + # After the build is done, save build settings changes + if build.changed: + self._builds.setBuild(build) return @@ -376,10 +374,13 @@ class GuiManuscript(QDialog): return def _getSelectedBuild(self) -> BuildSettings | None: - """Get the currently selected build.""" - bItems = self.buildList.selectedItems() - if bItems: - build = self._builds.getBuild(bItems[0].data(self.D_KEY)) + """Get the currently selected build. If none are selected, + automatically select the first one. + """ + items = self.buildList.selectedItems() + item = items[0] if items else self.buildList.item(0) + if item: + build = self._builds.getBuild(item.data(self.D_KEY)) if isinstance(build, BuildSettings): return build return None @@ -634,7 +635,7 @@ class _PreviewWidget(QTextBrowser): ) else: strBuildTime = self.tr("Unknown") - text = "{0} {1}".format(self.tr("Built"), strBuildTime) + text = "{0}: {1}".format(self.tr("Built"), strBuildTime) if self._buildName: text = "{0}
{1}".format(self._buildName, text) self.ageLabel.setText(text) diff --git a/tests/test_tools/test_tools_manuscript.py b/tests/test_tools/test_tools_manuscript.py index 3f2bcdb6..cb5aedb1 100644 --- a/tests/test_tools/test_tools_manuscript.py +++ b/tests/test_tools/test_tools_manuscript.py @@ -168,11 +168,12 @@ def testManuscript_Features(monkeypatch, qtbot: QtBot, nwGUI: GuiMain, projPath: # ======== # No build selected - manus.buildList.clearSelection() + manus.buildList.clear() manus.btnPreview.click() qtbot.wait(200) # Should be enough to run the build assert manus.docPreview.toPlainText().strip() == "" assert cacheFile.exists() is False + manus._updateBuildsList() # Preview the first, but fail to save cache manus.buildList.setCurrentRow(0) @@ -207,12 +208,6 @@ def testManuscript_Features(monkeypatch, qtbot: QtBot, nwGUI: GuiMain, projPath: with monkeypatch.context() as mp: mp.setattr("novelwriter.tools.manusbuild.GuiManuscriptBuild.exec_", lambda *a: None) - # With no selection, no dialog should be created - manus.btnBuild.click() - for obj in manus.children(): - assert not isinstance(obj, GuiManuscriptBuild) - - # With a selection, there should be one manus.buildList.setCurrentRow(0) manus.btnBuild.click() for obj in manus.children():