2021-05-06 03:53:58 +12:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# --!-- coding: utf8 --!--
|
|
|
|
|
2021-05-15 05:46:39 +12:00
|
|
|
import os
|
|
|
|
|
2021-05-06 03:53:58 +12:00
|
|
|
from zipfile import BadZipFile
|
2021-06-22 02:11:39 +12:00
|
|
|
from manuskript.data.version import Version, CURRENT_MSK_VERSION
|
2021-05-09 11:15:14 +12:00
|
|
|
from manuskript.data.info import Info
|
2021-05-09 10:39:12 +12:00
|
|
|
from manuskript.data.summary import Summary
|
2021-05-09 11:15:14 +12:00
|
|
|
from manuskript.data.labels import LabelHost
|
2021-05-09 10:39:12 +12:00
|
|
|
from manuskript.data.status import StatusHost
|
|
|
|
from manuskript.data.settings import Settings
|
2021-05-09 11:51:14 +12:00
|
|
|
from manuskript.data.characters import Characters
|
2021-05-06 03:53:58 +12:00
|
|
|
from manuskript.data.plots import Plots
|
2021-05-10 03:07:30 +12:00
|
|
|
from manuskript.data.world import World
|
2021-05-09 10:39:12 +12:00
|
|
|
from manuskript.data.outline import Outline
|
2021-05-06 03:53:58 +12:00
|
|
|
from manuskript.data.revisions import Revisions
|
|
|
|
from manuskript.io.mskFile import MskFile
|
|
|
|
|
|
|
|
|
|
|
|
class Project:
|
|
|
|
|
|
|
|
def __init__(self, path):
|
|
|
|
self.file = MskFile(path)
|
|
|
|
|
2021-06-22 02:11:39 +12:00
|
|
|
self.version = Version(self.file.dir_path)
|
2021-05-09 11:15:14 +12:00
|
|
|
self.info = Info(self.file.dir_path)
|
2021-05-09 10:39:12 +12:00
|
|
|
self.summary = Summary(self.file.dir_path)
|
2021-05-09 11:15:14 +12:00
|
|
|
self.labels = LabelHost(self.file.dir_path)
|
2021-05-06 03:53:58 +12:00
|
|
|
self.statuses = StatusHost(self.file.dir_path)
|
|
|
|
self.settings = Settings(self.file.dir_path)
|
2021-05-09 11:51:14 +12:00
|
|
|
self.characters = Characters(self.file.dir_path)
|
2022-10-30 05:42:55 +13:00
|
|
|
self.plots = Plots(self.file.dir_path, self.characters)
|
2021-05-10 03:07:30 +12:00
|
|
|
self.world = World(self.file.dir_path)
|
2022-11-01 01:00:21 +13:00
|
|
|
self.outline = Outline(self.file.dir_path, self.plots, self.labels, self.statuses)
|
2021-05-06 03:53:58 +12:00
|
|
|
self.revisions = Revisions(self.file.dir_path)
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
del self.file
|
|
|
|
|
2021-05-15 05:46:39 +12:00
|
|
|
def getName(self):
|
|
|
|
parts = os.path.split(self.file.path)
|
|
|
|
name = parts[-1]
|
|
|
|
|
|
|
|
if name.endswith('.msk'):
|
|
|
|
name = name[:-4]
|
|
|
|
|
|
|
|
return name
|
|
|
|
|
2021-06-22 02:11:39 +12:00
|
|
|
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
|
|
|
|
|
2021-05-06 03:53:58 +12:00
|
|
|
def load(self):
|
|
|
|
try:
|
|
|
|
self.file.load()
|
2021-06-22 02:11:39 +12:00
|
|
|
except BadZipFile or FileNotFoundError:
|
2021-05-06 03:53:58 +12:00
|
|
|
return
|
|
|
|
|
2021-06-22 02:11:39 +12:00
|
|
|
self.version.load()
|
2021-05-09 11:15:14 +12:00
|
|
|
self.info.load()
|
2021-05-09 10:39:12 +12:00
|
|
|
self.summary.load()
|
2021-05-09 11:15:14 +12:00
|
|
|
self.labels.load()
|
2021-05-06 03:53:58 +12:00
|
|
|
self.statuses.load()
|
|
|
|
self.settings.load()
|
2021-05-09 11:51:14 +12:00
|
|
|
self.characters.load()
|
2021-05-06 03:53:58 +12:00
|
|
|
self.plots.load()
|
2021-05-10 03:07:30 +12:00
|
|
|
self.world.load()
|
2021-05-09 10:39:12 +12:00
|
|
|
self.outline.load()
|
2021-05-06 03:53:58 +12:00
|
|
|
self.revisions.load()
|
|
|
|
|
|
|
|
self.file.setZipFile(self.settings.isEnabled("saveToZip"))
|
|
|
|
|
|
|
|
def save(self):
|
2021-05-07 02:57:30 +12:00
|
|
|
saveToZip = self.settings.isEnabled("saveToZip")
|
2021-06-22 02:11:39 +12:00
|
|
|
|
2021-05-07 02:57:30 +12:00
|
|
|
self.file.setZipFile(saveToZip)
|
2021-06-22 02:11:39 +12:00
|
|
|
self.file.setVersion(self.version.value)
|
2021-05-07 02:57:30 +12:00
|
|
|
|
2021-06-22 02:11:39 +12:00
|
|
|
self.version.save()
|
2021-05-09 11:15:14 +12:00
|
|
|
self.info.save()
|
|
|
|
self.summary.save()
|
|
|
|
self.labels.save()
|
2021-05-06 03:53:58 +12:00
|
|
|
self.statuses.save()
|
|
|
|
self.settings.save()
|
2021-05-09 11:51:14 +12:00
|
|
|
self.characters.save()
|
2021-05-06 03:53:58 +12:00
|
|
|
self.plots.save()
|
2021-05-10 03:07:30 +12:00
|
|
|
self.world.save()
|
2021-05-09 10:39:12 +12:00
|
|
|
self.outline.save()
|
2021-05-06 03:53:58 +12:00
|
|
|
#self.revisions.save()
|
|
|
|
|
2021-05-07 02:57:30 +12:00
|
|
|
self.file.save(saveToZip)
|