Add word counts to the ODT file as user fields (#2033)
This commit is contained in:
@@ -89,11 +89,6 @@ class NWBuildDocument:
|
|||||||
# Setters
|
# Setters
|
||||||
##
|
##
|
||||||
|
|
||||||
def setCountEnabled(self, state: bool) -> None:
|
|
||||||
"""Turn on/off stats for builds."""
|
|
||||||
self._count = state
|
|
||||||
return
|
|
||||||
|
|
||||||
def setBuildOutline(self, state: bool) -> None:
|
def setBuildOutline(self, state: bool) -> None:
|
||||||
"""Turn on/off outline for builds."""
|
"""Turn on/off outline for builds."""
|
||||||
self._outline = state
|
self._outline = state
|
||||||
@@ -130,8 +125,8 @@ class NWBuildDocument:
|
|||||||
makeObj = ToQTextDocument(self._project)
|
makeObj = ToQTextDocument(self._project)
|
||||||
filtered = self._setupBuild(makeObj)
|
filtered = self._setupBuild(makeObj)
|
||||||
|
|
||||||
self._outline = True
|
|
||||||
self._count = True
|
self._count = True
|
||||||
|
self._outline = True
|
||||||
|
|
||||||
font = QFont()
|
font = QFont()
|
||||||
font.fromString(self._build.getStr("format.textFont"))
|
font.fromString(self._build.getStr("format.textFont"))
|
||||||
@@ -169,6 +164,7 @@ class NWBuildDocument:
|
|||||||
filtered = self._setupBuild(makeObj)
|
filtered = self._setupBuild(makeObj)
|
||||||
makeObj.initDocument()
|
makeObj.initDocument()
|
||||||
|
|
||||||
|
self._count = True
|
||||||
for i, tHandle in enumerate(self._queue):
|
for i, tHandle in enumerate(self._queue):
|
||||||
self._error = None
|
self._error = None
|
||||||
if filtered.get(tHandle, (False, 0))[0]:
|
if filtered.get(tHandle, (False, 0))[0]:
|
||||||
@@ -199,6 +195,7 @@ class NWBuildDocument:
|
|||||||
makeObj = ToHtml(self._project)
|
makeObj = ToHtml(self._project)
|
||||||
filtered = self._setupBuild(makeObj)
|
filtered = self._setupBuild(makeObj)
|
||||||
|
|
||||||
|
self._count = False
|
||||||
for i, tHandle in enumerate(self._queue):
|
for i, tHandle in enumerate(self._queue):
|
||||||
self._error = None
|
self._error = None
|
||||||
if filtered.get(tHandle, (False, 0))[0]:
|
if filtered.get(tHandle, (False, 0))[0]:
|
||||||
@@ -235,6 +232,7 @@ class NWBuildDocument:
|
|||||||
if self._build.getBool("format.replaceTabs"):
|
if self._build.getBool("format.replaceTabs"):
|
||||||
makeObj.replaceTabs(nSpaces=4, spaceChar=" ")
|
makeObj.replaceTabs(nSpaces=4, spaceChar=" ")
|
||||||
|
|
||||||
|
self._count = False
|
||||||
for i, tHandle in enumerate(self._queue):
|
for i, tHandle in enumerate(self._queue):
|
||||||
self._error = None
|
self._error = None
|
||||||
if filtered.get(tHandle, (False, 0))[0]:
|
if filtered.get(tHandle, (False, 0))[0]:
|
||||||
@@ -262,6 +260,7 @@ class NWBuildDocument:
|
|||||||
|
|
||||||
makeObj.setKeepMarkdown(True)
|
makeObj.setKeepMarkdown(True)
|
||||||
|
|
||||||
|
self._count = False
|
||||||
for i, tHandle in enumerate(self._queue):
|
for i, tHandle in enumerate(self._queue):
|
||||||
self._error = None
|
self._error = None
|
||||||
if filtered.get(tHandle, (False, 0))[0]:
|
if filtered.get(tHandle, (False, 0))[0]:
|
||||||
|
|||||||
@@ -532,11 +532,20 @@ class ToOdt(Tokenizer):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def closeDocument(self) -> None:
|
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():
|
for style in self._autoPara.values():
|
||||||
style.packXML(self._xAuto)
|
style.packXML(self._xAuto)
|
||||||
for style in self._autoText.values():
|
for style in self._autoText.values():
|
||||||
style.packXML(self._xAuto)
|
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
|
return
|
||||||
|
|
||||||
def saveFlatXML(self, path: str | Path) -> None:
|
def saveFlatXML(self, path: str | Path) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user