Spaces:
Paused
Paused
| <DeepSVGWidget>: | |
| orientation: "vertical" | |
| Header: | |
| id: header | |
| BoxLayout: | |
| orientation: "horizontal" | |
| Sidebar: | |
| id: sidebar_scroll | |
| StencilView: | |
| size_hint: 1, 1 | |
| canvas.before: | |
| Color: | |
| rgb: 0.89, 0.89, 0.89 | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| EditorView: | |
| id: editor | |
| TimeLine: | |
| id: timeline_scroll | |
| <Header>: | |
| orientation: "horizontal" | |
| size_hint_y: None | |
| height: 50 | |
| canvas.before: | |
| Color: | |
| rgb: 0, 0, 0 | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| HeaderIcon: | |
| source: "deepsvg/gui/res/hand.png" | |
| index: 0 | |
| HeaderIcon: | |
| source: "deepsvg/gui/res/pen.png" | |
| index: 1 | |
| HeaderIcon: | |
| source: "deepsvg/gui/res/pencil.png" | |
| index: 2 | |
| Padding | |
| HeaderButton: | |
| text: "Clear all" | |
| on_press: root.on_erase() | |
| Padding | |
| HeaderButton: | |
| text: "Done" | |
| on_press: root.on_done() | |
| Label | |
| Padding | |
| TitleWidget: | |
| text: root.title | |
| on_text: root.on_title(self.text) | |
| Padding | |
| Label | |
| HeaderButton: | |
| text: "Add frame" | |
| on_press: root.add_frame() | |
| Padding | |
| HeaderButton: | |
| text: "Interpolate" | |
| on_press: root.interpolate() | |
| Padding | |
| HeaderIcon: | |
| index: 3 | |
| source: "deepsvg/gui/res/pause.png" if root.is_playing else "deepsvg/gui/res/play.png" | |
| on_press: root.pause_animation() if root.is_playing else root.play_animation() | |
| <TitleWidget>: | |
| size_hint_x: None | |
| width: 150 | |
| multiline: False | |
| background_color: 0, 0, 0, 1 | |
| background_active: "" | |
| background_normal: "" | |
| halign: "center" | |
| valign: "middle" | |
| foreground_color: 1, 1, 1, 1 | |
| hint_text_color: 1, 1, 1, 1 | |
| cursor_color: 1, 1, 1, 1 | |
| <Sidebar>: | |
| do_scroll_x: False | |
| size_hint_x: None | |
| width: 225 | |
| canvas.before: | |
| Color: | |
| rgb: 1, 1, 1 | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| Color: | |
| rgb: 0.8, 0.8, 0.8 | |
| Line: | |
| width: 1 | |
| rectangle: self.x, self.y, self.width, self.height | |
| BoxLayout: | |
| id: sidebar | |
| orientation: "vertical" | |
| size_hint_y: None | |
| height: self.children[0].height * len(self.children) if self.children else 0 | |
| <PathLayerView> | |
| orientation: "horizontal" | |
| size_hint_y: None | |
| height: 40 | |
| canvas: | |
| Color: | |
| rgb: (0.08, 0.58, 0.97) if self.parent is not None and self.index == self.parent.parent.selected_path_idx else (1, 1, 1) | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| Color: | |
| rgb: 0.8, 0.8, 0.8 | |
| Line: | |
| width: 1 | |
| rectangle: self.x, self.y, self.width, self.height | |
| Label: | |
| color: 0, 0, 0, 1 | |
| size_hint_x: None | |
| text: str(root.index) | |
| width: self.texture_size[0] | |
| padding_x: 10 | |
| Label | |
| Image: | |
| size_hint_x: None | |
| source: root.source | |
| nocache: True | |
| Label | |
| UpButton | |
| DownButton | |
| Padding | |
| ReverseButton | |
| Label | |
| <UpButton>: | |
| size_hint: None, None | |
| height: 0.6 * self.parent.height | |
| pos_hint: {'top': 0.8} | |
| width: self.height | |
| background_normal: "" | |
| background_down: "" | |
| background_color: 0.3, 0.3, 0.3, 1 | |
| Image: | |
| source: "deepsvg/gui/res/up.png" | |
| center: self.parent.center | |
| <DownButton>: | |
| size_hint: None, None | |
| height: 0.6 * self.parent.height | |
| pos_hint: {'top': 0.8} | |
| width: self.height | |
| background_normal: "" | |
| background_down: "" | |
| background_color: 0.3, 0.3, 0.3, 1 | |
| Image: | |
| source: "deepsvg/gui/res/down.png" | |
| center: self.parent.center | |
| <ReverseButton>: | |
| size_hint: None, None | |
| height: 0.6 * self.parent.height | |
| pos_hint: {'top': 0.8} | |
| width: self.height | |
| background_normal: "" | |
| background_down: "" | |
| background_color: 0.3, 0.3, 0.3, 1 | |
| Image: | |
| source: "deepsvg/gui/res/switch.png" | |
| center: self.parent.center | |
| <BezierSegment>: | |
| canvas: | |
| Color: | |
| rgb: .769, .769, .769 | |
| Line: | |
| points: [*self.p1, *self.q1] if root.parent and root.parent.selected and self.is_curved else [] | |
| dash_length: 5 | |
| dash_offset: 5 | |
| Line: | |
| points: [*self.q2, *self.p2] if root.parent and root.parent.selected and self.is_curved else [] | |
| dash_length: 5 | |
| dash_offset: 5 | |
| Color: | |
| rgb: tuple(root.parent.color) if root.parent is not None else (.043, .769, 1) | |
| Line: | |
| bezier: ([*self.p1, *self.q1, *self.q2, *self.p2] if self.is_curved else [*self.p1, *self.p2]) if self.is_finished else [-10000, -10000] | |
| width: 1.1 | |
| Color: | |
| rgb: 1, .616, .043 | |
| Point: | |
| points: [*self.p1, *self.p2] if root.parent and root.parent.selected else [] | |
| pointsize: 1.5 | |
| Color: | |
| rgb: .769, .769, .769 | |
| Point: | |
| points: [*self.q1, *self.q2] if self.is_curved and root.parent and root.parent.selected else [] | |
| pointsize: 1.5 | |
| <BezierPath> | |
| <Sketch>: | |
| canvas: | |
| Color: | |
| rgb: root.color | |
| Line: | |
| points: root.points | |
| width: 1.2 | |
| <EditorView>: | |
| size_hint: None, None | |
| size: draw_viewbox.size | |
| center: self.parent.center | |
| scale: 1.5 | |
| DrawViewbox: | |
| id: draw_viewbox | |
| <DrawViewbox> | |
| size: 256, 256 | |
| canvas.before: | |
| Color: | |
| rgb: 1, 1, 1 | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| <TimeLine>: | |
| do_scroll_y: False | |
| size_hint_y: None | |
| height: 50 | |
| canvas.before: | |
| Color: | |
| rgb: 1, 1, 1 | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| Color: | |
| rgb: 0.8, 0.8, 0.8 | |
| Line: | |
| width: 1 | |
| rectangle: self.x, self.y, self.width, self.height | |
| BoxLayout: | |
| id: timeline | |
| orientation: "horizontal" | |
| size_hint_x: None | |
| width: 50 * len(self.children) if self.children else 0 | |
| <FrameView> | |
| size_hint_x: None | |
| width: self.height | |
| color: 0, 0, 0, 1 | |
| text: str(self.index) | |
| background_normal: "" | |
| background_down: "" | |
| background_color: (0.08, 0.58, 0.97, 1) if self.parent and self.index == self.parent.parent.selected_frame and self.keyframe else (0.48, 0.78, 1, 1) if self.parent and self.index == self.parent.parent.selected_frame and not self.keyframe else (1, 0.67, 0.19, 1) if self.keyframe else (1, 1, 1, 1) | |
| canvas: | |
| Color: | |
| rgb: 0.8, 0.8, 0.8 | |
| Line: | |
| width: 1 | |
| rectangle: self.x, self.y, self.width, self.height | |
| <HeaderIcon>: | |
| size_hint_x: None | |
| width: self.height | |
| canvas: | |
| Color: | |
| rgb: (0.08, 0.58, 0.97) if self.index == self.parent.selected_tool else (0, 0, 0) | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| Image: | |
| source: self.parent.source | |
| center: self.parent.center | |
| <HeaderButton>: | |
| size_hint: None, None | |
| height: 0.8 * self.parent.height | |
| pos_hint: {'top': 0.9} | |
| width: self.texture_size[0] + 40 | |
| <Padding>: | |
| size_hint_x: None | |
| width: 10 | |
| <FileChoosePopup>: | |
| title: "Import SVG file" | |
| size_hint: .9, .9 | |
| auto_dismiss: True | |
| BoxLayout: | |
| orientation: "vertical" | |
| FileChooserIconView: | |
| id: filechooser | |
| path: root.path | |
| BoxLayout: | |
| size_hint_x: 1 | |
| size_hint_y: None | |
| height: 50 | |
| pos_hint: {'center_x': .5, 'center_y': .5} | |
| spacing: 20 | |
| Button: | |
| text: "Cancel" | |
| on_release: root.dismiss() | |
| Button: | |
| text: "Load" | |
| on_release: root.load(filechooser.selection) | |
| id: ldbtn | |
| disabled: True if filechooser.selection==[] else False | |