Fix loading labels and statuses in outline

Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
This commit is contained in:
TheJackiMonster 2022-11-19 14:59:51 +01:00
parent 6f83293e29
commit 6e4e08d7f9
No known key found for this signature in database
GPG key ID: D850A5F772E880F9
3 changed files with 31 additions and 17 deletions

View file

@ -10,8 +10,9 @@ from manuskript.io.mmdFile import MmdFile
class Label:
def __init__(self, host, name: str, color: Color):
def __init__(self, host, index: int, name: str, color: Color):
self.host = host
self.ID = index
self.name = name
self.color = color
@ -36,7 +37,7 @@ class LabelHost:
if name is None:
name = "New Label"
label = Label(self, name, color)
label = Label(self, 1+len(self.labels), name, color)
self.labels[name] = label
return label
@ -67,11 +68,14 @@ class LabelHost:
def getLabel(self, name: str) -> Label:
return self.labels.get(name)
def getLabelByID(self, id: int) -> Label | None:
index = 0
def getLabelByID(self, ID: int | None) -> Label | None:
if ID is None:
return None
index = 1
for label in self.labels.values():
if index == id:
if index == ID:
assert label.ID == ID
return label
index += 1

View file

@ -6,12 +6,12 @@ import os
from collections import OrderedDict
from enum import Enum, unique
from manuskript.data.goal import Goal
from manuskript.data.labels import LabelHost
from manuskript.data.labels import LabelHost, Label
from manuskript.data.plots import Plots
from manuskript.data.status import StatusHost
from manuskript.data.status import StatusHost, Status
from manuskript.data.unique_id import UniqueIDHost
from manuskript.io.mmdFile import MmdFile
from manuskript.util import CounterKind, countText, validString
from manuskript.util import CounterKind, countText, safeInt
@unique
@ -50,14 +50,20 @@ class OutlineItem:
if (item.UID is None) or (item.UID.value != int(ID)):
item.UID = item.outline.host.loadID(int(ID))
def loadLabelByID(outline, labelID: str) -> Label:
return outline.labels.getLabelByID(safeInt(labelID, 0))
def loadStatusByID(outline, statusID: str) -> Label:
return outline.statuses.getStatusByID(safeInt(statusID, 0))
item.title = metadata.get("title", None)
item.type = metadata.get("type", "md")
item.summarySentence = metadata.get("summarySentence", None)
item.summaryFull = metadata.get("summaryFull", None)
item.POV = metadata.get("POV", None)
item.notes = metadata.get("notes", None)
item.label = metadata.get("label", None)
item.status = metadata.get("status", None)
item.label = loadLabelByID(item.outline, metadata.get("label", None))
item.status = loadStatusByID(item.outline, metadata.get("status", None))
item.compile = metadata.get("compile")
item.goal = Goal.parse(metadata.get("setGoal", None))
@ -75,8 +81,8 @@ class OutlineItem:
metadata["summaryFull"] = item.summaryFull
metadata["POV"] = item.POV
metadata["notes"] = item.notes
metadata["label"] = item.label
metadata["status"] = item.status
metadata["label"] = None if item is None else item.label.ID
metadata["status"] = None if item is None else item.status.ID
metadata["compile"] = item.compile
metadata["setGoal"] = item.goal

View file

@ -9,8 +9,9 @@ from manuskript.io.textFile import TextFile
class Status:
def __init__(self, host, name: str):
def __init__(self, host, index: int, name: str):
self.host = host
self.ID = index
self.name = name
@ -34,7 +35,7 @@ class StatusHost:
if name is None:
name = "New Status"
status = Status(self, name)
status = Status(self, 1+len(self.statuses), name)
self.statuses[name] = status
return status
@ -65,11 +66,14 @@ class StatusHost:
def getStatus(self, name: str) -> Status:
return self.statuses.get(name)
def getStatusByID(self, id: int) -> Status | None:
index = 0
def getStatusByID(self, ID: int | None) -> Status | None:
if ID is None:
return None
index = 1
for status in self.statuses.values():
if index == id:
if index == ID:
assert status.ID == ID
return status
index += 1