OmniSVG's picture
Upload 80 files
c1ce505 verified
from .project import DeepSVGProject
from ..config import STATE_PATH
import pickle
import os
class ToolMode:
MOVE = 0
PEN = 1
PENCIL = 2
PLAY = 3
class DrawMode:
STILL = 0
DRAW = 1
HOLDING_DOWN = 2
class LoopMode:
NORMAL = 0
REVERSE = 1
PINGPONG = 2
class PlaybackMode:
NORMAL = 0
EASE = 1
class LoopOrientation:
FORWARD = 1
BACKWARD = -1
class State:
def __init__(self):
self.project_file = None
self.project = DeepSVGProject()
self.loop_mode = LoopMode.PINGPONG
self.loop_orientation = LoopOrientation.FORWARD
self.playback_mode = PlaybackMode.EASE
self.delay = 1 / 10.
self.modified = False
# Keep track of previously selected current_frame, separately from timeline's selected_frame attribute
self.current_frame = -1
self.current_path = None
self.draw_mode = DrawMode.STILL
self.clipboard = None
# UI references
self.main_widget = None
self.header = None
self.sidebar = None
self.draw_viewbox = None
self.timeline = None
def save_state(self):
with open(STATE_PATH, "wb") as f:
state_dict = {k: v for k, v in self.__dict__.items() if k in ["project_file"]}
pickle.dump(state_dict, f)
def load_state(self):
if os.path.exists(STATE_PATH):
with open(STATE_PATH, "rb") as f:
self.__dict__.update(pickle.load(f))
def load_project(self):
if self.project_file is not None:
self.project.load_project(self.project_file)
else:
self.project_file = self.project.filename