Add settings to style ODT headers

This commit is contained in:
Veronica Berglyd Olsen
2024-10-15 19:22:08 +02:00
parent 140f85f214
commit 2f12a8cc93
6 changed files with 58 additions and 23 deletions
+4
View File
@@ -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"),
+7 -2
View File
@@ -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
View File
@@ -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)