Fixed differences between new data models and sample data

Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
This commit is contained in:
TheJackiMonster 2021-05-09 02:14:36 +02:00
parent 41b3f23fac
commit 674cebdea2
No known key found for this signature in database
GPG key ID: D850A5F772E880F9
6 changed files with 34 additions and 19 deletions

View file

@ -14,3 +14,5 @@ path = os.path.join(sys.path[1], "sample-projects/book-of-acts")
project = data.Project(path + ".msk") project = data.Project(path + ".msk")
project.load() project.load()
project.save()

View file

@ -3,6 +3,7 @@
import os import os
from collections import OrderedDict
from manuskript.data.color import Color from manuskript.data.color import Color
from manuskript.data.unique_id import UniqueIDHost from manuskript.data.unique_id import UniqueIDHost
from manuskript.io.mmdFile import MmdFile from manuskript.io.mmdFile import MmdFile
@ -17,7 +18,7 @@ class Character:
self.UID = None self.UID = None
self.name = None self.name = None
self.importance = None self.importance = None
self.pov = True self.POV = None
self.motivation = None self.motivation = None
self.goal = None self.goal = None
self.conflict = None self.conflict = None
@ -29,6 +30,9 @@ class Character:
self.color = None self.color = None
self.details = dict() self.details = dict()
def allowPOV(self) -> bool:
return True if self.POV is None else self.POV
@classmethod @classmethod
def loadAttribute(cls, metadata: dict, name: str, defaultValue=None): def loadAttribute(cls, metadata: dict, name: str, defaultValue=None):
if name in metadata: if name in metadata:
@ -47,7 +51,7 @@ class Character:
self.UID = self.characters.host.loadID(int(ID)) self.UID = self.characters.host.loadID(int(ID))
self.name = Character.loadAttribute(metadata, "Name", None) self.name = Character.loadAttribute(metadata, "Name", None)
self.importance = Character.loadAttribute(metadata, "Importance", None) self.importance = Character.loadAttribute(metadata, "Importance", None)
self.pov = Character.loadAttribute(metadata, "POV", True) self.POV = Character.loadAttribute(metadata, "POV", None)
self.motivation = Character.loadAttribute(metadata, "Motivation", None) self.motivation = Character.loadAttribute(metadata, "Motivation", None)
self.goal = Character.loadAttribute(metadata, "Goal", None) self.goal = Character.loadAttribute(metadata, "Goal", None)
self.conflict = Character.loadAttribute(metadata, "Conflict", None) self.conflict = Character.loadAttribute(metadata, "Conflict", None)
@ -64,15 +68,12 @@ class Character:
self.details[key] = value self.details[key] = value
def save(self): def save(self):
metadata = dict() metadata = OrderedDict()
for (key, value) in self.details.items():
metadata[key] = value
metadata["ID"] = str(self.UID.value)
metadata["Name"] = self.name metadata["Name"] = self.name
metadata["ID"] = str(self.UID.value)
metadata["Importance"] = self.importance metadata["Importance"] = self.importance
metadata["POV"] = self.pov metadata["POV"] = self.POV
metadata["Motivation"] = self.motivation metadata["Motivation"] = self.motivation
metadata["Goal"] = self.goal metadata["Goal"] = self.goal
metadata["Conflict"] = self.conflict metadata["Conflict"] = self.conflict
@ -83,6 +84,10 @@ class Character:
metadata["Notes"] = self.notes metadata["Notes"] = self.notes
metadata["Color"] = self.color metadata["Color"] = self.color
for (key, value) in self.details.items():
if not (key in metadata):
metadata[key] = value
self.file.save((metadata, None)) self.file.save((metadata, None))

View file

@ -13,11 +13,14 @@ class GoalKind(Enum):
class Goal: class Goal:
def __init__(self, value: int = 0, kind: GoalKind = GoalKind.WORDS): def __init__(self, value: int = 0, kind: GoalKind = GoalKind.WORDS):
self.value = 0 self.value = value
self.kind = kind self.kind = kind
def __str__(self): def __str__(self):
return str(self.value) + " " + self.kind.name.lower() if self.kind != GoalKind.WORDS:
return str(self.value) + " " + self.kind.name.lower()
else:
return str(self.value)
@classmethod @classmethod
def parse(cls, string: str): def parse(cls, string: str):

