Created
June 4, 2013 12:19
-
-
Save abhijangda/5705498 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #:kivy 1.0 | |
| <Label>: | |
| canvas: | |
| Color: | |
| rgba: self.disabled_color if self.disabled else (self.color if not self.markup else (1, 1, 1, 1)) | |
| Rectangle: | |
| texture: self.texture | |
| size: self.texture_size | |
| pos: int(self.center_x - self.texture_size[0] / 2.), int(self.center_y - self.texture_size[1] / 2.) | |
| <-Button,-ToggleButton>: | |
| state_image: self.background_normal if self.state == 'normal' else self.background_down | |
| disabled_image: self.background_disabled_normal if self.state == 'normal' else self.background_disabled_down | |
| canvas: | |
| Color: | |
| rgba: self.background_color | |
| BorderImage: | |
| border: self.border | |
| pos: self.pos | |
| size: self.size | |
| source: self.disabled_image if self.disabled else self.state_image | |
| Color: | |
| rgba: self.disabled_color if self.disabled else self.color | |
| Rectangle: | |
| texture: self.texture | |
| size: self.texture_size | |
| pos: int(self.center_x - self.texture_size[0] / 2.), int(self.center_y - self.texture_size[1] / 2.) | |
| <BubbleContent> | |
| opacity: .7 if self.disabled else 1 | |
| rows: 1 | |
| canvas: | |
| Color: | |
| rgba: self.parent.background_color if self.parent else (1, 1, 1, 1) | |
| BorderImage: | |
| border: self.parent.border if self.parent else (16, 16, 16, 16) | |
| texture: root.parent._bk_img.texture if root.parent else None | |
| size: self.size | |
| pos: self.pos | |
| <BubbleButton>: | |
| background_normal: 'atlas://data/images/defaulttheme/bubble_btn' | |
| background_down: 'atlas://data/images/defaulttheme/bubble_btn_pressed' | |
| background_disabled_normal: 'atlas://data/images/defaulttheme/bubble_btn' | |
| background_disabled_down: 'atlas://data/images/defaulttheme/bubble_btn_pressed' | |
| border: (0, 0, 0, 0) | |
| <Slider>: | |
| canvas: | |
| Color: | |
| rgb: 1, 1, 1 | |
| BorderImage: | |
| border: (0, 18, 0, 18) if self.orientation == 'horizontal' else (18, 0, 18, 0) | |
| pos: (self.x + self.padding, self.center_y - sp(18)) if self.orientation == 'horizontal' else (self.center_x - sp(18), self.y + self.padding) | |
| size: (self.width - self.padding * 2, sp(37)) if self.orientation == 'horizontal' else (sp(37), self.height - self.padding * 2) | |
| source: 'atlas://data/images/defaulttheme/slider{}_background{}'.format(self.orientation[0], '_disabled' if self.disabled else '') | |
| Rectangle: | |
| pos: (self.value_pos[0] - sp(16), self.center_y - sp(17)) if self.orientation == 'horizontal' else (self.center_x - (16), self.value_pos[1] - sp(16)) | |
| size: (sp(32), sp(32)) | |
| source: 'atlas://data/images/defaulttheme/slider_cursor{}'.format('_disabled' if self.disabled else '') | |
| <ProgressBar>: | |
| canvas: | |
| Color: | |
| rgb: 1, 1, 1 | |
| BorderImage: | |
| border: (12, 12, 12, 12) | |
| pos: self.x, self.center_y - 12 | |
| size: self.width, 24 | |
| source: 'atlas://data/images/defaulttheme/progressbar_background' | |
| BorderImage: | |
| border: [int(min(self.width * (self.value / float(self.max)), 12))] * 4 | |
| pos: self.x, self.center_y - 12 | |
| size: self.width * (self.value / float(self.max)), 24 | |
| source: 'atlas://data/images/defaulttheme/progressbar' | |
| <SplitterStrip>: | |
| border: self.parent.border if self.parent else (3, 3, 3, 3) | |
| horizontal: '_h' if self.parent and self.parent.sizable_from[0] in ('t', 'b') else '' | |
| background_normal: 'atlas://data/images/defaulttheme/splitter{}{}'.format('_disabled' if self.disabled else '', self.horizontal) | |
| background_down: 'atlas://data/images/defaulttheme/splitter_down{}{}'.format('_disabled' if self.disabled else '', self.horizontal) | |
| Image: | |
| pos: root.pos | |
| size: root.size | |
| allow_stretch: True | |
| source: 'atlas://data/images/defaulttheme/splitter_grip' + root.horizontal | |
| <Scatter>: | |
| canvas.before: | |
| PushMatrix | |
| MatrixInstruction: | |
| matrix: self.transform | |
| canvas.after: | |
| PopMatrix | |
| <RelativeLayout>: | |
| canvas.before: | |
| PushMatrix | |
| Translate: | |
| xy: self.pos | |
| canvas.after: | |
| PopMatrix | |
| <Image,AsyncImage>: | |
| canvas: | |
| Color: | |
| rgba: self.color | |
| Rectangle: | |
| texture: self.texture | |
| size: self.norm_image_size | |
| pos: self.center_x - self.norm_image_size[0] / 2., self.center_y - self.norm_image_size[1] / 2. | |
| <TabbedPanelContent> | |
| rows: 1 | |
| padding: 3 | |
| canvas: | |
| Color: | |
| rgba: self.parent.background_color if self.parent else (1, 1, 1, 1) | |
| BorderImage: | |
| border: self.parent.border if self.parent else (16, 16, 16, 16) | |
| source: (root.parent.background_disabled_image if self.disabled else root.parent.background_image) if root.parent else None | |
| size: self.size | |
| pos: self.pos | |
| <TabbedPanelStrip> | |
| rows: 1 | |
| <TabbedPanelHeader>: | |
| halign: 'center' | |
| valign: 'middle' | |
| background_normal: 'atlas://data/images/defaulttheme/tab_btn' | |
| background_disabled_normal: 'atlas://data/images/defaulttheme/tab_btn_disabled' | |
| background_down: 'atlas://data/images/defaulttheme/tab_btn_pressed' | |
| background_disabled_down: 'atlas://data/images/defaulttheme/tab_btn_pressed' | |
| border: (8, 8, 8, 8) | |
| font_size: '15sp' | |
| <TextInput>: | |
| canvas.before: | |
| Color: | |
| rgba: self.background_color | |
| BorderImage: | |
| border: self.border | |
| pos: self.pos | |
| size: self.size | |
| source: (self.background_disabled_active if self.disabled else self.background_active) if self.focus else (self.background_disabled_normal if self.disabled else self.background_normal) | |
| Color: | |
| rgba: (1, 0, 0, 1 if self.focus and not self.cursor_blink else 0) | |
| Rectangle: | |
| pos: map(int, self.cursor_pos) | |
| size: 1, -self.line_height | |
| Color: | |
| rgba: self.disabled_foreground_color if self.disabled else (self.hint_text_color if not self.text and not self.focus else self.foreground_color) | |
| <TextInputCutCopyPaste>: | |
| but_cut: cut | |
| but_copy: copy | |
| but_paste: paste | |
| but_selectall: selectall | |
| size_hint: None, None | |
| size: '150sp', '50sp' | |
| BubbleButton: | |
| id: cut | |
| text: 'Cut' | |
| on_release: root.do('cut') | |
| BubbleButton: | |
| id: copy | |
| text: 'Copy' | |
| on_release: root.do('copy') | |
| BubbleButton: | |
| id: paste | |
| text: 'Paste' | |
| on_release: root.do('paste') | |
| BubbleButton: | |
| id: selectall | |
| text: 'Select All' | |
| on_release: root.do('selectall') | |
| <TreeViewNode>: | |
| canvas.before: | |
| Color: | |
| rgba: self.color_selected if self.is_selected else self.odd_color if self.odd else self.even_color | |
| Rectangle: | |
| pos: [self.parent.x, self.y] if self.parent else [0, 0] | |
| size: [self.parent.width, self.height] if self.parent else [1, 1] | |
| Color: | |
| rgba: 1, 1, 1, int(not self.is_leaf) | |
| Rectangle: | |
| source: 'atlas://data/images/defaulttheme/tree_%s' % ('opened' if self.is_open else 'closed') | |
| size: 16, 16 | |
| pos: self.x - 20, self.center_y - 8 | |
| canvas.after: | |
| Color: | |
| rgba: .5, .5, .5, .2 | |
| Line: | |
| points: [self.parent.x, self.y, self.parent.right, self.y] if self.parent else [] | |
| <TreeViewLabel>: | |
| width: self.texture_size[0] | |
| height: max(self.texture_size[1] + dp(10), dp(24)) | |
| text_size: self.width, None | |
| <StencilView>: | |
| canvas.before: | |
| StencilPush | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| StencilUse | |
| canvas.after: | |
| StencilUnUse | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| StencilPop | |
| <FileChooserListView>: | |
| on_entry_added: treeview.add_node(args[1]) | |
| on_entries_cleared: treeview.root.nodes = [] | |
| on_subentry_to_entry: not args[2].locked and treeview.add_node(args[1], args[2]) | |
| on_remove_subentry: args[2].nodes = [] | |
| BoxLayout: | |
| pos: root.pos | |
| size: root.size | |
| size_hint: None, None | |
| orientation: 'vertical' | |
| BoxLayout: | |
| size_hint_y: None | |
| height: 30 | |
| orientation: 'horizontal' | |
| Widget: | |
| # Just for spacing | |
| width: 10 | |
| size_hint_x: None | |
| Label: | |
| text: 'Name' | |
| text_size: self.size | |
| halign: 'left' | |
| bold: True | |
| font_name: 'data/fonts/DroidSans-Bold.ttf' | |
| Label: | |
| text: 'Size' | |
| text_size: self.size | |
| size_hint_x: None | |
| halign: 'right' | |
| bold: True | |
| font_name: 'data/fonts/DroidSans-Bold.ttf' | |
| Widget: | |
| # Just for spacing | |
| width: 10 | |
| size_hint_x: None | |
| ScrollView: | |
| id: scrollview | |
| do_scroll_x: False | |
| Scatter: | |
| do_rotation: False | |
| do_scale: False | |
| do_translation: False | |
| size: treeview.size | |
| size_hint_y: None | |
| TreeView: | |
| id: treeview | |
| hide_root: True | |
| size_hint_y: None | |
| width: scrollview.width | |
| height: self.minimum_height | |
| on_node_expand: root.entry_subselect(args[1]) | |
| on_node_collapse: root.close_subselection(args[1]) | |
| [FileListEntry@FloatLayout+TreeViewNode]: | |
| locked: False | |
| entries: [] | |
| path: ctx.path | |
| # FIXME: is_selected is actually a read_only treeview property. In this | |
| # case, however, we're doing this because treeview only has single-selection | |
| # hardcoded in it. The fix to this would be to update treeview to allow | |
| # multiple selection. | |
| is_selected: self.path in ctx.controller().selection | |
| orientation: 'horizontal' | |
| size_hint_y: None | |
| height: '24sp' | |
| # Don't allow expansion of the ../ node | |
| is_leaf: not ctx.isdir or ctx.name.endswith('..' + ctx.sep) or self.locked | |
| on_touch_down: self.collide_point(*args[1].pos) and ctx.controller().entry_touched(self, args[1]) | |
| on_touch_up: self.collide_point(*args[1].pos) and ctx.controller().entry_released(self, args[1]) | |
| BoxLayout: | |
| pos: root.pos | |
| Label: | |
| id: filename | |
| text_size: self.width, None | |
| halign: 'left' | |
| shorten: True | |
| text: unicode(ctx.name) | |
| Label: | |
| text_size: self.width, None | |
| size_hint_x: None | |
| halign: 'right' | |
| text: unicode(ctx.get_nice_size()) | |
| <FileChooserIconView>: | |
| on_entry_added: stacklayout.add_widget(args[1]) | |
| on_entries_cleared: stacklayout.clear_widgets() | |
| ScrollView: | |
| id: scrollview | |
| pos: root.pos | |
| size: root.size | |
| size_hint: None, None | |
| do_scroll_x: False | |
| Scatter: | |
| do_rotation: False | |
| do_scale: False | |
| do_translation: False | |
| size_hint_y: None | |
| height: stacklayout.height | |
| StackLayout: | |
| id: stacklayout | |
| width: scrollview.width | |
| size_hint_y: None | |
| height: self.minimum_height | |
| spacing: '10dp' | |
| padding: '10dp' | |
| [FileIconEntry@Widget]: | |
| locked: False | |
| path: ctx.path | |
| selected: self.path in ctx.controller().selection | |
| size_hint: None, None | |
| on_touch_down: self.collide_point(*args[1].pos) and ctx.controller().entry_touched(self, args[1]) | |
| on_touch_up: self.collide_point(*args[1].pos) and ctx.controller().entry_released(self, args[1]) | |
| size: '100dp', '100dp' | |
| canvas: | |
| Color: | |
| rgba: 1, 1, 1, 1 if self.selected else 0 | |
| BorderImage: | |
| border: 8, 8, 8, 8 | |
| pos: root.pos | |
| size: root.size | |
| source: 'atlas://data/images/defaulttheme/filechooser_selected' | |
| Image: | |
| size: '48dp', '48dp' | |
| source: 'atlas://data/images/defaulttheme/filechooser_%s' % ('folder' if ctx.isdir else 'file') | |
| pos: root.x + dp(24), root.y + dp(40) | |
| Label: | |
| text: unicode(ctx.name) | |
| text_size: (root.width, self.height) | |
| halign: 'center' | |
| shorten: True | |
| size: '100dp', '16dp' | |
| pos: root.x, root.y + dp(16) | |
| Label: | |
| text: unicode(ctx.get_nice_size()) | |
| font_size: '11sp' | |
| color: .8, .8, .8, 1 | |
| size: '100dp', '16sp' | |
| pos: root.pos | |
| halign: 'center' | |
| <FileChooserProgress>: | |
| pos_hint: {'x': 0, 'y': 0} | |
| canvas: | |
| Color: | |
| rgba: 0, 0, 0, .8 | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| Label: | |
| pos_hint: {'x': .2, 'y': .6} | |
| size_hint: .6, .2 | |
| text: 'Opening %s' % root.path | |
| FloatLayout: | |
| pos_hint: {'x': .2, 'y': .4} | |
| size_hint: .6, .2 | |
| ProgressBar: | |
| id: pb | |
| pos_hint: {'x': 0, 'center_y': .5} | |
| max: root.total | |
| value: root.index | |
| Label: | |
| pos_hint: {'x': 0} | |
| text: '%d / %d' % (root.index, root.total) | |
| size_hint_y: None | |
| height: self.texture_size[1] | |
| y: pb.center_y - self.height - 8 | |
| font_size: '13sp' | |
| color: (.8, .8, .8, .8) | |
| AnchorLayout: | |
| pos_hint: {'x': .2, 'y': .2} | |
| size_hint: .6, .2 | |
| Button: | |
| text: 'Cancel' | |
| size_hint: None, None | |
| size: 150, 44 | |
| on_release: root.cancel() | |
| # Switch widget | |
| <Switch>: | |
| active_norm_pos: max(0., min(1., (int(self.active) + self.touch_distance / sp(41)))) | |
| canvas: | |
| Color: | |
| rgb: 1, 1, 1 | |
| Rectangle: | |
| source: 'atlas://data/images/defaulttheme/switch-background{}'.format('_disabled' if self.disabled else '') | |
| size: sp(83), sp(32) | |
| pos: int(self.center_x - sp(41)), int(self.center_y - sp(16)) | |
| Rectangle: | |
| source: 'atlas://data/images/defaulttheme/switch-button{}'.format('_disabled' if self.disabled else '') | |
| size: sp(43), sp(32) | |
| pos: int(self.center_x - sp(41) + self.active_norm_pos * sp(41)), int(self.center_y - sp(16)) | |
| # ModalView widget | |
| <ModalView>: | |
| canvas: | |
| Color: | |
| rgba: root.background_color[:3] + [root.background_color[-1] * self._anim_alpha] | |
| Rectangle: | |
| size: self._window.size if self._window else (0, 0) | |
| Color: | |
| rgb: 1, 1, 1 | |
| BorderImage: | |
| source: root.background | |
| border: root.border | |
| pos: self.pos | |
| size: self.size | |
| # Popup widget | |
| <Popup>: | |
| _container: container | |
| GridLayout: | |
| padding: 12 | |
| cols: 1 | |
| size_hint: None, None | |
| pos: root.pos | |
| size: root.size | |
| Label: | |
| text: root.title | |
| size_hint_y: None | |
| height: self.texture_size[1] + 16 | |
| text_size: self.width - 16, None | |
| font_size: root.title_size | |
| Widget: | |
| size_hint_y: None | |
| height: 4 | |
| canvas: | |
| Color: | |
| rgba: root.separator_color | |
| Rectangle: | |
| pos: self.x, self.y + root.separator_height / 2. | |
| size: self.width, root.separator_height | |
| BoxLayout: | |
| id: container | |
| #============================================================================== | |
| # ActionBar Widget | |
| #============================================================================== | |
| <ActionBar>: | |
| padding: '2sp' | |
| canvas: | |
| Color: | |
| rgba: self.background_color | |
| BorderImage: | |
| pos: self.pos | |
| size: self.size | |
| source: self.background_image | |
| <ActionView>: | |
| orientation: 'horizontal' | |
| padding: '2sp' | |
| canvas: | |
| Color: | |
| rgba: self.background_color | |
| BorderImage: | |
| pos: self.pos | |
| size: self.size | |
| source: self.background_image | |
| <ActionSeparator>: | |
| size_hint_x: None | |
| minimum_width: '2sp' | |
| width: self.minimum_width | |
| canvas: | |
| Rectangle: | |
| pos: self.x, self.y+sp(5) | |
| size: self.width, self.height-sp(10) | |
| source: self.background_image | |
| <ActionGroup>: | |
| border: (30, 30, 3, 3) | |
| background_normal: 'atlas://data/images/defaulttheme/action_group' | |
| background_down: 'atlas://data/images/defaulttheme/action_group_down' | |
| background_disabled_normal: 'atlas://data/images/defaulttheme/action_group_disabled' | |
| ActionSeparator: | |
| pos: root.pos | |
| size: root.separator_width, root.height | |
| opacity: 1 if root.use_separator else 0 | |
| background_image: root.separator_image if root.use_separator else 'atlas://data/images/defaulttheme/action_view' | |
| <ActionButton>: | |
| background_normal: 'atlas://data/images/defaulttheme/action_bar' if self.inside_group else 'atlas://data/images/defaulttheme/action_item' | |
| <ActionToggleButton>: | |
| background_normal: 'atlas://data/images/defaulttheme/action_bar' if self.inside_group else 'atlas://data/images/defaulttheme/action_item' | |
| <ActionCheck>: | |
| background_normal: 'atlas://data/images/defaulttheme/action_bar' if self.inside_group else 'atlas://data/images/defaulttheme/action_item' | |
| <ActionPrevious>: | |
| size_hint_x: None | |
| minimum_width: '100sp' | |
| width: self.minimum_width | |
| important: True | |
| BoxLayout: | |
| orientation: 'horizontal' | |
| pos: root.pos | |
| size: root.size | |
| padding: '2dp' | |
| Image: | |
| source: root.previous_image | |
| allow_stretch: True | |
| size_hint_x: None | |
| width: self.texture_size[0] if self.texture else 20 | |
| Image: | |
| source: root.app_icon | |
| allow_stretch: True | |
| size_hint_x: None | |
| width: self.texture_size[0] if self.texture else 20 | |
| Label: | |
| text: root.title | |
| text_size: self.size | |
| shorten: True | |
| halign: 'right' | |
| valign: 'middle' | |
| <ActionOverflow>: | |
| border: 3, 3, 3, 3 | |
| background_normal: 'atlas://data/images/defaulttheme/action_item' | |
| background_down: 'atlas://data/images/defaulttheme/action_item_down' | |
| background_disabled_normal: 'atlas://data/images/defaulttheme/button_disabled' | |
| size_hint_x: None | |
| minimum_width: '48sp' | |
| width: self.texture_size[0] if self.texture else self.minimum_width | |
| canvas.after: | |
| Rectangle: | |
| pos: root.center_x - sp(24), root.center_y - sp(24) | |
| size: sp(48), sp(48) | |
| source: root.overflow_image | |
| <ActionDropDown>: | |
| auto_width: False | |
| <ContextualActionView>: | |
| # ============================================================================= | |
| # Accordion widget | |
| # ============================================================================= | |
| [AccordionItemTitle@Label]: | |
| text: ctx.title | |
| normal_background: ctx.item.background_normal if ctx.item.collapse else ctx.item.background_selected | |
| disabled_background: ctx.item.background_disabled_normal if ctx.item.collapse else ctx.item.background_disabled_selected | |
| canvas.before: | |
| Color: | |
| rgba: self.disabled_color if self.disabled else self.color | |
| BorderImage: | |
| source: self.disabled_background if self.disabled else self.normal_background | |
| pos: self.pos | |
| size: self.size | |
| PushMatrix | |
| Translate: | |
| xy: self.center_x, self.center_y | |
| Rotate: | |
| angle: 90 if ctx.item.orientation == 'horizontal' else 0 | |
| axis: 0, 0, 1 | |
| Translate: | |
| xy: -self.center_x, -self.center_y | |
| canvas.after: | |
| PopMatrix | |
| <AccordionItem>: | |
| container: container | |
| container_title: container_title | |
| BoxLayout: | |
| orientation: root.orientation | |
| pos: root.pos | |
| BoxLayout: | |
| size_hint_x: None if root.orientation == 'horizontal' else 1 | |
| size_hint_y: None if root.orientation == 'vertical' else 1 | |
| width: root.min_space if root.orientation == 'horizontal' else 100 | |
| height: root.min_space if root.orientation == 'vertical' else 100 | |
| id: container_title | |
| StencilView: | |
| id: sv | |
| BoxLayout: | |
| id: container | |
| pos: sv.pos | |
| size: root.content_size | |
| # ============================================================================= | |
| # Settings | |
| # ============================================================================= | |
| <SettingSpacer>: | |
| size_hint_y: None | |
| height: 5 | |
| canvas: | |
| Color: | |
| rgb: .2, .2, .2 | |
| Rectangle: | |
| pos: self.x, self.center_y | |
| size: self.width, 1 | |
| <SettingItem>: | |
| size_hint: .25, None | |
| height: labellayout.texture_size[1] + dp(10) | |
| content: content | |
| canvas: | |
| Color: | |
| rgba: 47 / 255., 167 / 255., 212 / 255., self.selected_alpha | |
| Rectangle: | |
| pos: self.x, self.y + 1 | |
| size: self.size | |
| Color: | |
| rgb: .2, .2, .2 | |
| Rectangle: | |
| pos: self.x, self.y - 2 | |
| size: self.width, 1 | |
| BoxLayout: | |
| pos: root.pos | |
| Label: | |
| size_hint_x: .66 | |
| id: labellayout | |
| markup: True | |
| text: u'{0}\n[size=13sp][color=999999]{1}[/color][/size]'.format(root.title or '', root.desc or '') | |
| font_size: '15sp' | |
| text_size: self.width - 32, None | |
| BoxLayout: | |
| id: content | |
| size_hint_x: .33 | |
| <SettingBoolean>: | |
| Switch: | |
| text: 'Boolean' | |
| pos: root.pos | |
| active: bool(root.values.index(root.value)) if root.value in root.values else False | |
| on_active: root.value = root.values[int(args[1])] | |
| <SettingString>: | |
| Label: | |
| text: root.value or '' | |
| pos: root.pos | |
| font_size: '15sp' | |
| <SettingPath>: | |
| Label: | |
| text: root.value or '' | |
| pos: root.pos | |
| font_size: '15sp' | |
| <SettingOptions>: | |
| Label: | |
| text: root.value or '' | |
| pos: root.pos | |
| font_size: '15sp' | |
| <SettingTitle>: | |
| text_size: self.width - 32, None | |
| size_hint_y: None | |
| height: max(dp(20), self.texture_size[1] + dp(20)) | |
| color: (.9, .9, .9, 1) | |
| font_size: '15sp' | |
| canvas: | |
| Color: | |
| rgba: .15, .15, .15, .5 | |
| Rectangle: | |
| pos: self.x, self.y + 2 | |
| size: self.width, self.height - 2 | |
| Color: | |
| rgb: .2, .2, .2 | |
| Rectangle: | |
| pos: self.x, self.y - 2 | |
| size: self.width, 1 | |
| <SettingSidebarLabel>: | |
| size_hint: 1, None | |
| text_size: self.width - 32, None | |
| height: self.texture_size[1] + dp(20) | |
| font_size: '15sp' | |
| canvas.before: | |
| Color: | |
| rgba: 47 / 255., 167 / 255., 212 / 255., int(self.selected) | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| <SettingsPanel>: | |
| spacing: 5 | |
| padding: 5 | |
| size_hint_y: None | |
| height: self.minimum_height | |
| Label: | |
| size_hint_y: None | |
| text: root.title | |
| text_size: self.width - 32, None | |
| height: max(50, self.texture_size[1] + 20) | |
| color: (.5, .5, .5, 1) | |
| font_size: '15sp' | |
| canvas.after: | |
| Color: | |
| rgb: .2, .2, .2 | |
| Rectangle: | |
| pos: self.x, self.y - 2 | |
| size: self.width, 1 | |
| <Settings>: | |
| content: content | |
| menu: menu | |
| canvas: | |
| Color: | |
| rgb: 0, 0, 0 | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| FloatLayout: | |
| size_hint_x: None | |
| width: '200dp' | |
| GridLayout: | |
| pos: root.pos | |
| cols: 1 | |
| id: menu | |
| orientation: 'vertical' | |
| padding: 5 | |
| canvas.after: | |
| Color: | |
| rgb: .2, .2, .2 | |
| Rectangle: | |
| pos: self.right - 1, self.y | |
| size: 1, self.height | |
| Button: | |
| text: 'Close' | |
| size_hint: None, None | |
| width: '180dp' | |
| height: max(50, self.texture_size[1] + dp(20)) | |
| pos: root.x + dp(10), root.y + dp(10) | |
| on_release: root.dispatch('on_close') | |
| font_size: '15sp' | |
| ScrollView: | |
| do_scroll_x: False | |
| id: sv | |
| Scatter: | |
| size_hint: None, None | |
| size: content.size | |
| do_translation: False | |
| do_rotation: False | |
| do_scale: False | |
| StackLayout: | |
| id: content | |
| height: self.minimum_height | |
| width: sv.width | |
| <ScrollView>: | |
| canvas.after: | |
| Color: | |
| rgba: self.bar_color[:3] + [self.bar_color[3] * self.bar_alpha if self.do_scroll_y else 0] | |
| Rectangle: | |
| pos: self.right - self.bar_width - self.bar_margin, self.y + self.height * self.vbar[0] | |
| size: self.bar_width, self.height * self.vbar[1] | |
| Color: | |
| rgba: self.bar_color[:3] + [self.bar_color[3] * self.bar_alpha if self.do_scroll_x else 0] | |
| Rectangle: | |
| pos: self.x + self.width * self.hbar[0], self.y + self.bar_margin | |
| size: self.width * self.hbar[1], self.bar_width | |
| # ============================================================================= | |
| # Video player | |
| # ============================================================================= | |
| <VideoPlayerPreview>: | |
| pos_hint: {'x': 0, 'y': 0} | |
| Image: | |
| source: root.source | |
| color: (.5, .5, .5, 1) | |
| pos_hint: {'x': 0, 'y': 0} | |
| Image: | |
| source: 'atlas://data/images/defaulttheme/player-play-overlay' if not root.click_done else 'data/images/image-loading.gif' | |
| pos_hint: {'x': 0, 'y': 0} | |
| <VideoPlayerAnnotation>: | |
| canvas.before: | |
| Color: | |
| rgba: self.annotation['bgcolor'] if 'bgcolor' in self.annotation else (0, 0, 0, 0.8) | |
| BorderImage: | |
| pos: self.pos | |
| size: self.size | |
| source: self.annotation['bgsource'] if 'bgsource' in self.annotation else None | |
| border: self.annotation['border'] if 'border' in self.annotation else (0, 0, 0, 0) | |
| size_hint: self.annotation['size_hint'] if 'size_hint' in self.annotation else (None, None) | |
| size: self.annotation['size'] if 'size' in self.annotation else (self.texture_size[0] + 20, self.texture_size[1] + 20) | |
| pos_hint: self.annotation['pos_hint'] if 'pos_hint' in self.annotation else {'center_x': .5, 'y': .05} | |
| <VideoPlayer>: | |
| container: container | |
| cols: 1 | |
| FloatLayout: | |
| cols: 1 | |
| id: container | |
| GridLayout: | |
| rows: 1 | |
| size_hint_y: None | |
| height: 44 | |
| VideoPlayerStop: | |
| size_hint_x: None | |
| video: root | |
| width: 44 | |
| source: root.image_stop | |
| VideoPlayerPlayPause: | |
| size_hint_x: None | |
| video: root | |
| width: 44 | |
| source: root.image_pause if root.state == 'play' else root.image_play | |
| VideoPlayerVolume: | |
| video: root | |
| size_hint_x: None | |
| width: 44 | |
| source: root.image_volumehigh if root.volume > 0.8 else (root.image_volumemedium if root.volume > 0.4 else (root.image_volumelow if root.volume > 0 else root.image_volumemuted)) | |
| Widget: | |
| size_hint_x: None | |
| width: 5 | |
| VideoPlayerProgressBar: | |
| video: root | |
| max: max(root.duration, root.position, 1) | |
| value: root.position | |
| Widget: | |
| size_hint_x: None | |
| width: 10 | |
| # ============================================================================= | |
| # Checkbox | |
| # ============================================================================= | |
| <CheckBox>: | |
| canvas: | |
| Color: | |
| rgb: 1, 1, 1 | |
| Rectangle: | |
| source: 'atlas://data/images/defaulttheme/checkbox%s%s_%s' % (('_radio' if self.group else ''), ('_disabled' if self.disabled else ''), ('on' if self.active else 'off')) | |
| size: sp(32), sp(32) | |
| pos: int(self.center_x - sp(16)), int(self.center_y - sp(16)) | |
| # ============================================================================= | |
| # Relative Layout | |
| # ============================================================================= | |
| <RelativeLayout>: | |
| do_translation: False | |
| do_rotation: False | |
| do_scale: False | |
| auto_bring_to_front: False | |
| # ============================================================================= | |
| # Screen Manager | |
| # ============================================================================= | |
| <ScreenManager>: | |
| canvas.before: | |
| StencilPush | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| StencilUse | |
| canvas.after: | |
| StencilUnUse | |
| Rectangle: | |
| pos: self.pos | |
| size: self.size | |
| StencilPop | |
| # ============================================================================= | |
| # Color Picker | |
| # ============================================================================= | |
| <ColorPicker_Input@TextInput> | |
| multiline: False | |
| mroot: None | |
| padding: sp(5) | |
| border: 4, 9, 4, 9 | |
| <ColorPicker_Label@Label> | |
| mroot: None | |
| size_hint_x: None | |
| width: '30sp' | |
| text_size: self.size | |
| halign: "center" | |
| valign: "middle" | |
| <ColorPicker_Selector@BoxLayout> | |
| foreground_color: None | |
| text: '' | |
| mroot: None | |
| mode: 'rgb' | |
| color: 0 | |
| spacing: '2sp' | |
| ColorPicker_Label: | |
| text: root.text | |
| mroot: root.mroot | |
| color: root.foreground_color or (1, 1, 1, 1) | |
| AnchorLayout: | |
| size_hint_x: None | |
| width: '50sp' | |
| ColorPicker_Input: | |
| mroot: root.mroot | |
| text: str(int(sldr.value)) | |
| size_hint_y: None | |
| height: '28sp' | |
| on_text: | |
| root.mroot._trigger_update_clr(root.mode, root.clr_idx, args[1]) | |
| Slider: | |
| id: sldr | |
| size_hint: 1, .25 | |
| pos_hint: {'center_y':.5} | |
| range: 0, 255 | |
| value: root.color * 255 | |
| on_value: | |
| root.mroot._trigger_update_clr(root.mode, root.clr_idx, args[1]) | |
| <ColorPicker>: | |
| foreground_color: (1, 1, 1, 1) if self.hsv[2] * wheel.a < .5 else (0, 0, 0, 1) | |
| wheel: wheel | |
| BoxLayout: | |
| orientation: 'vertical' if root.width < root.height else 'horizontal' | |
| spacing: '5sp' | |
| StackLayout: | |
| orientation: 'tb-lr' | |
| size_hint_y: None if root.width < root.height else 1 | |
| height: sp(33) * 4 if root.width < root.height else self.height | |
| canvas: | |
| Color: | |
| rgba: root.color | |
| Rectangle: | |
| size: self.size | |
| pos: self.pos | |
| ColorPicker_Selector: | |
| mroot: root | |
| text: 'R' | |
| clr_idx: 0 | |
| color: wheel.r | |
| foreground_color: root.foreground_color | |
| size_hint_y: None if root.width < root.height else 0.125 | |
| size_hint_x: .5 if root.width < root.height else 1 | |
| height: '33sp' if root.width < root.height else self.height | |
| ColorPicker_Selector: | |
| mroot: root | |
| text: 'G' | |
| clr_idx: 1 | |
| color: wheel.g | |
| foreground_color: root.foreground_color | |
| size_hint_y: None if root.width < root.height else 0.125 | |
| size_hint_x: .5 if root.width < root.height else 1 | |
| height: '33sp' if root.width < root.height else self.height | |
| ColorPicker_Selector: | |
| mroot: root | |
| text: 'B' | |
| clr_idx: 2 | |
| color: wheel.b | |
| foreground_color: root.foreground_color | |
| size_hint_y: None if root.width < root.height else 0.125 | |
| size_hint_x: .5 if root.width < root.height else 1 | |
| height: '33sp' if root.width < root.height else self.height | |
| ColorPicker_Selector: | |
| mroot: root | |
| text: 'A' | |
| clr_idx: 3 | |
| color: root.color[3] | |
| foreground_color: root.foreground_color | |
| size_hint_y: None if root.width < root.height else 0.125 | |
| size_hint_x: .5 if root.width < root.height else 1 | |
| height: '33sp' if root.width < root.height else self.height | |
| ColorPicker_Selector: | |
| mroot: root | |
| mode: 'hsv' | |
| text: 'H' | |
| clr_idx: 0 | |
| color: root.hsv[0] | |
| foreground_color: root.foreground_color | |
| size_hint_y: None if root.width < root.height else 0.125 | |
| size_hint_x: .5 if root.width < root.height else 1 | |
| height: '33sp' if root.width < root.height else self.height | |
| ColorPicker_Selector: | |
| mroot: root | |
| mode: 'hsv' | |
| text: 'S' | |
| clr_idx: 1 | |
| color: root.hsv[1] | |
| foreground_color: root.foreground_color | |
| size_hint_y: None if root.width < root.height else 0.125 | |
| size_hint_x: .5 if root.width < root.height else 1 | |
| height: '33sp' if root.width < root.height else self.height | |
| ColorPicker_Selector: | |
| mroot: root | |
| mode: 'hsv' | |
| text: 'V' | |
| clr_idx: 2 | |
| color: root.hsv[2] | |
| foreground_color: root.foreground_color | |
| size_hint_y: None if root.width < root.height else 0.125 | |
| size_hint_x: .5 if root.width < root.height else 1 | |
| height: '33sp' if root.width < root.height else self.height | |
| BoxLayout: | |
| size_hint_y: None if root.width < root.height else 0.125 | |
| size_hint_x: .5 if root.width < root.height else 1 | |
| height: '33sp' if root.width < root.height else self.height | |
| spacing: '2sp' | |
| ColorPicker_Label: | |
| mroot: root | |
| text: 'X' | |
| color: root.foreground_color | |
| AnchorLayout: | |
| ColorPicker_Input: | |
| size_hint_y: None | |
| height: '28sp' | |
| mroot: root | |
| text: str(root.hex_color) | |
| on_text: root._trigger_update_hex(args[1]) | |
| ColorWheel: | |
| id: wheel | |
| _origin: (self.center_x, self.center_y) | |
| _radius: 0.45 * min(self.size) | |
| color: root.color | |
| on_color: root.color[:3] = args[1][:3] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment