class LabelIconButton(FadeableWidget, ButtonBehavior, AnchorLayout): title_font = StringProperty('resource/fonts/ASL_regular.ttf') title_font_size = NumericProperty(sp(20)) tile_color = ObjectProperty(ColorScheme.get_dark_accent()) icon_color = ObjectProperty(ColorScheme.get_accent()) title_color = ObjectProperty(ColorScheme.get_accent()) icon = StringProperty('') icon_size = NumericProperty(sp(25)) title = StringProperty('') def __init__(self, **kwargs): super(LabelIconButton, self).__init__(**kwargs) Window.bind(mouse_pos=self.on_mouse_pos) def on_tile_color(self, instance, value): self.fade_color = value def on_mouse_pos(self, *args): pos = args[1] if self.pulsing: return if self.collide_point(*self.to_widget(*pos)): if not self.disabled: self.tile_color = ColorScheme.get_medium_accent() else: self.tile_color = ColorScheme.get_dark_accent() def on_press(self, *args): super(LabelIconButton, self).on_press(*args) if not self.disabled and not self.pulsing: self.tile_color = ColorScheme.get_medium_accent() def on_release(self, *args): super(LabelIconButton, self).on_release(*args) if not self.pulsing: self.tile_color = ColorScheme.get_dark_accent() def on_fade_color(self, instance, value): self.tile_color = value def on_pulsing(self, instance, value): self.tile_color = ColorScheme.get_medium_accent() super(LabelIconButton, self).on_pulsing(instance, value) def on_disabled(self, instance, value): super(LabelIconButton, self).on_disabled(instance, value) self.tile_color = ColorScheme.get_medium_accent()
class ProgressFieldLabel(AnchorLayout): minval = NumericProperty(0) maxval = NumericProperty(100) value = NumericProperty(0) color = ColorScheme.get_accent() text_color = ColorScheme.get_light_primary_text() text = StringProperty('') def __init__(self, **kwargs): super(ProgressFieldLabel, self).__init__(**kwargs) def on_minval(self, instance, value): self._refresh_value() def on_maxval(self, instance, value): self._refresh_value() def on_value(self, instance, value): self._refresh_value() def on_text(self, instance, value): self.ids.value.text = str(value) def _refresh_value(self): stencil = self.ids.stencil value = self.value minval = self.minval maxval = self.maxval pct = ((value - minval) / (maxval - minval)) width = self.width * pct stencil.width = width
def _on_option(self, option): self.ids.screens.current = option for name in self.buttons.keys(): button = self.buttons[name] if name == option: button.tile_color = ColorScheme.get_accent() else: button.tile_color = ColorScheme.get_dark_accent()
def add_options_screen(self, screen, button): screen.bind(on_screen_modified=self.on_modified) self.ids.screens.add_widget(screen) button.bind(on_press=lambda x: self._on_option(screen.name)) self.ids.options.add_widget(button) button.tile_color = ColorScheme.get_dark_accent() \ if len(self.buttons.values()) > 0 else \ ColorScheme.get_accent() self.buttons[screen.name] = button
class LabelIconButton(ButtonBehavior, AnchorLayout): title_font = StringProperty('resource/fonts/ASL_regular.ttf') title_font_size = NumericProperty(sp(20)) tile_color = ObjectProperty(ColorScheme.get_accent()) icon_color = ObjectProperty((0.0, 0.0, 0.0, 1.0)) title_color = ObjectProperty((0.0, 0.0, 0.0, 1.9)) icon = StringProperty('') icon_size = NumericProperty(sp(25)) title = StringProperty('') def __init__(self, **kwargs): super(LabelIconButton, self).__init__(**kwargs)