View file

@ -66,7 +66,7 @@ class LabelHost:
def save(self): def save(self):
metadata = dict() metadata = dict()
for label in self.labels: for (name, label) in self.labels.items():
metadata[label.name] = label.color metadata[name] = label.color
self.file.save((metadata, None)) self.file.save((metadata, None))

View file

@ -3,6 +3,7 @@
import os import os
from collections import OrderedDict
from enum import Enum, unique from enum import Enum, unique
from manuskript.data.goal import Goal from manuskript.data.goal import Goal
from manuskript.data.unique_id import UniqueIDHost from manuskript.data.unique_id import UniqueIDHost
@ -56,13 +57,13 @@ class OutlineItem:
@classmethod @classmethod
def saveMetadata(cls, item): def saveMetadata(cls, item):
metadata = dict() metadata = OrderedDict()
if item.UID is None: if item.UID is None:
return metadata return metadata
metadata["ID"] = str(item.UID.value)
metadata["title"] = item.title metadata["title"] = item.title
metadata["ID"] = str(item.UID.value)
metadata["type"] = item.type metadata["type"] = item.type
metadata["summarySentence"] = item.summarySentence metadata["summarySentence"] = item.summarySentence
metadata["summaryFull"] = item.summaryFull metadata["summaryFull"] = item.summaryFull
@ -71,7 +72,7 @@ class OutlineItem:
metadata["label"] = item.label metadata["label"] = item.label
metadata["status"] = item.status metadata["status"] = item.status
metadata["compile"] = item.compile metadata["compile"] = item.compile
metadata["setGoal"] = str(item.goal) metadata["setGoal"] = item.goal
return metadata return metadata
@ -101,6 +102,7 @@ class OutlineText(OutlineItem):
def save(self): def save(self):
if self.state == OutlineState.OPTIMIZED: if self.state == OutlineState.OPTIMIZED:
self.outline.host.removeID(self.UID)
self.load(False) self.load(False)
metadata = OutlineItem.saveMetadata(self) metadata = OutlineItem.saveMetadata(self)
@ -163,7 +165,7 @@ class OutlineFolder(OutlineItem):
def save(self): def save(self):
self.type = "folder" self.type = "folder"
metadata = OutlineItem.saveMetadata(self) metadata = OutlineItem.saveMetadata(self)
self.file.save((metadata, "")) self.file.save((metadata, "\n"))
class Outline: class Outline:

View file

@ -8,7 +8,7 @@ from manuskript.io.abstractFile import AbstractFile
class MmdFile(AbstractFile): class MmdFile(AbstractFile):
def __init__(self, path, metaSpacing = 16): def __init__(self, path, metaSpacing=16):
AbstractFile.__init__(self, path) AbstractFile.__init__(self, path)
self.metaSpacing = metaSpacing self.metaSpacing = metaSpacing
@ -56,7 +56,10 @@ class MmdFile(AbstractFile):
metadata, body = content metadata, body = content
metaSpacing = self.metaSpacing metaSpacing = self.metaSpacing
for key in metadata.keys(): for (key, value) in metadata.items():
if value is None:
continue
metaSpacing = max(metaSpacing, len(key) + 2) metaSpacing = max(metaSpacing, len(key) + 2)
with open(self.path, 'wt', encoding='utf-8') as file: with open(self.path, 'wt', encoding='utf-8') as file:
@ -65,7 +68,7 @@ class MmdFile(AbstractFile):
continue continue
spacing = metaSpacing - (len(key) + 2) spacing = metaSpacing - (len(key) + 2)
lines = value.split("\n") lines = str(value).split("\n")
file.write(key + ": " + spacing * " " + lines[0] + "\n") file.write(key + ": " + spacing * " " + lines[0] + "\n")