diff --git a/mopidy_touchscreen/graphic_utils/screen_objects.py b/mopidy_touchscreen/graphic_utils/screen_objects.py index 8398337..01a1871 100644 --- a/mopidy_touchscreen/graphic_utils/screen_objects.py +++ b/mopidy_touchscreen/graphic_utils/screen_objects.py @@ -7,7 +7,7 @@ import pygame logger = logging.getLogger(__name__) -class ScreenObjectsManager(): +class ScreenObjectsManager: def __init__(self): self.touch_objects = {} self.text_objects = {} @@ -86,9 +86,11 @@ class TextItem(BaseItem): scroll_speed = 2 - def __init__(self, font, text, pos, size, center=False, background=None): + def __init__(self, font, text, pos, size, center=False, background=None, + scroll_no_fit=True): self.font = font self.text = text + self.scroll_no_fit = scroll_no_fit self.color = (255, 255, 255) self.box = self.font.render(text, True, self.color) self.box = self.box.convert_alpha() @@ -126,7 +128,7 @@ class TextItem(BaseItem): self.box.get_rect().width)/2 def update(self): - if not self.fit_horizontal: + if self.scroll_no_fit and not self.fit_horizontal: self.step += TextItem.scroll_speed if self.step_2 is None: if (self.box.get_rect().width - self.step + @@ -152,25 +154,33 @@ class TextItem(BaseItem): self.box, ((self.pos[0] + self.margin), self.pos[1]), area=self.rect) else: - surface.blit(self.box, self.pos, - area=pygame.Rect(self.step, 0, self.size[0], - 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, + if self.scroll_no_fit: + surface.blit(self.box, self.pos, + area=pygame.Rect(self.step, 0, self.size[0], + 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])) + else: + step = self.box.get_rect().width - self.size[0] + surface.blit(self.box, self.pos, + area=pygame.Rect(step, 0, self.size[0], self.size[1])) def set_text(self, text, change_size): if text != self.text: if change_size: TextItem.__init__(self, self.font, text, self.pos, - None, self.center, self.background) + None, self.center, self.background, + self.scroll_no_fit) else: TextItem.__init__(self, self.font, text, self.pos, - self.size, self.center, self.background) + self.size, self.center, self.background, + self.scroll_no_fit) def add_text(self, add_text, change_size): self.set_text(self.text+add_text, change_size) @@ -218,9 +228,10 @@ class TouchObject(BaseItem): class TouchAndTextItem(TouchObject, TextItem): - def __init__(self, font, text, pos, size, center=False, background=None): + def __init__(self, font, text, pos, size, center=False, background=None, + scroll_no_fit=True): TextItem.__init__(self, font, text, pos, size, center=center, - background=background) + background=background, scroll_no_fit=scroll_no_fit) TouchObject.__init__(self, pos, self.size) self.active_color = (0, 150, 255) self.normal_box = self.box diff --git a/mopidy_touchscreen/screens/keyboard_screen.py b/mopidy_touchscreen/screens/keyboard_screen.py index 7ccbcd9..b453d5a 100644 --- a/mopidy_touchscreen/screens/keyboard_screen.py +++ b/mopidy_touchscreen/screens/keyboard_screen.py @@ -51,7 +51,8 @@ class Keyboard(BaseScreen): button = \ TouchAndTextItem(self.font, key, (pos, line), (self.base_width, self.base_height), - center=True, background=(150, 150, 150)) + center=True, background=(150, 150, 150), + scroll_no_fit=False) self.keyboards[self.current_keyboard].\ set_touch_object(key, button) pos += self.base_width @@ -62,35 +63,39 @@ class Keyboard(BaseScreen): button = TouchAndTextItem(self.font, "123", (0, self.base_height*4), (self.base_width*2, self.base_height), - center=True, background=(150, 150, 150)) + center=True, background=(150, 150, 150), + scroll_no_fit=False) self.other_objects.set_touch_object("symbols", button) # remove button button = TouchAndTextItem(self.font, "<-", (self.base_width*2, self.base_height*4), (self.base_width*2, self.base_height), - center=True, background=(150, 150, 150)) + center=True, background=(150, 150, 150), + scroll_no_fit=False) self.other_objects.set_touch_object("remove", button) # Space button button = TouchAndTextItem(self.font, " ", (self.base_width*4, self.base_height*4), (self.base_width*4, self.base_height), - center=True, background=(150, 150, 150)) + center=True, background=(150, 150, 150), + scroll_no_fit=False) self.other_objects.set_touch_object("space", button) # OK button button = TouchAndTextItem(self.font, "->", (self.base_width*8, self.base_height*4), (self.base_width*2, self.base_height), - center=True, background=(150, 150, 150)) + center=True, background=(150, 150, 150), + scroll_no_fit=False) self.other_objects.set_touch_object("ok", button) # EditText button button = TouchAndTextItem(self.font, "", (0, 0), - (self.base_width*10, self.base_height), - center=True) + (self.size[0], self.base_height), + center=False, scroll_no_fit=False) self.other_objects.set_object("text", button) self.change_selected(0, 0)