Spaces:
Paused
Paused
| 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 | |