Add settings to style ODT headers
This commit is contained in:
@@ -97,6 +97,8 @@ SETTINGS_TEMPLATE: dict[str, tuple[type, T_Basic]] = {
|
||||
"format.leftMargin": (float, 2.0),
|
||||
"format.rightMargin": (float, 2.0),
|
||||
"odt.addColours": (bool, True),
|
||||
"odt.scaleHeadings": (bool, True),
|
||||
"odt.boldHeadings": (bool, True),
|
||||
"odt.pageHeader": (str, nwHeadFmt.ODT_AUTO),
|
||||
"odt.pageCountOffset": (int, 0),
|
||||
"html.addStyles": (bool, True),
|
||||
@@ -155,6 +157,8 @@ SETTINGS_LABELS = {
|
||||
|
||||
"odt": QT_TRANSLATE_NOOP("Builds", "ODT Options"),
|
||||
"odt.addColours": QT_TRANSLATE_NOOP("Builds", "Add Highlight Colours"),
|
||||
"odt.scaleHeadings": QT_TRANSLATE_NOOP("Builds", "Increase Size of Headings"),
|
||||
"odt.boldHeadings": QT_TRANSLATE_NOOP("Builds", "Bold Headings"),
|
||||
"odt.pageHeader": QT_TRANSLATE_NOOP("Builds", "Page Header"),
|
||||
"odt.pageCountOffset": QT_TRANSLATE_NOOP("Builds", "Page Counter Offset"),
|
||||
|
||||
|
||||
@@ -359,10 +359,15 @@ class NWBuildDocument:
|
||||
bldObj.setReplaceUnicode(self._build.getBool("format.stripUnicode"))
|
||||
|
||||
if isinstance(bldObj, ToOdt):
|
||||
bldObj.setColourHeaders(self._build.getBool("odt.addColours"))
|
||||
bldObj.setColoursEnabled(self._build.getBool("odt.addColours"))
|
||||
bldObj.setHeadingStyles(
|
||||
self._build.getBool("odt.scaleHeadings"),
|
||||
self._build.getBool("odt.boldHeadings"),
|
||||
)
|
||||
bldObj.setLanguage(self._project.data.language)
|
||||
bldObj.setHeaderFormat(
|
||||
self._build.getStr("odt.pageHeader"), self._build.getInt("odt.pageCountOffset")
|
||||
self._build.getStr("odt.pageHeader"),
|
||||
self._build.getInt("odt.pageCountOffset"),
|
||||
)
|
||||
|
||||
scale = nwLabels.UNIT_SCALE.get(self._build.getStr("format.pageUnit"), 1.0)
|
||||
|
||||
+24
-15
@@ -161,7 +161,9 @@ class ToOdt(Tokenizer):
|
||||
|
||||
# Properties
|
||||
self._textFont = QFont("Liberation Serif", 12)
|
||||
self._colourHead = False
|
||||
self._addColours = False
|
||||
self._scaleHeads = True
|
||||
self._headWeight = "bold"
|
||||
self._headerFormat = ""
|
||||
self._pageOffset = 0
|
||||
|
||||
@@ -244,9 +246,15 @@ class ToOdt(Tokenizer):
|
||||
self._dCountry = country or self._dCountry
|
||||
return
|
||||
|
||||
def setColourHeaders(self, state: bool) -> None:
|
||||
def setHeadingStyles(self, scale: bool, bold: bool) -> None:
|
||||
"""Set plain text style for headings."""
|
||||
self._scaleHeads = scale
|
||||
self._headWeight = self._fontBold if bold else None
|
||||
return
|
||||
|
||||
def setColoursEnabled(self, state: bool) -> None:
|
||||
"""Enable/disable coloured headings and comments."""
|
||||
self._colourHead = state
|
||||
self._addColours = state
|
||||
return
|
||||
|
||||
def setPageLayout(
|
||||
@@ -288,12 +296,13 @@ class ToOdt(Tokenizer):
|
||||
self._fontPitch = "fixed" if self._textFont.fixedPitch() else "variable"
|
||||
self._fontBold = FONT_WEIGHT_MAP.get(fontBold, fontBold)
|
||||
|
||||
self._fSizeTitle = f"{round(2.50 * self._fontSize):d}pt"
|
||||
self._fSizeHead1 = f"{round(2.00 * self._fontSize):d}pt"
|
||||
self._fSizeHead2 = f"{round(1.60 * self._fontSize):d}pt"
|
||||
self._fSizeHead3 = f"{round(1.30 * self._fontSize):d}pt"
|
||||
self._fSizeHead4 = f"{round(1.15 * self._fontSize):d}pt"
|
||||
self._fSizeHead = f"{round(1.15 * self._fontSize):d}pt"
|
||||
hScale = self._scaleHeads
|
||||
self._fSizeTitle = f"{round((2.50 if hScale else 1.0) * self._fontSize):d}pt"
|
||||
self._fSizeHead1 = f"{round((2.00 if hScale else 1.0) * self._fontSize):d}pt"
|
||||
self._fSizeHead2 = f"{round((1.60 if hScale else 1.0) * self._fontSize):d}pt"
|
||||
self._fSizeHead3 = f"{round((1.30 if hScale else 1.0) * self._fontSize):d}pt"
|
||||
self._fSizeHead4 = f"{round((1.15 if hScale else 1.0) * self._fontSize):d}pt"
|
||||
self._fSizeHead = f"{round((1.15 if hScale else 1.0) * self._fontSize):d}pt"
|
||||
self._fSizeText = f"{self._fontSize:d}pt"
|
||||
self._fSizeFoot = f"{round(0.8*self._fontSize):d}pt"
|
||||
|
||||
@@ -322,7 +331,7 @@ class ToOdt(Tokenizer):
|
||||
self._mLeftFoot = self._emToCm(self._marginFoot[0])
|
||||
self._mBotFoot = self._emToCm(self._marginFoot[1])
|
||||
|
||||
if self._colourHead:
|
||||
if self._addColours:
|
||||
self._colHead12 = "#2a6099"
|
||||
self._opaHead12 = "100%"
|
||||
self._colHead34 = "#444444"
|
||||
@@ -965,7 +974,7 @@ class ToOdt(Tokenizer):
|
||||
style.setFontName(self._fontFamily)
|
||||
style.setFontFamily(self._fontFamily)
|
||||
style.setFontSize(self._fSizeTitle)
|
||||
style.setFontWeight(self._fontBold)
|
||||
style.setFontWeight(self._headWeight)
|
||||
style.packXML(self._xStyl)
|
||||
self._mainPara[style.name] = style
|
||||
|
||||
@@ -998,7 +1007,7 @@ class ToOdt(Tokenizer):
|
||||
style.setFontName(self._fontFamily)
|
||||
style.setFontFamily(self._fontFamily)
|
||||
style.setFontSize(self._fSizeHead1)
|
||||
style.setFontWeight(self._fontBold)
|
||||
style.setFontWeight(self._headWeight)
|
||||
style.setColour(self._colHead12)
|
||||
style.setOpacity(self._opaHead12)
|
||||
style.packXML(self._xStyl)
|
||||
@@ -1016,7 +1025,7 @@ class ToOdt(Tokenizer):
|
||||
style.setFontName(self._fontFamily)
|
||||
style.setFontFamily(self._fontFamily)
|
||||
style.setFontSize(self._fSizeHead2)
|
||||
style.setFontWeight(self._fontBold)
|
||||
style.setFontWeight(self._headWeight)
|
||||
style.setColour(self._colHead12)
|
||||
style.setOpacity(self._opaHead12)
|
||||
style.packXML(self._xStyl)
|
||||
@@ -1034,7 +1043,7 @@ class ToOdt(Tokenizer):
|
||||
style.setFontName(self._fontFamily)
|
||||
style.setFontFamily(self._fontFamily)
|
||||
style.setFontSize(self._fSizeHead3)
|
||||
style.setFontWeight(self._fontBold)
|
||||
style.setFontWeight(self._headWeight)
|
||||
style.setColour(self._colHead34)
|
||||
style.setOpacity(self._opaHead34)
|
||||
style.packXML(self._xStyl)
|
||||
@@ -1052,7 +1061,7 @@ class ToOdt(Tokenizer):
|
||||
style.setFontName(self._fontFamily)
|
||||
style.setFontFamily(self._fontFamily)
|
||||
style.setFontSize(self._fSizeHead4)
|
||||
style.setFontWeight(self._fontBold)
|
||||
style.setFontWeight(self._headWeight)
|
||||
style.setColour(self._colHead34)
|
||||
style.setOpacity(self._opaHead34)
|
||||
style.packXML(self._xStyl)
|
||||
|
||||
@@ -1123,7 +1123,12 @@ class _FormattingTab(NScrollableForm):
|
||||
self.addGroupLabel(title, section)
|
||||
|
||||
self.odtAddColours = NSwitch(self, height=iPx)
|
||||
self.scaleHeadings = NSwitch(self, height=iPx)
|
||||
self.boldHeadings = NSwitch(self, height=iPx)
|
||||
|
||||
self.addRow(self._build.getLabel("odt.addColours"), self.odtAddColours)
|
||||
self.addRow(self._build.getLabel("odt.scaleHeadings"), self.scaleHeadings)
|
||||
self.addRow(self._build.getLabel("odt.boldHeadings"), self.boldHeadings)
|
||||
|
||||
self.odtPageHeader = QLineEdit(self)
|
||||
self.odtPageHeader.setMinimumWidth(CONFIG.pxInt(200))
|
||||
@@ -1226,6 +1231,8 @@ class _FormattingTab(NScrollableForm):
|
||||
# ============
|
||||
|
||||
self.odtAddColours.setChecked(self._build.getBool("odt.addColours"))
|
||||
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.odtPageHeader.setCursorPosition(0)
|
||||
@@ -1276,6 +1283,8 @@ class _FormattingTab(NScrollableForm):
|
||||
|
||||
# ODT Document
|
||||
self._build.setValue("odt.addColours", self.odtAddColours.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())
|
||||
|
||||
|
||||
@@ -772,8 +772,8 @@ def testCoreToOdt_SaveFlat(mockGUI, fncPath, tstPaths):
|
||||
assert odt._dLanguage == ""
|
||||
odt.setLanguage("nb_NO")
|
||||
assert odt._dLanguage == "nb"
|
||||
odt.setColourHeaders(True)
|
||||
assert odt._colourHead is True
|
||||
odt.setColoursEnabled(True)
|
||||
assert odt._addColours is True
|
||||
odt.setHeaderFormat(nwHeadFmt.ODT_AUTO, 1)
|
||||
assert odt._headerFormat == nwHeadFmt.ODT_AUTO
|
||||
odt.setFirstLineIndent(True, 1.4, False)
|
||||
|
||||
@@ -707,7 +707,9 @@ def testToolBuildSettings_FormatOutput(qtbot, nwGUI):
|
||||
"""Test the format-specific settings."""
|
||||
build = BuildSettings()
|
||||
|
||||
build.setValue("odt.addColours", False)
|
||||
build.setValue("odt.addColours", True)
|
||||
build.setValue("odt.scaleHeadings", True)
|
||||
build.setValue("odt.boldHeadings", True)
|
||||
build.setValue("odt.pageHeader", nwHeadFmt.ODT_AUTO)
|
||||
build.setValue("odt.pageCountOffset", 0)
|
||||
|
||||
@@ -724,7 +726,9 @@ def testToolBuildSettings_FormatOutput(qtbot, nwGUI):
|
||||
assert bSettings.toolStack.currentWidget() is fmtTab
|
||||
|
||||
# Check initial values
|
||||
assert fmtTab.odtAddColours.isChecked() is False
|
||||
assert fmtTab.odtAddColours.isChecked() is True
|
||||
assert fmtTab.scaleHeadings.isChecked() is True
|
||||
assert fmtTab.boldHeadings.isChecked() is True
|
||||
assert fmtTab.odtPageHeader.text() == nwHeadFmt.ODT_AUTO
|
||||
assert fmtTab.odtPageCountOffset.value() == 0
|
||||
|
||||
@@ -732,7 +736,9 @@ def testToolBuildSettings_FormatOutput(qtbot, nwGUI):
|
||||
assert fmtTab.htmlPreserveTabs.isChecked() is False
|
||||
|
||||
# Toggle all
|
||||
fmtTab.odtAddColours.setChecked(True)
|
||||
fmtTab.odtAddColours.setChecked(False)
|
||||
fmtTab.scaleHeadings.setChecked(False)
|
||||
fmtTab.boldHeadings.setChecked(False)
|
||||
fmtTab.htmlAddStyles.setChecked(True)
|
||||
fmtTab.htmlPreserveTabs.setChecked(True)
|
||||
|
||||
@@ -743,7 +749,9 @@ def testToolBuildSettings_FormatOutput(qtbot, nwGUI):
|
||||
# Save values
|
||||
fmtTab.saveContent()
|
||||
|
||||
assert build.getBool("odt.addColours") is True
|
||||
assert build.getBool("odt.addColours") is False
|
||||
assert build.getBool("odt.scaleHeadings") is False
|
||||
assert build.getBool("odt.boldHeadings") is False
|
||||
assert build.getStr("odt.pageHeader") == "Stuff"
|
||||
assert build.getInt("odt.pageCountOffset") == 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user