diff --git a/novelwriter/core/docbuild.py b/novelwriter/core/docbuild.py index fa078cbbf..30189bdd2 100644 --- a/novelwriter/core/docbuild.py +++ b/novelwriter/core/docbuild.py @@ -89,11 +89,6 @@ def lastBuild(self) -> Tokenizer | None: # Setters ## - def setCountEnabled(self, state: bool) -> None: - """Turn on/off stats for builds.""" - self._count = state - return - def setBuildOutline(self, state: bool) -> None: """Turn on/off outline for builds.""" self._outline = state @@ -130,8 +125,8 @@ def iterBuildPreview(self, theme: TextDocumentTheme) -> Iterable[tuple[int, bool makeObj = ToQTextDocument(self._project) filtered = self._setupBuild(makeObj) - self._outline = True self._count = True + self._outline = True font = QFont() font.fromString(self._build.getStr("format.textFont")) @@ -169,6 +164,7 @@ def iterBuildOpenDocument(self, path: Path, isFlat: bool) -> Iterable[tuple[int, filtered = self._setupBuild(makeObj) makeObj.initDocument() + self._count = True for i, tHandle in enumerate(self._queue): self._error = None if filtered.get(tHandle, (False, 0))[0]: @@ -199,6 +195,7 @@ def iterBuildHTML(self, path: Path | None, asJson: bool = False) -> Iterable[tup makeObj = ToHtml(self._project) filtered = self._setupBuild(makeObj) + self._count = False for i, tHandle in enumerate(self._queue): self._error = None if filtered.get(tHandle, (False, 0))[0]: @@ -235,6 +232,7 @@ def iterBuildMarkdown(self, path: Path, extendedMd: bool) -> Iterable[tuple[int, if self._build.getBool("format.replaceTabs"): makeObj.replaceTabs(nSpaces=4, spaceChar=" ") + self._count = False for i, tHandle in enumerate(self._queue): self._error = None if filtered.get(tHandle, (False, 0))[0]: @@ -262,6 +260,7 @@ def iterBuildNWD(self, path: Path | None, asJson: bool = False) -> Iterable[tupl makeObj.setKeepMarkdown(True) + self._count = False for i, tHandle in enumerate(self._queue): self._error = None if filtered.get(tHandle, (False, 0))[0]: diff --git a/novelwriter/core/toodt.py b/novelwriter/core/toodt.py index efb4f8d11..dbf75be3e 100644 --- a/novelwriter/core/toodt.py +++ b/novelwriter/core/toodt.py @@ -532,11 +532,20 @@ def doConvert(self) -> None: return def closeDocument(self) -> None: - """Pack the automatic styles of the XML document.""" + """Add additional collected information to the XML.""" for style in self._autoPara.values(): style.packXML(self._xAuto) for style in self._autoText.values(): style.packXML(self._xAuto) + if self._counts: + xFields = ET.Element(_mkTag("text", "user-field-decls")) + for key, value in self._counts.items(): + ET.SubElement(xFields, _mkTag("text", "user-field-decl"), attrib={ + _mkTag("office", "value-type"): "float", + _mkTag("office", "value"): str(value), + _mkTag("text", "name"): f"Manuscript{key[:1].upper()}{key[1:]}", + }) + self._xText.insert(0, xFields) return def saveFlatXML(self, path: str | Path) -> None: diff --git a/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt b/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt index 92fac3110..b6870a6c1 100644 --- a/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt +++ b/tests/reference/mBuildDocBuild_OpenDocument_Lorem_Ipsum.fodt @@ -1,13 +1,13 @@ - 2024-05-24T21:31:12 - novelWriter/2.5a4 + 2024-09-30T14:08:16 + novelWriter/2.6a0 lipsum.com 45 P0DT0H36M8S Lorem Ipsum - 2024-05-24T21:31:12 + 2024-09-30T14:08:16 lipsum.com @@ -116,6 +116,19 @@ + + + + + + + + + + + + + Lorem Ipsum By lipsum.com “Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit…” diff --git a/tests/test_core/test_core_docbuild.py b/tests/test_core/test_core_docbuild.py index 0ac4d00de..62461dd36 100644 --- a/tests/test_core/test_core_docbuild.py +++ b/tests/test_core/test_core_docbuild.py @@ -85,11 +85,9 @@ def testCoreDocBuild_OpenDocument(monkeypatch, mockGUI, prjLipsum, fncPath, tstP build.unpack(BUILD_CONF) docBuild = NWBuildDocument(project, build) - docBuild.setCountEnabled(True) docBuild.setBuildOutline(True) docBuild.queueAll() - assert docBuild._count is True assert docBuild._outline is True assert len(docBuild) == 21