Add build details widget to manuscript tool

This commit is contained in:
Veronica Berglyd Olsen
2023-09-01 16:55:23 +02:00
parent 746bd4bf2c
commit ecebd69cda
4 changed files with 267 additions and 33 deletions
+50 -5
View File
@@ -319,7 +319,6 @@ class BuildSettings:
value = min(max(value, definition[2]), definition[3])
self._changed = value != self._settings[key]
self._settings[key] = value
logger.debug(f"Build Setting '{key}' set to: {value}")
return True
##
@@ -457,6 +456,8 @@ class BuildCollection:
def __init__(self, project: NWProject) -> None:
self._project = project
self._builds = {}
self._lastBuild = ""
self._defaultBuild = ""
self._loadCollection()
return
@@ -465,7 +466,21 @@ class BuildCollection:
return len(self._builds)
##
# Methods
# Properties
##
@property
def lastBuild(self) -> str:
"""Return the last active build."""
return self._lastBuild
@property
def defaultBuild(self) -> str:
"""Return the default build."""
return self._defaultBuild
##
# Getters
##
def getBuild(self, buildID: str) -> BuildSettings | None:
@@ -476,6 +491,24 @@ class BuildCollection:
build.unpack(self._builds[buildID])
return build
##
# Setters
##
def setLastBuild(self, buildID: str) -> None:
"""Set the last active build id."""
if buildID != self._lastBuild:
self._lastBuild = buildID
self._saveCollection()
return
def setDefaultBuild(self, buildID: str) -> None:
"""Set the default build id."""
if buildID != self._defaultBuild:
self._defaultBuild = buildID
self._saveCollection()
return
def setBuild(self, build: BuildSettings) -> None:
"""Set build settings data in the collection."""
if isinstance(build, BuildSettings):
@@ -484,6 +517,10 @@ class BuildCollection:
self._saveCollection()
return
##
# Methods
##
def removeBuild(self, buildID: str) -> None:
"""Remove the a build from the collection."""
self._builds.pop(buildID, None)
@@ -527,7 +564,11 @@ class BuildCollection:
return False
for key, entry in builds.items():
if isinstance(entry, dict):
if key == "lastBuild":
self._lastBuild = str(entry)
elif key == "defaultBuild":
self._defaultBuild = str(entry)
elif isinstance(entry, dict):
self._builds[key] = entry
return True
@@ -540,9 +581,13 @@ class BuildCollection:
logger.debug("Saving builds file")
try:
data = {"novelWriter.builds": self._builds}
data = {
"lastBuild": self._lastBuild,
"defaultBuild": self._defaultBuild,
}
data.update(self._builds)
with open(buildsFile, mode="w+", encoding="utf-8") as outFile:
outFile.write(jsonEncode(data, nmax=4))
outFile.write(jsonEncode({"novelWriter.builds": data}, nmax=4))
except Exception:
logger.error("Failed to save builds file")
logException()