Use enums for build formats

This commit is contained in:
Veronica Berglyd Olsen
2023-06-08 23:32:32 +02:00
parent 4ee452d186
commit 8ef1a12201
5 changed files with 62 additions and 31 deletions
+14 -9
View File
@@ -34,11 +34,12 @@ from pathlib import Path
from PyQt5.QtCore import QT_TRANSLATE_NOOP
from novelwriter.enum import nwBuildFmt
from novelwriter.error import logException
from novelwriter.common import checkUuid, isHandle, jsonEncode
from novelwriter.constants import nwFiles, nwHeadFmt, nwLabels
from novelwriter.constants import nwFiles, nwHeadFmt
from novelwriter.core.item import NWItem
from novelwriter.core.project import NWProject
from novelwriter.error import logException
logger = logging.getLogger(__name__)
@@ -140,7 +141,7 @@ class BuildSettings:
self._uuid = str(uuid.uuid4())
self._path = Path.home()
self._build = ""
self._format = "odt"
self._format = nwBuildFmt.ODT
self._skipRoot = set()
self._excluded = set()
self._included = set()
@@ -175,7 +176,7 @@ class BuildSettings:
return self._build
@property
def lastFormat(self) -> str:
def lastFormat(self) -> nwBuildFmt:
"""The last used build format."""
return self._format
@@ -252,10 +253,10 @@ class BuildSettings:
self._changed = True
return
def setLastFormat(self, key: str):
def setLastFormat(self, value: nwBuildFmt):
"""Set the last used build format."""
if key in nwLabels.BUILD_FORMATS:
self._format = key
if isinstance(value, nwBuildFmt):
self._format = value
self._changed = True
return
@@ -377,7 +378,7 @@ class BuildSettings:
"uuid": self._uuid,
"path": str(self._path),
"build": self._build,
"format": self._format,
"format": self._format.name,
"settings": self._settings.copy(),
"content": {
"included": list(self._included),
@@ -398,7 +399,11 @@ class BuildSettings:
self.setBuildID(data.get("uuid", ""))
self.setLastPath(data.get("path", None))
self.setLastBuildName(data.get("build", ""))
self.setLastFormat(data.get("format", "odt"))
buildFmt = str(data.get("build", ""))
if buildFmt in nwBuildFmt.__members__:
self.setLastFormat(nwBuildFmt[buildFmt])
if isinstance(included, list):
self._included = set([h for h in included if isHandle(h)])
if isinstance(excluded, list):
+6 -5
View File
@@ -31,6 +31,7 @@ from pathlib import Path
from PyQt5.QtGui import QFont, QFontInfo
from novelwriter import CONFIG
from novelwriter.enum import nwBuildFmt
from novelwriter.error import formatException
from novelwriter.core.tomd import ToMarkdown
from novelwriter.core.toodt import ToOdt
@@ -106,15 +107,15 @@ class NWBuildDocument:
self._queue.append(item.itemHandle)
return
def iterBuild(self, path: Path, bFormat: str) -> Iterable[tuple[int, bool]]:
def iterBuild(self, path: Path, bFormat: nwBuildFmt) -> Iterable[tuple[int, bool]]:
"""Wrapper for builders based on format."""
if bFormat in ("odt", "fodt"):
if bFormat in (nwBuildFmt.ODT, nwBuildFmt.FODT):
yield from self.iterBuildOpenDocument(path, bFormat == "fodt")
elif bFormat in ("html", "jhtml"):
elif bFormat in (nwBuildFmt.HTML, nwBuildFmt.J_HTML):
yield from self.iterBuildHTML(path if bFormat == "html" else None)
elif bFormat in ("md", "md+"):
elif bFormat in (nwBuildFmt.STD_MD, nwBuildFmt.EXT_MD):
yield from self.iterBuildMarkdown(path, bFormat == "md+")
elif bFormat in ("nwd", "jnwd"):
elif bFormat in (nwBuildFmt.NWD, nwBuildFmt.J_NWD):
yield from self.iterBuildNovelWriter(path if bFormat == "nwd" else None)
return