Skip to content

Commit

Permalink
Generalise ODT variables to DOC
Browse files Browse the repository at this point in the history
  • Loading branch information
vkbo committed Oct 21, 2024
1 parent 787e1a4 commit ec7781f
Show file tree
Hide file tree
Showing 11 changed files with 77 additions and 71 deletions.
10 changes: 5 additions & 5 deletions novelwriter/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
30 changes: 18 additions & 12 deletions novelwriter/core/buildsettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,11 @@
"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),
}
Expand Down Expand Up @@ -165,18 +165,24 @@
"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."""
Expand Down Expand Up @@ -490,7 +496,7 @@ def unpack(self, data: dict) -> None:
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

Expand Down
10 changes: 5 additions & 5 deletions novelwriter/core/docbuild.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,9 +292,9 @@ def _setupBuild(self, bldObj: Tokenizer) -> dict:
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(
Expand Down Expand Up @@ -339,8 +339,8 @@ def _setupBuild(self, bldObj: Tokenizer) -> dict:
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)):
Expand Down
10 changes: 5 additions & 5 deletions novelwriter/formats/todocx.py
Original file line number Diff line number Diff line change
Expand Up @@ -837,11 +837,11 @@ def _defaultHeaderXml(self) -> str:
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")
Expand Down
10 changes: 5 additions & 5 deletions novelwriter/formats/toodt.py
Original file line number Diff line number Diff line change
Expand Up @@ -1076,12 +1076,12 @@ def _writeHeader(self) -> None:

# 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={
Expand Down
40 changes: 20 additions & 20 deletions novelwriter/tools/manussettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -1226,7 +1226,7 @@ def buildForm(self) -> None:
# Open Document
# =============

title = self._build.getLabel("odt")
title = self._build.getLabel("doc")
section += 1
self._sidebar.addButton(title, section)
self.addGroupLabel(title, section)
Expand All @@ -1237,7 +1237,7 @@ def buildForm(self) -> None:
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)
)

Expand All @@ -1246,16 +1246,16 @@ def buildForm(self) -> None:
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
# =============
Expand Down Expand Up @@ -1356,14 +1356,14 @@ def loadContent(self) -> None:
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
Expand Down Expand Up @@ -1426,12 +1426,12 @@ def saveContent(self) -> None:
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())
Expand Down Expand Up @@ -1537,7 +1537,7 @@ def _pageSizeValueChanged(self) -> None:

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

Expand Down
2 changes: 1 addition & 1 deletion tests/test_core/test_core_buildsettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ def testCoreBuildSettings_BuildValues():
build = BuildSettings()

strSetting = "headings.fmtPart"
intSetting = "odt.pageCountOffset"
intSetting = "doc.pageCountOffset"
boolSetting = "filter.includeNovel"
floatSetting = "format.lineHeight"

Expand Down
2 changes: 1 addition & 1 deletion tests/test_core/test_core_docbuild.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
"format.stripUnicode": False,
"format.replaceTabs": True,
"format.firstLineIndent": True,
"odt.colorHeadings": True,
"doc.colorHeadings": True,
"html.addStyles": True,
},
"content": {
Expand Down
4 changes: 2 additions & 2 deletions tests/test_formats/test_fmt_todocx.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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()
Expand Down
6 changes: 3 additions & 3 deletions tests/test_formats/test_fmt_toodt.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down
24 changes: 12 additions & 12 deletions tests/test_tools/test_tools_manussettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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
Expand All @@ -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))
Expand Down

0 comments on commit ec7781f

Please sign in to comment.