Add word counts to the ODT file as user fields (#2033)

This commit is contained in:
Veronica Berglyd Olsen
2024-09-30 22:52:28 +02:00
parent 3da5074d14
commit c9eab0b01e
2 changed files with 15 additions and 7 deletions
+5 -6
View File
@@ -89,11 +89,6 @@ class NWBuildDocument:
# 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 @@ class NWBuildDocument:
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 @@ class NWBuildDocument:
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 @@ class NWBuildDocument:
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 @@ class NWBuildDocument:
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 @@ class NWBuildDocument:
makeObj.setKeepMarkdown(True)
self._count = False
for i, tHandle in enumerate(self._queue):
self._error = None
if filtered.get(tHandle, (False, 0))[0]:
+10 -1
View File
@@ -532,11 +532,20 @@ class ToOdt(Tokenizer):
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: