mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-05 06:35:43 +00:00
Text that does not fit will be showed again before disapiaring all text
This commit is contained in:
@@ -30,9 +30,9 @@ class DynamicBackground():
|
|||||||
|
|
||||||
def set_target_color(self, color):
|
def set_target_color(self, color):
|
||||||
if color is not None:
|
if color is not None:
|
||||||
self.target = get_similar_valid_color(color)
|
|
||||||
self.auto_mode = False
|
self.auto_mode = False
|
||||||
self.target_current_same = False
|
self.target_current_same = False
|
||||||
|
self.target = get_similar_valid_color(color)
|
||||||
else:
|
else:
|
||||||
self.auto_mode = True
|
self.auto_mode = True
|
||||||
self.target = get_valid_color()
|
self.target = get_valid_color()
|
||||||
|
|||||||
@@ -145,6 +145,13 @@ class ScreenManager():
|
|||||||
objects = self.down_bar_objects.get_touch_objects_in_pos(event.current_pos)
|
objects = self.down_bar_objects.get_touch_objects_in_pos(event.current_pos)
|
||||||
return self.click_on_objects(objects, event)
|
return self.click_on_objects(objects, event)
|
||||||
else:
|
else:
|
||||||
|
if event.type == InputManager.key:
|
||||||
|
if event.direction == InputManager.right:
|
||||||
|
self.change_screen(self.current_screen+1)
|
||||||
|
return True
|
||||||
|
elif event.direction == InputManager.left:
|
||||||
|
self.change_screen(self.current_screen-1)
|
||||||
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def volume_changed(self, volume):
|
def volume_changed(self, volume):
|
||||||
@@ -163,12 +170,12 @@ class ScreenManager():
|
|||||||
self.screens[main_screen_index].options_changed()
|
self.screens[main_screen_index].options_changed()
|
||||||
|
|
||||||
def change_screen(self, new_screen):
|
def change_screen(self, new_screen):
|
||||||
self.screen_changed = True
|
if new_screen > -1 and new_screen < len(self.screens):
|
||||||
self.down_bar_objects.get_touch_object(
|
self.down_bar_objects.get_touch_object(
|
||||||
"menu_" + str(self.current_screen)).set_active(False)
|
"menu_" + str(self.current_screen)).set_active(False)
|
||||||
self.current_screen = new_screen
|
self.current_screen = new_screen
|
||||||
self.down_bar_objects.get_touch_object(
|
self.down_bar_objects.get_touch_object(
|
||||||
"menu_" + str(new_screen)).set_active(True)
|
"menu_" + str(new_screen)).set_active(True)
|
||||||
|
|
||||||
def click_on_objects(self, objects, event):
|
def click_on_objects(self, objects, event):
|
||||||
if objects is not None:
|
if objects is not None:
|
||||||
|
|||||||
@@ -215,7 +215,8 @@ class BaseItem():
|
|||||||
|
|
||||||
class TextItem(BaseItem):
|
class TextItem(BaseItem):
|
||||||
|
|
||||||
scroll_speed = 2
|
scroll_speed = 5
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, font, text, pos, size, center=False):
|
def __init__(self, font, text, pos, size, center=False):
|
||||||
self.font = font
|
self.font = font
|
||||||
@@ -235,6 +236,8 @@ class TextItem(BaseItem):
|
|||||||
size[0]:
|
size[0]:
|
||||||
self.fit_horizontal = False
|
self.fit_horizontal = False
|
||||||
self.step = 0
|
self.step = 0
|
||||||
|
self.step_2 = None
|
||||||
|
self.scroll_white_gap = self.size[1] * 4
|
||||||
else:
|
else:
|
||||||
self.fit_horizontal = True
|
self.fit_horizontal = True
|
||||||
if self.pos[1] + self.box.get_rect().height > pos[1] + \
|
if self.pos[1] + self.box.get_rect().height > pos[1] + \
|
||||||
@@ -253,10 +256,15 @@ class TextItem(BaseItem):
|
|||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
if not self.fit_horizontal:
|
if not self.fit_horizontal:
|
||||||
if self.step > self.box.get_rect().width:
|
self.step = self.step + TextItem.scroll_speed
|
||||||
self.step = -self.size[0]
|
if self.step_2 is None:
|
||||||
|
if (self.box.get_rect().width - self.step + self.scroll_white_gap) < self.size[0]:
|
||||||
|
self.step_2 = self.box.get_rect().width - self.step + self.scroll_white_gap
|
||||||
else:
|
else:
|
||||||
self.step = self.step + TextItem.scroll_speed
|
self.step_2 = self.step_2 - TextItem.scroll_speed
|
||||||
|
if self.step_2 < 0:
|
||||||
|
self.step = 0 - self.step_2
|
||||||
|
self.step_2 = None
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return BaseItem.update(self)
|
return BaseItem.update(self)
|
||||||
@@ -268,7 +276,10 @@ class TextItem(BaseItem):
|
|||||||
surface.blit(self.box, self.pos,
|
surface.blit(self.box, self.pos,
|
||||||
area=pygame.Rect(self.step, 0, self.size[0],
|
area=pygame.Rect(self.step, 0, self.size[0],
|
||||||
self.size[1]))
|
self.size[1]))
|
||||||
|
if self.step_2 is not None:
|
||||||
|
surface.blit(self.box, (self.pos[0]+self.step_2, self.pos[1]),
|
||||||
|
area=pygame.Rect(0, 0, self.size[0] - self.step_2,
|
||||||
|
self.size[1]))
|
||||||
|
|
||||||
def set_text(self, text, change_size):
|
def set_text(self, text, change_size):
|
||||||
if text != self.text:
|
if text != self.text:
|
||||||
@@ -302,6 +313,7 @@ class TouchAndTextItem(TouchObject, TextItem):
|
|||||||
TouchObject.__init__(self, pos, self.size)
|
TouchObject.__init__(self, pos, self.size)
|
||||||
self.active_color = (0, 150, 255)
|
self.active_color = (0, 150, 255)
|
||||||
self.selected_color = (150, 0, 255)
|
self.selected_color = (150, 0, 255)
|
||||||
|
self.normal_box = self.box
|
||||||
self.active_box = self.font.render(text, True,
|
self.active_box = self.font.render(text, True,
|
||||||
self.active_color)
|
self.active_color)
|
||||||
self.selected_box = self.font.render(text, True,
|
self.selected_box = self.font.render(text, True,
|
||||||
@@ -312,21 +324,28 @@ class TouchAndTextItem(TouchObject, TextItem):
|
|||||||
|
|
||||||
def set_text(self, text, change_size):
|
def set_text(self, text, change_size):
|
||||||
TextItem.set_text(self, text, change_size)
|
TextItem.set_text(self, text, change_size)
|
||||||
|
self.normal_box = self.box
|
||||||
self.active_box = self.font.render(text, True,
|
self.active_box = self.font.render(text, True,
|
||||||
self.active_color)
|
self.active_color)
|
||||||
self.selected_box = self.font.render(text, True,
|
self.selected_box = self.font.render(text, True,
|
||||||
self.selected_color)
|
self.selected_color)
|
||||||
|
|
||||||
def render(self, surface):
|
def set_active(self, active):
|
||||||
if not self.fit_horizontal:
|
TouchObject.set_active(self, active)
|
||||||
self.rect = pygame.Rect(self.step, 0, self.size[0],
|
if self.active:
|
||||||
self.size[1])
|
self.box = self.active_box
|
||||||
if self.selected:
|
|
||||||
surface.blit(self.selected_box, (self.pos[0]+self.margin, self.pos[1]), area=self.rect)
|
|
||||||
elif self.active:
|
|
||||||
surface.blit(self.active_box, (self.pos[0]+self.margin, self.pos[1]), area=self.rect)
|
|
||||||
else:
|
else:
|
||||||
surface.blit(self.box, (self.pos[0]+self.margin, self.pos[1]), area=self.rect)
|
self.box = self.normal_box
|
||||||
|
|
||||||
|
def set_selected(self, selected):
|
||||||
|
TouchObject.set_selected(self, selected)
|
||||||
|
if self.selected:
|
||||||
|
self.box = self.selected_box
|
||||||
|
else:
|
||||||
|
self.box = self.normal_box
|
||||||
|
|
||||||
|
def render(self, surface):
|
||||||
|
TextItem.render(self, surface)
|
||||||
|
|
||||||
|
|
||||||
class Progressbar(TouchObject):
|
class Progressbar(TouchObject):
|
||||||
|
|||||||
Reference in New Issue
Block a user