From ec7781fb9fb921492fbad64c2968a1a5016a041b Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 21 Oct 2024 17:00:44 +0200 Subject: [PATCH] Generalise ODT variables to DOC --- novelwriter/constants.py | 10 ++--- novelwriter/core/buildsettings.py | 30 +++++++++------ novelwriter/core/docbuild.py | 10 ++--- novelwriter/formats/todocx.py | 10 ++--- novelwriter/formats/toodt.py | 10 ++--- novelwriter/tools/manussettings.py | 40 ++++++++++---------- tests/test_core/test_core_buildsettings.py | 2 +- tests/test_core/test_core_docbuild.py | 2 +- tests/test_formats/test_fmt_todocx.py | 4 +- tests/test_formats/test_fmt_toodt.py | 6 +-- tests/test_tools/test_tools_manussettings.py | 24 ++++++------ 11 files changed, 77 insertions(+), 71 deletions(-) diff --git a/novelwriter/constants.py b/novelwriter/constants.py index fa93bfe2..03886a57 100644 --- a/novelwriter/constants.py +++ b/novelwriter/constants.py @@ -369,11 +369,11 @@ class nwHeadFmt: CHAR_POV, CHAR_FOCUS ] - # ODT Document Page Header - ODT_PROJECT = "{Project}" - ODT_AUTHOR = "{Author}" - ODT_PAGE = "{Page}" - ODT_AUTO = "{Project} / {Author} / {Page}" + # Document Page Header + DOC_PROJECT = "{Project}" + DOC_AUTHOR = "{Author}" + DOC_PAGE = "{Page}" + DOC_AUTO = "{Project} / {Author} / {Page}" class nwQuotes: diff --git a/novelwriter/core/buildsettings.py b/novelwriter/core/buildsettings.py index 80c0cd72..c26c94b1 100644 --- a/novelwriter/core/buildsettings.py +++ b/novelwriter/core/buildsettings.py @@ -109,11 +109,11 @@ SETTINGS_TEMPLATE: dict[str, tuple[type, str | int | float | bool]] = { "format.bottomMargin": (float, 2.0), "format.leftMargin": (float, 2.0), "format.rightMargin": (float, 2.0), - "odt.pageHeader": (str, nwHeadFmt.ODT_AUTO), - "odt.pageCountOffset": (int, 0), - "odt.colorHeadings": (bool, True), - "odt.scaleHeadings": (bool, True), - "odt.boldHeadings": (bool, True), + "doc.pageHeader": (str, nwHeadFmt.DOC_AUTO), + "doc.pageCountOffset": (int, 0), + "doc.colorHeadings": (bool, True), + "doc.scaleHeadings": (bool, True), + "doc.boldHeadings": (bool, True), "html.addStyles": (bool, True), "html.preserveTabs": (bool, False), } @@ -165,18 +165,24 @@ SETTINGS_LABELS = { "format.pageSize": QT_TRANSLATE_NOOP("Builds", "Page Size"), "format.pageMargins": QT_TRANSLATE_NOOP("Builds", "Page Margins"), - "odt": QT_TRANSLATE_NOOP("Builds", "Document Options"), - "odt.pageHeader": QT_TRANSLATE_NOOP("Builds", "Page Header"), - "odt.pageCountOffset": QT_TRANSLATE_NOOP("Builds", "Page Counter Offset"), - "odt.colorHeadings": QT_TRANSLATE_NOOP("Builds", "Add Colours to Headings"), - "odt.scaleHeadings": QT_TRANSLATE_NOOP("Builds", "Increase Size of Headings"), - "odt.boldHeadings": QT_TRANSLATE_NOOP("Builds", "Bold Headings"), + "doc": QT_TRANSLATE_NOOP("Builds", "Document Style"), + "doc.pageHeader": QT_TRANSLATE_NOOP("Builds", "Page Header"), + "doc.pageCountOffset": QT_TRANSLATE_NOOP("Builds", "Page Counter Offset"), + "doc.colorHeadings": QT_TRANSLATE_NOOP("Builds", "Add Colours to Headings"), + "doc.scaleHeadings": QT_TRANSLATE_NOOP("Builds", "Increase Size of Headings"), + "doc.boldHeadings": QT_TRANSLATE_NOOP("Builds", "Bold Headings"), "html": QT_TRANSLATE_NOOP("Builds", "HTML Options"), "html.addStyles": QT_TRANSLATE_NOOP("Builds", "Add CSS Styles"), "html.preserveTabs": QT_TRANSLATE_NOOP("Builds", "Preserve Tab Characters"), } +RENAMED = { + "odt.addColours": "doc.addColours", + "odt.pageHeader": "doc.pageHeader", + "odt.pageCountOffset": "doc.pageCountOffset", +} + class FilterMode(Enum): """The decision reason for an item in a filtered project.""" @@ -490,7 +496,7 @@ class BuildSettings: self._settings = {k: v[1] for k, v in SETTINGS_TEMPLATE.items()} if isinstance(settings, dict): for key, value in settings.items(): - self.setValue(key, value) + self.setValue(RENAMED.get(key, key), value) self._changed = False diff --git a/novelwriter/core/docbuild.py b/novelwriter/core/docbuild.py index 8e707402..f753b61b 100644 --- a/novelwriter/core/docbuild.py +++ b/novelwriter/core/docbuild.py @@ -292,9 +292,9 @@ class NWBuildDocument: self._build.getBool("format.indentFirstPar"), ) bldObj.setHeadingStyles( - self._build.getBool("odt.colorHeadings"), - self._build.getBool("odt.scaleHeadings"), - self._build.getBool("odt.boldHeadings"), + self._build.getBool("doc.colorHeadings"), + self._build.getBool("doc.scaleHeadings"), + self._build.getBool("doc.boldHeadings"), ) bldObj.setTitleMargins( @@ -339,8 +339,8 @@ class NWBuildDocument: if isinstance(bldObj, (ToOdt, ToDocX)): bldObj.setLanguage(self._project.data.language) bldObj.setHeaderFormat( - self._build.getStr("odt.pageHeader"), - self._build.getInt("odt.pageCountOffset"), + self._build.getStr("doc.pageHeader"), + self._build.getInt("doc.pageCountOffset"), ) if isinstance(bldObj, (ToOdt, ToDocX, ToQTextDocument)): diff --git a/novelwriter/formats/todocx.py b/novelwriter/formats/todocx.py index 78230ca5..e417d0ae 100644 --- a/novelwriter/formats/todocx.py +++ b/novelwriter/formats/todocx.py @@ -837,11 +837,11 @@ class ToDocX(Tokenizer): xmlSubElem(xPPr, _wTag("jc"), attrib={_wTag("val"): "right"}) xmlSubElem(xPPr, _wTag("rPr")) - pre, page, post = self._headerFormat.partition(nwHeadFmt.ODT_PAGE) - pre = pre.replace(nwHeadFmt.ODT_PROJECT, self._project.data.name) - pre = pre.replace(nwHeadFmt.ODT_AUTHOR, self._project.data.author) - post = post.replace(nwHeadFmt.ODT_PROJECT, self._project.data.name) - post = post.replace(nwHeadFmt.ODT_AUTHOR, self._project.data.author) + pre, page, post = self._headerFormat.partition(nwHeadFmt.DOC_PAGE) + pre = pre.replace(nwHeadFmt.DOC_PROJECT, self._project.data.name) + pre = pre.replace(nwHeadFmt.DOC_AUTHOR, self._project.data.author) + post = post.replace(nwHeadFmt.DOC_PROJECT, self._project.data.name) + post = post.replace(nwHeadFmt.DOC_AUTHOR, self._project.data.author) xSpace = _mkTag("xml", "space") wFldCT = _wTag("fldCharType") diff --git a/novelwriter/formats/toodt.py b/novelwriter/formats/toodt.py index 019076f8..fdacf287 100644 --- a/novelwriter/formats/toodt.py +++ b/novelwriter/formats/toodt.py @@ -1076,12 +1076,12 @@ class ToOdt(Tokenizer): # Standard Page Header if self._headerFormat: - pre, page, post = self._headerFormat.partition(nwHeadFmt.ODT_PAGE) + pre, page, post = self._headerFormat.partition(nwHeadFmt.DOC_PAGE) - pre = pre.replace(nwHeadFmt.ODT_PROJECT, self._project.data.name) - pre = pre.replace(nwHeadFmt.ODT_AUTHOR, self._project.data.author) - post = post.replace(nwHeadFmt.ODT_PROJECT, self._project.data.name) - post = post.replace(nwHeadFmt.ODT_AUTHOR, self._project.data.author) + pre = pre.replace(nwHeadFmt.DOC_PROJECT, self._project.data.name) + pre = pre.replace(nwHeadFmt.DOC_AUTHOR, self._project.data.author) + post = post.replace(nwHeadFmt.DOC_PROJECT, self._project.data.name) + post = post.replace(nwHeadFmt.DOC_AUTHOR, self._project.data.author) xHead = ET.SubElement(xPage, _mkTag("style", "header")) xPar = ET.SubElement(xHead, _mkTag("text", "p"), attrib={ diff --git a/novelwriter/tools/manussettings.py b/novelwriter/tools/manussettings.py index 284371c4..350e48a4 100644 --- a/novelwriter/tools/manussettings.py +++ b/novelwriter/tools/manussettings.py @@ -1226,7 +1226,7 @@ class _FormattingTab(NScrollableForm): # Open Document # ============= - title = self._build.getLabel("odt") + title = self._build.getLabel("doc") section += 1 self._sidebar.addButton(title, section) self.addGroupLabel(title, section) @@ -1237,7 +1237,7 @@ class _FormattingTab(NScrollableForm): self.btnPageHeader = NIconToolButton(self, iSz, "revert") self.btnPageHeader.clicked.connect(self._resetPageHeader) self.addRow( - self._build.getLabel("odt.pageHeader"), self.odtPageHeader, + self._build.getLabel("doc.pageHeader"), self.odtPageHeader, button=self.btnPageHeader, stretch=(1, 1) ) @@ -1246,16 +1246,16 @@ class _FormattingTab(NScrollableForm): self.odtPageCountOffset.setMaximum(999) self.odtPageCountOffset.setSingleStep(1) self.odtPageCountOffset.setMinimumWidth(spW) - self.addRow(self._build.getLabel("odt.pageCountOffset"), self.odtPageCountOffset) + self.addRow(self._build.getLabel("doc.pageCountOffset"), self.odtPageCountOffset) # Headings self.colorHeadings = NSwitch(self, height=iPx) self.scaleHeadings = NSwitch(self, height=iPx) self.boldHeadings = NSwitch(self, height=iPx) - self.addRow(self._build.getLabel("odt.colorHeadings"), self.colorHeadings) - self.addRow(self._build.getLabel("odt.scaleHeadings"), self.scaleHeadings) - self.addRow(self._build.getLabel("odt.boldHeadings"), self.boldHeadings) + self.addRow(self._build.getLabel("doc.colorHeadings"), self.colorHeadings) + self.addRow(self._build.getLabel("doc.scaleHeadings"), self.scaleHeadings) + self.addRow(self._build.getLabel("doc.boldHeadings"), self.boldHeadings) # HTML Document # ============= @@ -1356,14 +1356,14 @@ class _FormattingTab(NScrollableForm): self.pageUnit.currentIndexChanged.connect(self._changeUnit) self.pageSize.currentIndexChanged.connect(self._changePageSize) - # ODT Document - # ============ + # Document + # ======== - self.colorHeadings.setChecked(self._build.getBool("odt.colorHeadings")) - self.scaleHeadings.setChecked(self._build.getBool("odt.scaleHeadings")) - self.boldHeadings.setChecked(self._build.getBool("odt.boldHeadings")) - self.odtPageHeader.setText(self._build.getStr("odt.pageHeader")) - self.odtPageCountOffset.setValue(self._build.getInt("odt.pageCountOffset")) + self.colorHeadings.setChecked(self._build.getBool("doc.colorHeadings")) + self.scaleHeadings.setChecked(self._build.getBool("doc.scaleHeadings")) + self.boldHeadings.setChecked(self._build.getBool("doc.boldHeadings")) + self.odtPageHeader.setText(self._build.getStr("doc.pageHeader")) + self.odtPageCountOffset.setValue(self._build.getInt("doc.pageCountOffset")) self.odtPageHeader.setCursorPosition(0) # HTML Document @@ -1426,12 +1426,12 @@ class _FormattingTab(NScrollableForm): self._build.setValue("format.leftMargin", self.leftMargin.value()) self._build.setValue("format.rightMargin", self.rightMargin.value()) - # ODT Document - self._build.setValue("odt.colorHeadings", self.colorHeadings.isChecked()) - self._build.setValue("odt.scaleHeadings", self.scaleHeadings.isChecked()) - self._build.setValue("odt.boldHeadings", self.boldHeadings.isChecked()) - self._build.setValue("odt.pageHeader", self.odtPageHeader.text()) - self._build.setValue("odt.pageCountOffset", self.odtPageCountOffset.value()) + # Documents + self._build.setValue("doc.colorHeadings", self.colorHeadings.isChecked()) + self._build.setValue("doc.scaleHeadings", self.scaleHeadings.isChecked()) + self._build.setValue("doc.boldHeadings", self.boldHeadings.isChecked()) + self._build.setValue("doc.pageHeader", self.odtPageHeader.text()) + self._build.setValue("doc.pageCountOffset", self.odtPageCountOffset.value()) # HTML Document self._build.setValue("html.addStyles", self.htmlAddStyles.isChecked()) @@ -1537,7 +1537,7 @@ class _FormattingTab(NScrollableForm): def _resetPageHeader(self) -> None: """Reset the ODT header format to default.""" - self.odtPageHeader.setText(nwHeadFmt.ODT_AUTO) + self.odtPageHeader.setText(nwHeadFmt.DOC_AUTO) self.odtPageHeader.setCursorPosition(0) return diff --git a/tests/test_core/test_core_buildsettings.py b/tests/test_core/test_core_buildsettings.py index 72f34274..5d004834 100644 --- a/tests/test_core/test_core_buildsettings.py +++ b/tests/test_core/test_core_buildsettings.py @@ -148,7 +148,7 @@ def testCoreBuildSettings_BuildValues(): build = BuildSettings() strSetting = "headings.fmtPart" - intSetting = "odt.pageCountOffset" + intSetting = "doc.pageCountOffset" boolSetting = "filter.includeNovel" floatSetting = "format.lineHeight" diff --git a/tests/test_core/test_core_docbuild.py b/tests/test_core/test_core_docbuild.py index 147e6870..df979e74 100644 --- a/tests/test_core/test_core_docbuild.py +++ b/tests/test_core/test_core_docbuild.py @@ -66,7 +66,7 @@ BUILD_CONF = { "format.stripUnicode": False, "format.replaceTabs": True, "format.firstLineIndent": True, - "odt.colorHeadings": True, + "doc.colorHeadings": True, "html.addStyles": True, }, "content": { diff --git a/tests/test_formats/test_fmt_todocx.py b/tests/test_formats/test_fmt_todocx.py index 3f947b29..6a4ac978 100644 --- a/tests/test_formats/test_fmt_todocx.py +++ b/tests/test_formats/test_fmt_todocx.py @@ -497,7 +497,7 @@ def testFmtToDocX_SaveDocument(mockGUI, prjLipsum, fncPath, tstPaths): project = NWProject() project.openProject(prjLipsum) - pageHeader = f"Page {nwHeadFmt.ODT_PAGE} - {nwHeadFmt.ODT_PROJECT} ({nwHeadFmt.ODT_AUTHOR})" + pageHeader = f"Page {nwHeadFmt.DOC_PAGE} - {nwHeadFmt.DOC_PROJECT} ({nwHeadFmt.DOC_AUTHOR})" build = BuildSettings() build.setValue("filter.includeNovel", True) @@ -508,7 +508,7 @@ def testFmtToDocX_SaveDocument(mockGUI, prjLipsum, fncPath, tstPaths): build.setValue("text.includeKeywords", True) build.setValue("format.textFont", "Source Sans Pro,12") build.setValue("format.firstLineIndent", True) - build.setValue("odt.pageHeader", pageHeader) + build.setValue("doc.pageHeader", pageHeader) docBuild = NWBuildDocument(project, build) docBuild.queueAll() diff --git a/tests/test_formats/test_fmt_toodt.py b/tests/test_formats/test_fmt_toodt.py index 8f2f34db..dda51c0f 100644 --- a/tests/test_formats/test_fmt_toodt.py +++ b/tests/test_formats/test_fmt_toodt.py @@ -772,8 +772,8 @@ def testFmtToOdt_SaveFlat(mockGUI, fncPath, tstPaths): assert odt._dLanguage == "" odt.setLanguage("nb_NO") assert odt._dLanguage == "nb" - odt.setHeaderFormat(nwHeadFmt.ODT_AUTO, 1) - assert odt._headerFormat == nwHeadFmt.ODT_AUTO + odt.setHeaderFormat(nwHeadFmt.DOC_AUTO, 1) + assert odt._headerFormat == nwHeadFmt.DOC_AUTO odt.setFirstLineIndent(True, 1.4, False) assert odt._firstIndent is True assert odt._fTextIndent == "0.499cm" @@ -822,7 +822,7 @@ def testFmtToOdt_SaveFull(mockGUI, fncPath, tstPaths): odt._isNovel = True # Set a format without page number - odt.setHeaderFormat(f"{nwHeadFmt.ODT_PROJECT} - {nwHeadFmt.ODT_AUTHOR}", 0) + odt.setHeaderFormat(f"{nwHeadFmt.DOC_PROJECT} - {nwHeadFmt.DOC_AUTHOR}", 0) odt._text = ( "## Chapter One\n\n" diff --git a/tests/test_tools/test_tools_manussettings.py b/tests/test_tools/test_tools_manussettings.py index 756a5eb1..8adfd824 100644 --- a/tests/test_tools/test_tools_manussettings.py +++ b/tests/test_tools/test_tools_manussettings.py @@ -707,11 +707,11 @@ def testToolBuildSettings_FormatOutput(qtbot, nwGUI): """Test the format-specific settings.""" build = BuildSettings() - build.setValue("odt.pageHeader", nwHeadFmt.ODT_AUTO) - build.setValue("odt.pageCountOffset", 0) - build.setValue("odt.colorHeadings", True) - build.setValue("odt.scaleHeadings", True) - build.setValue("odt.boldHeadings", True) + build.setValue("doc.pageHeader", nwHeadFmt.DOC_AUTO) + build.setValue("doc.pageCountOffset", 0) + build.setValue("doc.colorHeadings", True) + build.setValue("doc.scaleHeadings", True) + build.setValue("doc.boldHeadings", True) build.setValue("html.addStyles", False) build.setValue("html.preserveTabs", False) @@ -726,7 +726,7 @@ def testToolBuildSettings_FormatOutput(qtbot, nwGUI): assert bSettings.toolStack.currentWidget() is fmtTab # Check initial values - assert fmtTab.odtPageHeader.text() == nwHeadFmt.ODT_AUTO + assert fmtTab.odtPageHeader.text() == nwHeadFmt.DOC_AUTO assert fmtTab.odtPageCountOffset.value() == 0 assert fmtTab.colorHeadings.isChecked() is True assert fmtTab.scaleHeadings.isChecked() is True @@ -749,18 +749,18 @@ def testToolBuildSettings_FormatOutput(qtbot, nwGUI): # Save values fmtTab.saveContent() - assert build.getStr("odt.pageHeader") == "Stuff" - assert build.getInt("odt.pageCountOffset") == 1 - assert build.getBool("odt.colorHeadings") is False - assert build.getBool("odt.scaleHeadings") is False - assert build.getBool("odt.boldHeadings") is False + assert build.getStr("doc.pageHeader") == "Stuff" + assert build.getInt("doc.pageCountOffset") == 1 + assert build.getBool("doc.colorHeadings") is False + assert build.getBool("doc.scaleHeadings") is False + assert build.getBool("doc.boldHeadings") is False assert build.getBool("html.addStyles") is True assert build.getBool("html.preserveTabs") is True # Reset header format fmtTab.btnPageHeader.click() - assert fmtTab.odtPageHeader.text() == nwHeadFmt.ODT_AUTO + assert fmtTab.odtPageHeader.text() == nwHeadFmt.DOC_AUTO # Finish bSettings._dialogButtonClicked(bSettings.buttonBox.button(QtDialogClose))