manuskript/manuskript/data/project.py
TheJackiMonster cfa7452292
Start implementing plot view
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
2022-10-29 18:42:55 +02:00

98 lines
2.7 KiB
Python

#!/usr/bin/env python
# --!-- coding: utf8 --!--
import os
from zipfile import BadZipFile
from manuskript.data.version import Version, CURRENT_MSK_VERSION
from manuskript.data.info import Info
from manuskript.data.summary import Summary
from manuskript.data.labels import LabelHost
from manuskript.data.status import StatusHost
from manuskript.data.settings import Settings
from manuskript.data.characters import Characters
from manuskript.data.plots import Plots
from manuskript.data.world import World
from manuskript.data.outline import Outline
from manuskript.data.revisions import Revisions
from manuskript.io.mskFile import MskFile
class Project:
def __init__(self, path):
self.file = MskFile(path)
self.version = Version(self.file.dir_path)
self.info = Info(self.file.dir_path)
self.summary = Summary(self.file.dir_path)
self.labels = LabelHost(self.file.dir_path)
self.statuses = StatusHost(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.characters)
self.world = World(self.file.dir_path)
self.outline = Outline(self.file.dir_path)
self.revisions = Revisions(self.file.dir_path)
def __del__(self):
del self.file
def getName(self):
parts = os.path.split(self.file.path)
name = parts[-1]
if name.endswith('.msk'):
name = name[:-4]
return name
def getVersion(self) -> int:
return self.version.value
def canUpgradeVersion(self) -> bool:
return self.version.value < CURRENT_MSK_VERSION
def upgradeVersion(self):
self.version.value = CURRENT_MSK_VERSION
def load(self):
try:
self.file.load()
except BadZipFile or FileNotFoundError:
return
self.version.load()
self.info.load()
self.summary.load()
self.labels.load()
self.statuses.load()
self.settings.load()
self.characters.load()
self.plots.load()
self.world.load()
self.outline.load()
self.revisions.load()
self.file.setZipFile(self.settings.isEnabled("saveToZip"))
def save(self):
saveToZip = self.settings.isEnabled("saveToZip")
self.file.setZipFile(saveToZip)
self.file.setVersion(self.version.value)
self.version.save()
self.info.save()
self.summary.save()
self.labels.save()
self.statuses.save()
self.settings.save()
self.characters.save()
self.plots.save()
self.world.save()
self.outline.save()
#self.revisions.save()
self.file.save(saveToZip)