: 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
: 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() : 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 : 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 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 : 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 : 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 : 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 : 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 : canvas: Color: rgb: root.color Line: points: root.points width: 1.2 : size_hint: None, None size: draw_viewbox.size center: self.parent.center scale: 1.5 DrawViewbox: id: draw_viewbox size: 256, 256 canvas.before: Color: rgb: 1, 1, 1 Rectangle: pos: self.pos size: self.size : 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 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 : 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 : size_hint: None, None height: 0.8 * self.parent.height pos_hint: {'top': 0.9} width: self.texture_size[0] + 40 : size_hint_x: None width: 10 : 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