mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-10-01 09:46:30 +13:00
Added basic io handling for characters
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
This commit is contained in:
parent
f9ad8d214c
commit
41b3f23fac
6 changed files with 130 additions and 9 deletions
|
@ -8,7 +8,6 @@ realpath = os.path.realpath(__file__)
|
||||||
|
|
||||||
sys.path.insert(1, os.path.join(os.path.dirname(realpath), '..'))
|
sys.path.insert(1, os.path.join(os.path.dirname(realpath), '..'))
|
||||||
|
|
||||||
import manuskript.io as io
|
|
||||||
import manuskript.data as data
|
import manuskript.data as data
|
||||||
|
|
||||||
path = os.path.join(sys.path[1], "sample-projects/book-of-acts")
|
path = os.path.join(sys.path[1], "sample-projects/book-of-acts")
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# --!-- coding: utf8 --!--
|
# --!-- coding: utf8 --!--
|
||||||
|
|
||||||
|
from manuskript.data.characters import Characters, Character
|
||||||
|
from manuskript.data.color import Color
|
||||||
|
from manuskript.data.goal import GoalKind, Goal
|
||||||
|
from manuskript.data.info import Info
|
||||||
|
from manuskript.data.labels import LabelHost, Label
|
||||||
|
from manuskript.data.outline import Outline, OutlineFolder, OutlineText
|
||||||
from manuskript.data.plots import Plots, PlotLine, PlotStep
|
from manuskript.data.plots import Plots, PlotLine, PlotStep
|
||||||
from manuskript.data.project import Project
|
from manuskript.data.project import Project
|
||||||
from manuskript.data.goal import GoalKind, Goal
|
|
||||||
from manuskript.data.outline import Outline, OutlineFolder, OutlineText
|
|
||||||
from manuskript.data.revisions import Revisions
|
from manuskript.data.revisions import Revisions
|
||||||
from manuskript.data.color import Color
|
|
||||||
from manuskript.data.labels import LabelHost, Label
|
|
||||||
from manuskript.data.status import StatusHost, Status
|
|
||||||
from manuskript.data.settings import Settings
|
from manuskript.data.settings import Settings
|
||||||
|
from manuskript.data.status import StatusHost, Status
|
||||||
from manuskript.data.unique_id import UniqueIDHost, UniqueID
|
from manuskript.data.unique_id import UniqueIDHost, UniqueID
|
||||||
|
|
116
manuskript/data/characters.py
Normal file
116
manuskript/data/characters.py
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# --!-- coding: utf8 --!--
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from manuskript.data.color import Color
|
||||||
|
from manuskript.data.unique_id import UniqueIDHost
|
||||||
|
from manuskript.io.mmdFile import MmdFile
|
||||||
|
|
||||||
|
|
||||||
|
class Character:
|
||||||
|
|
||||||
|
def __init__(self, path, characters):
|
||||||
|
self.file = MmdFile(path, 21)
|
||||||
|
self.characters = characters
|
||||||
|
|
||||||
|
self.UID = None
|
||||||
|
self.name = None
|
||||||
|
self.importance = None
|
||||||
|
self.pov = True
|
||||||
|
self.motivation = None
|
||||||
|
self.goal = None
|
||||||
|
self.conflict = None
|
||||||
|
self.epiphany = None
|
||||||
|
self.summarySentence = None
|
||||||
|
self.summaryParagraph = None
|
||||||
|
self.summaryFull = None
|
||||||
|
self.notes = None
|
||||||
|
self.color = None
|
||||||
|
self.details = dict()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def loadAttribute(cls, metadata: dict, name: str, defaultValue=None):
|
||||||
|
if name in metadata:
|
||||||
|
return metadata.pop(name)
|
||||||
|
else:
|
||||||
|
return defaultValue
|
||||||
|
|
||||||
|
def load(self):
|
||||||
|
metadata, _ = self.file.loadMMD(True)
|
||||||
|
|
||||||
|
ID = Character.loadAttribute(metadata, "ID")
|
||||||
|
|
||||||
|
if ID is None:
|
||||||
|
raise IOError("Character is missing ID!")
|
||||||
|
|
||||||
|
self.UID = self.characters.host.loadID(int(ID))
|
||||||
|
self.name = Character.loadAttribute(metadata, "Name", None)
|
||||||
|
self.importance = Character.loadAttribute(metadata, "Importance", None)
|
||||||
|
self.pov = Character.loadAttribute(metadata, "POV", True)
|
||||||
|
self.motivation = Character.loadAttribute(metadata, "Motivation", None)
|
||||||
|
self.goal = Character.loadAttribute(metadata, "Goal", None)
|
||||||
|
self.conflict = Character.loadAttribute(metadata, "Conflict", None)
|
||||||
|
self.epiphany = Character.loadAttribute(metadata, "Epiphany", None)
|
||||||
|
self.summarySentence = Character.loadAttribute(metadata, "Phrase Summary", None)
|
||||||
|
self.summaryParagraph = Character.loadAttribute(metadata, "Paragraph Summary", None)
|
||||||
|
self.summaryFull = Character.loadAttribute(metadata, "Full Summary", None)
|
||||||
|
self.notes = Character.loadAttribute(metadata, "Notes", None)
|
||||||
|
self.color = Color.parse(Character.loadAttribute(metadata, "Color", None))
|
||||||
|
|
||||||
|
self.details.clear()
|
||||||
|
|
||||||
|
for (key, value) in metadata.items():
|
||||||
|
self.details[key] = value
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
metadata = dict()
|
||||||
|
|
||||||
|
for (key, value) in self.details.items():
|
||||||
|
metadata[key] = value
|
||||||
|
|
||||||
|
metadata["ID"] = str(self.UID.value)
|
||||||
|
metadata["Name"] = self.name
|
||||||
|
metadata["Importance"] = self.importance
|
||||||
|
metadata["POV"] = self.pov
|
||||||
|
metadata["Motivation"] = self.motivation
|
||||||
|
metadata["Goal"] = self.goal
|
||||||
|
metadata["Conflict"] = self.conflict
|
||||||
|
metadata["Epiphany"] = self.epiphany
|
||||||
|
metadata["Phrase Summary"] = self.summarySentence
|
||||||
|
metadata["Paragraph Summary"] = self.summaryParagraph
|
||||||
|
metadata["Full Summary"] = self.summaryFull
|
||||||
|
metadata["Notes"] = self.notes
|
||||||
|
metadata["Color"] = self.color
|
||||||
|
|
||||||
|
self.file.save((metadata, None))
|
||||||
|
|
||||||
|
|
||||||
|
class Characters:
|
||||||
|
|
||||||
|
def __init__(self, path):
|
||||||
|
self.dir_path = os.path.join(path, "characters")
|
||||||
|
self.host = UniqueIDHost()
|
||||||
|
self.characters = list()
|
||||||
|
|
||||||
|
def load(self):
|
||||||
|
self.characters.clear()
|
||||||
|
|
||||||
|
for name in os.listdir(self.dir_path):
|
||||||
|
path = os.path.join(self.dir_path, name)
|
||||||
|
|
||||||
|
if not os.path.isfile(path):
|
||||||
|
continue
|
||||||
|
|
||||||
|
character = Character(path, self)
|
||||||
|
|
||||||
|
try:
|
||||||
|
character.load()
|
||||||
|
except FileNotFoundError:
|
||||||
|
continue
|
||||||
|
|
||||||
|
self.characters.append(character)
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
for character in self.characters:
|
||||||
|
character.save()
|
|
@ -67,6 +67,6 @@ class LabelHost:
|
||||||
metadata = dict()
|
metadata = dict()
|
||||||
|
|
||||||
for label in self.labels:
|
for label in self.labels:
|
||||||
metadata[label.name] = str(label.color)
|
metadata[label.name] = label.color
|
||||||
|
|
||||||
self.file.save((metadata, None))
|
self.file.save((metadata, None))
|
||||||
|
|
|
@ -5,7 +5,7 @@ import os
|
||||||
|
|
||||||
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, UniqueID
|
from manuskript.data.unique_id import UniqueIDHost
|
||||||
from manuskript.io.mmdFile import MmdFile
|
from manuskript.io.mmdFile import MmdFile
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,8 +23,8 @@ class OutlineItem:
|
||||||
self.outline = outline
|
self.outline = outline
|
||||||
self.state = OutlineState.UNDEFINED
|
self.state = OutlineState.UNDEFINED
|
||||||
|
|
||||||
self.title = ""
|
|
||||||
self.UID = None
|
self.UID = None
|
||||||
|
self.title = ""
|
||||||
self.type = ""
|
self.type = ""
|
||||||
self.summarySentence = None
|
self.summarySentence = None
|
||||||
self.summaryFull = None
|
self.summaryFull = None
|
||||||
|
|
|
@ -7,6 +7,7 @@ from manuskript.data.summary import Summary
|
||||||
from manuskript.data.labels import LabelHost
|
from manuskript.data.labels import LabelHost
|
||||||
from manuskript.data.status import StatusHost
|
from manuskript.data.status import StatusHost
|
||||||
from manuskript.data.settings import Settings
|
from manuskript.data.settings import Settings
|
||||||
|
from manuskript.data.characters import Characters
|
||||||
from manuskript.data.plots import Plots
|
from manuskript.data.plots import Plots
|
||||||
from manuskript.data.outline import Outline
|
from manuskript.data.outline import Outline
|
||||||
from manuskript.data.revisions import Revisions
|
from manuskript.data.revisions import Revisions
|
||||||
|
@ -23,6 +24,7 @@ class Project:
|
||||||
self.labels = LabelHost(self.file.dir_path)
|
self.labels = LabelHost(self.file.dir_path)
|
||||||
self.statuses = StatusHost(self.file.dir_path)
|
self.statuses = StatusHost(self.file.dir_path)
|
||||||
self.settings = Settings(self.file.dir_path)
|
self.settings = Settings(self.file.dir_path)
|
||||||
|
self.characters = Characters(self.file.dir_path)
|
||||||
self.plots = Plots(self.file.dir_path)
|
self.plots = Plots(self.file.dir_path)
|
||||||
self.outline = Outline(self.file.dir_path)
|
self.outline = Outline(self.file.dir_path)
|
||||||
self.revisions = Revisions(self.file.dir_path)
|
self.revisions = Revisions(self.file.dir_path)
|
||||||
|
@ -43,6 +45,7 @@ class Project:
|
||||||
self.labels.load()
|
self.labels.load()
|
||||||
self.statuses.load()
|
self.statuses.load()
|
||||||
self.settings.load()
|
self.settings.load()
|
||||||
|
self.characters.load()
|
||||||
self.plots.load()
|
self.plots.load()
|
||||||
self.outline.load()
|
self.outline.load()
|
||||||
self.revisions.load()
|
self.revisions.load()
|
||||||
|
@ -58,6 +61,7 @@ class Project:
|
||||||
self.labels.save()
|
self.labels.save()
|
||||||
self.statuses.save()
|
self.statuses.save()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self.characters.save()
|
||||||
self.plots.save()
|
self.plots.save()
|
||||||
self.outline.save()
|
self.outline.save()
|
||||||
#self.revisions.save()
|
#self.revisions.save()
|
||||||
|
|
Loading…
Reference in a new issue