3737)
3838
3939from novelwriter import CONFIG , SHARED
40- from novelwriter .common import describeFont , fontMatcher , qtAddAction , qtLambda
40+ from novelwriter .common import (
41+ describeFont , fontMatcher , languageName , processLangCode , qtAddAction ,
42+ qtLambda
43+ )
4144from novelwriter .constants import nwHeadFmt , nwKeyWords , nwLabels , nwUnicode , trConst
4245from novelwriter .core .buildsettings import BuildSettings , FilterMode
4346from novelwriter .enum import nwStandardButton
5154from novelwriter .extensions .switch import NSwitch
5255from novelwriter .extensions .switchbox import NSwitchBox
5356from novelwriter .types import (
54- QtAlignCenter , QtAlignLeft , QtHeaderFixed , QtHeaderStretch , QtRoleAccept ,
55- QtRoleApply , QtRoleDestruct , QtUserRole
57+ QtAlignCenter , QtAlignLeft , QtAlignRightMiddle , QtHeaderFixed ,
58+ QtHeaderStretch , QtRoleAccept , QtRoleApply , QtRoleDestruct , QtUserRole
5659)
5760
5861if TYPE_CHECKING :
@@ -1287,21 +1290,21 @@ def buildForm(self) -> None:
12871290 self .addGroupLabel (title , section )
12881291
12891292 # Header
1290- self .odtPageHeader = QLineEdit (self )
1291- self .odtPageHeader .setMinimumWidth (200 )
1293+ self .pageHeader = QLineEdit (self )
1294+ self .pageHeader .setMinimumWidth (200 )
12921295 self .btnPageHeader = NIconToolButton (self , iSz )
12931296 self .btnPageHeader .clicked .connect (self ._resetPageHeader )
12941297 self .addRow (
1295- self ._build .getLabel ("doc.pageHeader" ), self .odtPageHeader ,
1298+ self ._build .getLabel ("doc.pageHeader" ), self .pageHeader ,
12961299 button = self .btnPageHeader , stretch = (1 , 1 )
12971300 )
12981301
1299- self .odtPageCountOffset = NSpinBox (self )
1300- self .odtPageCountOffset .setMinimum (0 )
1301- self .odtPageCountOffset .setMaximum (999 )
1302- self .odtPageCountOffset .setSingleStep (1 )
1303- self .odtPageCountOffset .setMinimumWidth (spW )
1304- self .addRow (self ._build .getLabel ("doc.pageCountOffset" ), self .odtPageCountOffset )
1302+ self .pageCountOffset = NSpinBox (self )
1303+ self .pageCountOffset .setMinimum (0 )
1304+ self .pageCountOffset .setMaximum (999 )
1305+ self .pageCountOffset .setSingleStep (1 )
1306+ self .pageCountOffset .setMinimumWidth (spW )
1307+ self .addRow (self ._build .getLabel ("doc.pageCountOffset" ), self .pageCountOffset )
13051308
13061309 # Headings
13071310 self .colorHeadings = NSwitch (self , height = iPx )
@@ -1312,6 +1315,20 @@ def buildForm(self) -> None:
13121315 self .addRow (self ._build .getLabel ("doc.scaleHeadings" ), self .scaleHeadings )
13131316 self .addRow (self ._build .getLabel ("doc.boldHeadings" ), self .boldHeadings )
13141317
1318+ # Meta Language
1319+ self .lblMetaLanguage = QLabel (self )
1320+ self .lblMetaLanguage .setAlignment (QtAlignRightMiddle )
1321+ self .lblMetaLanguage .setFixedWidth (200 )
1322+
1323+ self .metaLanguage = QLineEdit (self )
1324+ self .metaLanguage .setAlignment (QtAlignCenter )
1325+ self .metaLanguage .setFixedWidth (80 )
1326+ self .metaLanguage .textChanged .connect (self ._refreshMetaLang )
1327+
1328+ self .addRow (
1329+ self ._build .getLabel ("doc.metaLanguage" ), [self .lblMetaLanguage , 8 , self .metaLanguage ]
1330+ )
1331+
13151332 # HTML Document
13161333 # =============
13171334
@@ -1437,9 +1454,10 @@ def loadContent(self) -> None:
14371454 self .colorHeadings .setChecked (self ._build .getBool ("doc.colorHeadings" ))
14381455 self .scaleHeadings .setChecked (self ._build .getBool ("doc.scaleHeadings" ))
14391456 self .boldHeadings .setChecked (self ._build .getBool ("doc.boldHeadings" ))
1440- self .odtPageHeader .setText (self ._build .getStr ("doc.pageHeader" ))
1441- self .odtPageCountOffset .setValue (self ._build .getInt ("doc.pageCountOffset" ))
1442- self .odtPageHeader .setCursorPosition (0 )
1457+ self .metaLanguage .setText (processLangCode (self ._build .getStr ("doc.metaLanguage" )))
1458+ self .pageHeader .setText (self ._build .getStr ("doc.pageHeader" ))
1459+ self .pageCountOffset .setValue (self ._build .getInt ("doc.pageCountOffset" ))
1460+ self .pageHeader .setCursorPosition (0 )
14431461
14441462 # HTML Document
14451463 # =============
@@ -1502,11 +1520,16 @@ def saveContent(self) -> None:
15021520 self ._build .setValue ("format.rightMargin" , self .rightMargin .value ())
15031521
15041522 # Documents
1523+ metaLanguage = processLangCode (self .metaLanguage .text ())
1524+
15051525 self ._build .setValue ("doc.colorHeadings" , self .colorHeadings .isChecked ())
15061526 self ._build .setValue ("doc.scaleHeadings" , self .scaleHeadings .isChecked ())
15071527 self ._build .setValue ("doc.boldHeadings" , self .boldHeadings .isChecked ())
1508- self ._build .setValue ("doc.pageHeader" , self .odtPageHeader .text ())
1509- self ._build .setValue ("doc.pageCountOffset" , self .odtPageCountOffset .value ())
1528+ self ._build .setValue ("doc.metaLanguage" , metaLanguage )
1529+ self ._build .setValue ("doc.pageHeader" , self .pageHeader .text ())
1530+ self ._build .setValue ("doc.pageCountOffset" , self .pageCountOffset .value ())
1531+
1532+ self .metaLanguage .setText (metaLanguage )
15101533
15111534 # HTML Document
15121535 self ._build .setValue ("html.addStyles" , self .htmlAddStyles .isChecked ())
@@ -1603,10 +1626,17 @@ def _pageSizeValueChanged(self) -> None:
16031626 if index >= 0 :
16041627 self .pageSize .setCurrentIndex (index )
16051628
1629+ @pyqtSlot ()
16061630 def _resetPageHeader (self ) -> None :
1607- """Reset the ODT header format to default."""
1608- self .odtPageHeader .setText (nwHeadFmt .DOC_AUTO )
1609- self .odtPageHeader .setCursorPosition (0 )
1631+ """Reset the document header format to default."""
1632+ self .pageHeader .setText (nwHeadFmt .DOC_AUTO )
1633+ self .pageHeader .setCursorPosition (0 )
1634+
1635+ @pyqtSlot ()
1636+ def _refreshMetaLang (self ) -> None :
1637+ """Update the meta language helper info."""
1638+ code = self .metaLanguage .text ().strip ()
1639+ self .lblMetaLanguage .setText (languageName (code ))
16101640
16111641 ##
16121642 # Internal Functions
0 commit comments