diff --git a/.gitignore b/.gitignore index 799bff1..37fcd87 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ MANIFEST build/ dist/ -mopidy_touchscreen/.idea/ +.idea/ diff --git a/mopidy_touchscreen/__init__.py b/mopidy_touchscreen/__init__.py index efdfe43..86e811a 100644 --- a/mopidy_touchscreen/__init__.py +++ b/mopidy_touchscreen/__init__.py @@ -36,5 +36,5 @@ class Extension(ext.Extension): def setup(self, registry): registry.add('frontend', TouchScreen) - #Backend used for controling volume + # Backend used for controling volume registry.add('backend', TouchScreenBackend) diff --git a/mopidy_touchscreen/dynamic_background.py b/mopidy_touchscreen/dynamic_background.py index e4590ff..9b9b15d 100644 --- a/mopidy_touchscreen/dynamic_background.py +++ b/mopidy_touchscreen/dynamic_background.py @@ -24,8 +24,8 @@ class DynamicBackground(): # Returns an array with 3 integers in range of 0-255 -#The sum of the three integers will be lower than 255*2 (510) to avoid very bright colors -#White text should be seen ok with this background color +# The sum of the three integers will be lower than 255*2 (510) to avoid very bright colors +# White text should be seen ok with this background color def get_valid_color(): diff --git a/mopidy_touchscreen/fonts/icomoon/demo.html b/mopidy_touchscreen/fonts/icomoon/demo.html index 1e63de2..d657467 100644 --- a/mopidy_touchscreen/fonts/icomoon/demo.html +++ b/mopidy_touchscreen/fonts/icomoon/demo.html @@ -23,7 +23,8 @@
- +
liga: @@ -32,11 +33,13 @@
- icon-headphones + icon-headphones
- +
liga: @@ -45,11 +48,13 @@
- icon-connection + icon-connection
- +
liga: @@ -62,7 +67,8 @@
- +
liga: @@ -75,7 +81,8 @@
- +
liga: @@ -88,7 +95,8 @@
- +
liga: @@ -101,7 +109,8 @@
- +
liga: @@ -114,7 +123,8 @@
- +
liga: @@ -127,7 +137,8 @@
- +
liga: @@ -140,7 +151,8 @@
- +
liga: @@ -153,7 +165,8 @@
- +
liga: @@ -166,7 +179,8 @@
- +
liga: @@ -179,7 +193,8 @@
- +
liga: @@ -192,7 +207,8 @@
- +
liga: @@ -205,7 +221,8 @@
- +
liga: @@ -218,7 +235,8 @@
- +
liga: @@ -231,7 +249,8 @@
- +
liga: @@ -244,7 +263,8 @@
- +
liga: @@ -253,11 +273,13 @@
- icon-checkmark + icon-checkmark
- +
liga: @@ -270,7 +292,8 @@
- +
liga: @@ -283,7 +306,8 @@
- +
liga: @@ -296,7 +320,8 @@
- +
liga: @@ -309,7 +334,8 @@
- +
liga: @@ -322,7 +348,8 @@
- +
liga: @@ -331,11 +358,13 @@
- icon-backward + icon-backward
- +
liga: @@ -348,7 +377,8 @@
- +
liga: @@ -361,7 +391,8 @@
- +
liga: @@ -374,7 +405,8 @@
- +
liga: @@ -383,11 +415,13 @@
- icon-previous + icon-previous
- +
liga: @@ -400,7 +434,8 @@
- +
liga: @@ -413,7 +448,8 @@
- +
liga: @@ -426,7 +462,8 @@
- +
liga: @@ -439,7 +476,8 @@
- +
liga: @@ -448,11 +486,13 @@
- icon-volume-low + icon-volume-low
- +
liga: @@ -465,7 +505,8 @@
- +
liga: @@ -478,7 +519,8 @@
- +
liga: @@ -491,7 +533,8 @@
- +
liga: @@ -504,7 +547,8 @@
- +
liga: @@ -517,7 +561,8 @@
- +
liga: @@ -530,7 +575,8 @@
- +
liga: @@ -543,7 +589,8 @@
- +
liga: @@ -556,7 +603,8 @@
- +
liga: diff --git a/mopidy_touchscreen/library_screen.py b/mopidy_touchscreen/library_screen.py index f4d19d7..34e7ccc 100644 --- a/mopidy_touchscreen/library_screen.py +++ b/mopidy_touchscreen/library_screen.py @@ -14,7 +14,8 @@ class LibraryScreen(): self.size = size self.base_size = base_size self.manager = manager - self.list_view = ListView((0, self.base_size), (self.size[0], self.size[1] - 2 * self.base_size), + self.list_view = ListView((0, self.base_size), ( + self.size[0], self.size[1] - 2 * self.base_size), self.base_size, manager.fonts['base']) self.directory_list = [] self.current_directory = None @@ -61,10 +62,12 @@ class LibraryScreen(): if clicked == 0: self.go_up_directory() else: - if self.library[clicked - 1].type == mopidy.models.Ref.TRACK: + if self.library[ + clicked - 1].type == mopidy.models.Ref.TRACK: self.play_uri(self.library[clicked - 1].uri, True) else: - self.go_inside_directory(self.library[clicked - 1].uri) + self.go_inside_directory( + self.library[clicked - 1].uri) else: if self.library[clicked].type == mopidy.models.Track: self.play_uri(self.library[clicked].uri, True) @@ -77,6 +80,6 @@ class LibraryScreen(): self.manager.core.tracklist.add(uri=uri) self.manager.core.playback.play() else: - #TODO: add folder to tracks to play + # TODO: add folder to tracks to play pass diff --git a/mopidy_touchscreen/list_view.py b/mopidy_touchscreen/list_view.py index 8dce9e8..ca88ed6 100644 --- a/mopidy_touchscreen/list_view.py +++ b/mopidy_touchscreen/list_view.py @@ -19,20 +19,21 @@ class ListView(): self.set_list([]) self.selected = [] - #Sets the list for the lisview. It should be an iterable of strings + # Sets the list for the lisview. It should be an iterable of strings def set_list(self, item_list): self.list = item_list self.list_size = len(item_list) if self.max_rows < self.list_size: self.scrollbar = True - scroll_bar = ScrollBar((self.pos[0] + self.size[0] - self.base_size, self.pos[1]), - (self.base_size, self.size[1]), self.list_size, self.max_rows) + scroll_bar = ScrollBar( + (self.pos[0] + self.size[0] - self.base_size, self.pos[1]), + (self.base_size, self.size[1]), self.list_size, self.max_rows) self.screen_objects.set_touch_object("scrollbar", scroll_bar) else: self.scrollbar = False self.load_new_item_position(0) - #Will load items currently displaying in item_pos + # Will load items currently displaying in item_pos def load_new_item_position(self, item_pos): self.current_item = item_pos if self.scrollbar: @@ -46,7 +47,8 @@ class ListView(): else: width = self.size[0] while i < self.list_size and z < self.max_rows: - item = TouchAndTextItem(self.font, self.list[i], (self.pos[0], self.pos[1] + self.base_size * z), + item = TouchAndTextItem(self.font, self.list[i], ( + self.pos[0], self.pos[1] + self.base_size * z), (width, -1)) self.screen_objects.set_touch_object(str(i), item) i += 1 @@ -57,11 +59,13 @@ class ListView(): def touch_event(self, touch_event): if touch_event.type == TouchManager.click or touch_event.type == TouchManager.long_click: - objects = self.screen_objects.get_touch_objects_in_pos(touch_event.current_pos) + objects = self.screen_objects.get_touch_objects_in_pos( + touch_event.current_pos) if objects is not None: for key in objects: if key == "scrollbar": - direction = self.screen_objects.get_touch_object(key).touch(touch_event.current_pos) + direction = self.screen_objects.get_touch_object( + key).touch(touch_event.current_pos) if direction != 0: self.move_to(direction) else: @@ -82,25 +86,29 @@ class ListView(): if self.current_item + self.max_rows > self.list_size: self.current_item = self.list_size - self.max_rows self.load_new_item_position(self.current_item) - self.screen_objects.get_touch_object("scrollbar").set_item(self.current_item) + self.screen_objects.get_touch_object("scrollbar").set_item( + self.current_item) elif direction == -1: self.current_item -= self.max_rows if self.current_item < 0: self.current_item = 0 self.load_new_item_position(self.current_item) - self.screen_objects.get_touch_object("scrollbar").set_item(self.current_item) + self.screen_objects.get_touch_object("scrollbar").set_item( + self.current_item) self.set_selected(self.selected) #Set selected items def set_selected(self, selected): for number in self.selected: try: - self.screen_objects.get_touch_object(str(number)).set_active(False) + self.screen_objects.get_touch_object(str(number)).set_active( + False) except KeyError: pass for number in selected: try: - self.screen_objects.get_touch_object(str(number)).set_active(True) + self.screen_objects.get_touch_object(str(number)).set_active( + True) except KeyError: pass self.selected = selected \ No newline at end of file diff --git a/mopidy_touchscreen/main_screen.py b/mopidy_touchscreen/main_screen.py index 7975b52..16c6149 100644 --- a/mopidy_touchscreen/main_screen.py +++ b/mopidy_touchscreen/main_screen.py @@ -34,12 +34,15 @@ class MainScreen(): def update(self, screen): if self.track is not None: if self.image is not None: - screen.blit(self.image, (self.base_size / 2, self.base_size + self.base_size / 2)) + screen.blit(self.image, ( + self.base_size / 2, self.base_size + self.base_size / 2)) self.touch_text_manager.get_touch_object("time_progress").set_value( self.core.playback.time_position.get() / 1000) - self.touch_text_manager.get_touch_object("time_progress").set_text(time.strftime('%M:%S', time.gmtime( - self.core.playback.time_position.get() / 1000)) + "/" + time.strftime('%M:%S', time.gmtime( - self.track.length / 1000))) + self.touch_text_manager.get_touch_object("time_progress").set_text( + time.strftime('%M:%S', time.gmtime( + self.core.playback.time_position.get() / 1000)) + "/" + time.strftime( + '%M:%S', time.gmtime( + self.track.length / 1000))) self.touch_text_manager.render(screen) return screen @@ -54,32 +57,42 @@ class MainScreen(): self.artists.append(artist) # Track name - label = TextItem(self.fonts['base'], MainScreen.get_track_name(track), (x, self.base_size * 2), + label = TextItem(self.fonts['base'], MainScreen.get_track_name(track), + (x, self.base_size * 2), (width, self.size[1])) self.touch_text_manager.set_object("track_name", label) - #Album name - label = TextItem(self.fonts['base'], MainScreen.get_track_album_name(track), (x, self.base_size * 3), + # Album name + label = TextItem(self.fonts['base'], + MainScreen.get_track_album_name(track), + (x, self.base_size * 3), (width, self.size[1])) self.touch_text_manager.set_object("album_name", label) - #Artist - label = TextItem(self.fonts['base'], self.get_artist_string(), (x, self.base_size * 4), (width, self.size[1])) + # Artist + label = TextItem(self.fonts['base'], self.get_artist_string(), + (x, self.base_size * 4), (width, self.size[1])) self.touch_text_manager.set_object("artist_name", label) #Previous track button - button = TouchAndTextItem(self.fonts['icon'], u"\ue61c", (0, self.base_size * 6), None) + button = TouchAndTextItem(self.fonts['icon'], u"\ue61c", + (0, self.base_size * 6), None) self.touch_text_manager.set_touch_object("previous", button) size_1 = button.get_right_pos() size_2 = self.fonts['icon'].size(u"\ue61d")[0] - button = TouchAndTextItem(self.fonts['icon'], u"\ue61d", (self.size[0] - size_2, self.base_size * 6), None) + button = TouchAndTextItem(self.fonts['icon'], u"\ue61d", + (self.size[0] - size_2, self.base_size * 6), + None) self.touch_text_manager.set_touch_object("next", button) #Progress progress = Progressbar(self.fonts['base'], - time.strftime('%M:%S', time.gmtime(0)) + "/" + time.strftime('%M:%S', time.gmtime(0)), - (size_1, self.base_size * 6), (self.size[0] - size_1 - size_2, self.base_size), + time.strftime('%M:%S', time.gmtime( + 0)) + "/" + time.strftime('%M:%S', + time.gmtime(0)), + (size_1, self.base_size * 6), + (self.size[0] - size_1 - size_2, self.base_size), track.length / 1000, False) self.touch_text_manager.set_touch_object("time_progress", progress) @@ -101,7 +114,8 @@ class MainScreen(): return artists_string def get_image_file_name(self): - name = MainScreen.get_track_album_name(self.track) + '-' + self.get_artist_string() + name = MainScreen.get_track_album_name( + self.track) + '-' + self.get_artist_string() md5name = hashlib.md5(name.encode('utf-8')).hexdigest() return md5name @@ -112,19 +126,22 @@ class MainScreen(): def is_image_in_cache(self): self.get_cover_folder() - return os.path.isfile(self.get_cover_folder() + self.get_image_file_name()) + return os.path.isfile( + self.get_cover_folder() + self.get_image_file_name()) def download_image(self, artist_index): if artist_index < len(self.artists): try: safe_artist = urllib.quote_plus(self.artists[artist_index].name) - safe_album = urllib.quote_plus(MainScreen.get_track_album_name(self.track)) + safe_album = urllib.quote_plus( + MainScreen.get_track_album_name(self.track)) url = "http://ws.audioscrobbler.com/2.0/?" params = "method=album.getinfo&api_key=59a04c6a73fb99d6e8996e01db306829&artist=" + safe_artist + "&album=" + safe_album + "&format=json" response = urllib2.urlopen(url + params) data = json.load(response) image = data['album']['image'][-1]['#text'] - urllib.urlretrieve(image, self.get_cover_folder() + self.get_image_file_name()) + urllib.urlretrieve(image, + self.get_cover_folder() + self.get_image_file_name()) self.load_image() except: self.download_image(artist_index + 1) @@ -135,17 +152,20 @@ class MainScreen(): # There is no cover so it will use all the screen size for the text width = self.size[0] - self.base_size - current = TextItem(self.fonts['base'], MainScreen.get_track_name(self.track), + current = TextItem(self.fonts['base'], + MainScreen.get_track_name(self.track), (self.base_size / 2, self.base_size * 2), (width, -1)) self.touch_text_manager.set_object("track_name", current) - current = TextItem(self.fonts['base'], MainScreen.get_track_album_name(self.track), + current = TextItem(self.fonts['base'], + MainScreen.get_track_album_name(self.track), (self.base_size / 2, self.base_size * 3), (width, -1)) self.touch_text_manager.set_object("album_name", current) - current = TextItem(self.fonts['base'], self.get_artist_string(), (self.base_size / 2, self.base_size * 4), + current = TextItem(self.fonts['base'], self.get_artist_string(), + (self.base_size / 2, self.base_size * 4), (width, -1)) self.touch_text_manager.set_object("artist_name", current) @@ -156,30 +176,37 @@ class MainScreen(): # There is no cover so it will use all the screen size for the text width = self.size[0] - self.base_size - current = TextItem(self.fonts['base'], "Stopped", (self.base_size / 2, self.base_size * 2), + current = TextItem(self.fonts['base'], "Stopped", + (self.base_size / 2, self.base_size * 2), (width, -1)) self.touch_text_manager.set_object("track_name", current) - current = TextItem(self.fonts['base'], "", (self.base_size / 2, self.base_size * 3), + current = TextItem(self.fonts['base'], "", + (self.base_size / 2, self.base_size * 3), (width, -1)) self.touch_text_manager.set_object("album_name", current) - current = TextItem(self.fonts['base'], "", (self.base_size / 2, self.base_size * 4), + current = TextItem(self.fonts['base'], "", + (self.base_size / 2, self.base_size * 4), (width, -1)) self.touch_text_manager.set_object("artist_name", current) def load_image(self): size = self.base_size * 4 self.image = pygame.transform.scale( - pygame.image.load(self.get_cover_folder() + self.get_image_file_name()).convert(), (size, size)) + pygame.image.load( + self.get_cover_folder() + self.get_image_file_name()).convert(), + (size, size)) def touch_event(self, event): if event.type == TouchManager.click: - objects = self.touch_text_manager.get_touch_objects_in_pos(event.current_pos) + objects = self.touch_text_manager.get_touch_objects_in_pos( + event.current_pos) if objects is not None: for key in objects: if key == "time_progress": - value = self.touch_text_manager.get_touch_object(key).get_pos_value(event.current_pos) * 1000 + value = self.touch_text_manager.get_touch_object( + key).get_pos_value(event.current_pos) * 1000 self.core.playback.seek(value) elif key == "previous": self.core.playback.previous() @@ -212,7 +239,8 @@ class MainScreen(): @staticmethod def get_track_album_name(track): - if track.album is not None and track.album.name is not None and len(track.album.name) > 0: + if track.album is not None and track.album.name is not None and len( + track.album.name) > 0: return track.album.name else: return "Unknow Album" diff --git a/mopidy_touchscreen/menu_screen.py b/mopidy_touchscreen/menu_screen.py index 94bcf23..d9a9477 100644 --- a/mopidy_touchscreen/menu_screen.py +++ b/mopidy_touchscreen/menu_screen.py @@ -15,28 +15,35 @@ class MenuScreen(): self.screen_objects = ScreenObjectsManager() # Exit mopidy button - button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue611", (0, self.base_size), None) + button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue611", + (0, self.base_size), None) self.screen_objects.set_touch_object("exit_icon", button) - button = TouchAndTextItem(self.manager.fonts['base'], "Exit Mopidy", (button.get_right_pos(), self.base_size), + button = TouchAndTextItem(self.manager.fonts['base'], "Exit Mopidy", + (button.get_right_pos(), self.base_size), None) self.screen_objects.set_touch_object("exit", button) - #Shutdown button - button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue60b", (0, self.base_size * 2), None) + # Shutdown button + button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue60b", + (0, self.base_size * 2), None) self.screen_objects.set_touch_object("shutdown_icon", button) - button = TouchAndTextItem(self.manager.fonts['base'], "Shutdown", (button.get_right_pos(), self.base_size * 2), + button = TouchAndTextItem(self.manager.fonts['base'], "Shutdown", + (button.get_right_pos(), self.base_size * 2), None) self.screen_objects.set_touch_object("shutdown", button) - #Restart button - button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue609", (0, self.base_size * 3), None) + # Restart button + button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue609", + (0, self.base_size * 3), None) self.screen_objects.set_touch_object("restart_icon", button) - button = TouchAndTextItem(self.manager.fonts['base'], "Restart", (button.get_right_pos(), self.base_size * 3), + button = TouchAndTextItem(self.manager.fonts['base'], "Restart", + (button.get_right_pos(), self.base_size * 3), None) self.screen_objects.set_touch_object("restart", button) #IP addres - button = TouchAndTextItem(self.manager.fonts['base'], "IP: ", (0, self.base_size * 4), None) + button = TouchAndTextItem(self.manager.fonts['base'], "IP: ", + (0, self.base_size * 4), None) self.screen_objects.set_touch_object("ip", button) #self.list_view = ListView((0,self.base_size),(self.size[0],self.size[1]-2*self.base_size), self.base_size, manager.fonts) @@ -49,7 +56,8 @@ class MenuScreen(): def touch_event(self, touch_event): # clicked = self.list_view.touch_event(touch_event) - clicked = self.screen_objects.get_touch_objects_in_pos(touch_event.current_pos) + clicked = self.screen_objects.get_touch_objects_in_pos( + touch_event.current_pos) for key in clicked: if key == "exit_icon" or key == "exit": mopidy.utils.process.exit_process() @@ -62,7 +70,7 @@ class MenuScreen(): elif key == "ip": self.check_connection() - #Will check internet connection + # Will check internet connection def check_connection(self): try: self.manager.set_connection(False, True) @@ -70,11 +78,13 @@ class MenuScreen(): s.connect(("8.8.8.8", 80)) self.ip = s.getsockname()[0] s.close() - self.screen_objects.get_touch_object("ip").set_text("IP: " + self.ip, "None") + self.screen_objects.get_touch_object("ip").set_text( + "IP: " + self.ip, "None") self.manager.set_connection(True, False) except socket.error: s.close() self.ip = None - self.screen_objects.get_touch_object("ip").set_text("IP: No internet", "None") + self.screen_objects.get_touch_object("ip").set_text( + "IP: No internet", "None") self.manager.set_connection(False, False) diff --git a/mopidy_touchscreen/playlist_screen.py b/mopidy_touchscreen/playlist_screen.py index a8dd297..0facce0 100644 --- a/mopidy_touchscreen/playlist_screen.py +++ b/mopidy_touchscreen/playlist_screen.py @@ -6,7 +6,8 @@ class PlaylistScreen(): self.size = size self.base_size = base_size self.manager = manager - self.list_view = ListView((0, self.base_size), (self.size[0], self.size[1] - 2 * self.base_size), + self.list_view = ListView((0, self.base_size), ( + self.size[0], self.size[1] - 2 * self.base_size), self.base_size, manager.fonts['base']) self.playlists_strings = [] self.playlists = [] diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py index 18d4067..3bd816b 100644 --- a/mopidy_touchscreen/screen_manager.py +++ b/mopidy_touchscreen/screen_manager.py @@ -1,9 +1,7 @@ -import logging import traceback -import os -import pygame import mopidy +from pkg_resources import Requirement, resource_filename from .main_screen import MainScreen from .touch_manager import TouchManager @@ -14,8 +12,6 @@ from .dynamic_background import DynamicBackground from .library_screen import LibraryScreen from .menu_screen import MenuScreen -from pkg_resources import Requirement, resource_filename - logger = logging.getLogger(__name__) @@ -28,7 +24,8 @@ class ScreenManager(): self.background = DynamicBackground() self.current_screen = 0 self.base_size = self.size[1] / 8 - font = resource_filename(Requirement.parse("mopidy-touchscreen"),"mopidy_touchscreen/icomoon.ttf") + font = resource_filename(Requirement.parse("mopidy-touchscreen"), + "mopidy_touchscreen/icomoon.ttf") self.fonts['base'] = pygame.font.SysFont("verdana", self.base_size) self.fonts['icon'] = pygame.font.Font(font, self.base_size) try: @@ -44,7 +41,8 @@ class ScreenManager(): self.screen_objects_manager = ScreenObjectsManager() # Top bar - self.top_bar = pygame.Surface((self.size[0], self.base_size), pygame.SRCALPHA) + self.top_bar = pygame.Surface((self.size[0], self.base_size), + pygame.SRCALPHA) self.top_bar.fill((0, 0, 0, 128)) # Play/pause @@ -52,12 +50,12 @@ class ScreenManager(): self.screen_objects_manager.set_touch_object("pause_play", button) x = button.get_right_pos() - #Random + # Random button = TouchAndTextItem(self.fonts['icon'], u"\ue629 ", (x, 0), None) self.screen_objects_manager.set_touch_object("random", button) x = button.get_right_pos() - #Repeat + # Repeat button = TouchAndTextItem(self.fonts['icon'], u"\ue626", (x, 0), None) self.screen_objects_manager.set_touch_object("repeat", button) x = button.get_right_pos() @@ -78,7 +76,8 @@ class ScreenManager(): x = button.get_right_pos() #Volume - progress = Progressbar(self.fonts['base'], "100", (x, 0), (self.size[0] - x, self.base_size), 100, True) + progress = Progressbar(self.fonts['base'], "100", (x, 0), + (self.size[0] - x, self.base_size), 100, True) self.screen_objects_manager.set_touch_object("volume", progress) progress.set_value(self.core.playback.volume.get()) @@ -87,37 +86,44 @@ class ScreenManager(): button_size = (self.size[0] / 5, self.base_size) #Main button - button = TouchAndTextItem(self.fonts['icon'], u" \ue600", (0, self.base_size * 7), button_size) + button = TouchAndTextItem(self.fonts['icon'], u" \ue600", + (0, self.base_size * 7), button_size) self.screen_objects_manager.set_touch_object("menu_0", button) x = button.get_right_pos() #Tracklist button - button = TouchAndTextItem(self.fonts['icon'], u" \ue60d", (x, self.base_size * 7), button_size) + button = TouchAndTextItem(self.fonts['icon'], u" \ue60d", + (x, self.base_size * 7), button_size) self.screen_objects_manager.set_touch_object("menu_1", button) x = button.get_right_pos() #Library button - button = TouchAndTextItem(self.fonts['icon'], u" \ue604", (x, self.base_size * 7), button_size) + button = TouchAndTextItem(self.fonts['icon'], u" \ue604", + (x, self.base_size * 7), button_size) self.screen_objects_manager.set_touch_object("menu_2", button) x = button.get_right_pos() #Playlist button - button = TouchAndTextItem(self.fonts['icon'], u" \ue605", (x, self.base_size * 7), button_size) + button = TouchAndTextItem(self.fonts['icon'], u" \ue605", + (x, self.base_size * 7), button_size) self.screen_objects_manager.set_touch_object("menu_3", button) x = button.get_right_pos() #Menu button - button = TouchAndTextItem(self.fonts['icon'], u" \ue60a", (x, self.base_size * 7), None) + button = TouchAndTextItem(self.fonts['icon'], u" \ue60a", + (x, self.base_size * 7), None) self.screen_objects_manager.set_touch_object("menu_4", button) x = button.get_right_pos() #Down bar - self.down_bar = pygame.Surface((self.size[0], self.size[1] - self.base_size * 7), pygame.SRCALPHA) + self.down_bar = pygame.Surface( + (self.size[0], self.size[1] - self.base_size * 7), pygame.SRCALPHA) self.down_bar.fill((0, 0, 0, 128)) self.options_changed() self.mute_changed(self.core.playback.mute.get()) - self.playback_state_changed(self.core.playback.state.get(), self.core.playback.state.get()) + self.playback_state_changed(self.core.playback.state.get(), + self.core.playback.state.get()) self.screens[4].check_connection() self.change_screen(self.current_screen) @@ -142,13 +148,16 @@ class ScreenManager(): touch_event = self.touch_manager.event(event) if touch_event is not None: if touch_event.type == TouchManager.click: - objects = self.screen_objects_manager.get_touch_objects_in_pos(touch_event.current_pos) + objects = self.screen_objects_manager.get_touch_objects_in_pos( + touch_event.current_pos) if objects is not None: for key in objects: if key == "volume": - value = self.screen_objects_manager.get_touch_object(key).get_pos_value( + value = self.screen_objects_manager.get_touch_object( + key).get_pos_value( touch_event.current_pos) - self.backend.tell({'action': 'volume', 'value': value}) + self.backend.tell( + {'action': 'volume', 'value': value}) self.volume_changed(value) elif key == "pause_play": if self.core.playback.state.get() == mopidy.core.PlaybackState.PLAYING: @@ -166,9 +175,11 @@ class ScreenManager(): self.core.tracklist.set_random(random) self.options_changed() elif key == "repeat": - self.core.tracklist.set_repeat(not self.core.tracklist.repeat.get()) + self.core.tracklist.set_repeat( + not self.core.tracklist.repeat.get()) elif key == "single": - self.core.tracklist.set_single(not self.core.tracklist.single.get()) + self.core.tracklist.set_single( + not self.core.tracklist.single.get()) elif key == "internet": self.screens[4].check_connection() elif key[:-1] == "menu_": @@ -178,26 +189,34 @@ class ScreenManager(): def volume_changed(self, volume): if not self.core.playback.mute.get(): if volume > 80: - self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue61f", False) + self.screen_objects_manager.get_touch_object("mute").set_text( + u"\ue61f", False) elif volume > 50: - self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue620", False) + self.screen_objects_manager.get_touch_object("mute").set_text( + u"\ue620", False) elif volume > 20: - self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue621", False) + self.screen_objects_manager.get_touch_object("mute").set_text( + u"\ue621", False) else: logger.error("sartu naiz") - self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue622", False) + self.screen_objects_manager.get_touch_object("mute").set_text( + u"\ue622", False) self.screen_objects_manager.get_touch_object("volume").set_value(volume) def playback_state_changed(self, old_state, new_state): if new_state == mopidy.core.PlaybackState.PLAYING: - self.screen_objects_manager.get_touch_object("pause_play").set_text(u"\ue616", False) + self.screen_objects_manager.get_touch_object("pause_play").set_text( + u"\ue616", False) else: - self.screen_objects_manager.get_touch_object("pause_play").set_text(u"\ue615", False) + self.screen_objects_manager.get_touch_object("pause_play").set_text( + u"\ue615", False) def mute_changed(self, mute): - self.screen_objects_manager.get_touch_object("mute").set_active(not mute) + self.screen_objects_manager.get_touch_object("mute").set_active( + not mute) if mute: - self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue623", False) + self.screen_objects_manager.get_touch_object("mute").set_text( + u"\ue623", False) else: self.volume_changed(self.core.playback.volume.get()) @@ -205,14 +224,19 @@ class ScreenManager(): self.screens[1].tracklist_changed() def options_changed(self): - self.screen_objects_manager.get_touch_object("random").set_active(self.core.tracklist.random.get()) - self.screen_objects_manager.get_touch_object("repeat").set_active(self.core.tracklist.repeat.get()) - self.screen_objects_manager.get_touch_object("single").set_active(self.core.tracklist.single.get()) + self.screen_objects_manager.get_touch_object("random").set_active( + self.core.tracklist.random.get()) + self.screen_objects_manager.get_touch_object("repeat").set_active( + self.core.tracklist.repeat.get()) + self.screen_objects_manager.get_touch_object("single").set_active( + self.core.tracklist.single.get()) def change_screen(self, new_screen): - self.screen_objects_manager.get_touch_object("menu_" + str(self.current_screen)).set_active(False) + self.screen_objects_manager.get_touch_object( + "menu_" + str(self.current_screen)).set_active(False) self.current_screen = new_screen - self.screen_objects_manager.get_touch_object("menu_" + str(new_screen)).set_active(True) + self.screen_objects_manager.get_touch_object( + "menu_" + str(new_screen)).set_active(True) def playlists_loaded(self): self.screens[3].playlists_loaded() diff --git a/mopidy_touchscreen/screen_objects.py b/mopidy_touchscreen/screen_objects.py index c8430e7..71b65dc 100644 --- a/mopidy_touchscreen/screen_objects.py +++ b/mopidy_touchscreen/screen_objects.py @@ -52,7 +52,8 @@ class BaseItem(): self.pos = pos self.size = size self.rect = pygame.Rect(0, 0, self.size[0], self.size[1]) - self.rect_in_pos = pygame.Rect(self.pos[0], self.pos[1], self.size[0], self.size[1]) + self.rect_in_pos = pygame.Rect(self.pos[0], self.pos[1], self.size[0], + self.size[1]) def get_right_pos(self): return self.pos[0] + self.size[0] @@ -153,7 +154,8 @@ class TouchAndTextItem(TouchObject, TextItem): pass else: if self.active: - self.active_box = self.font.render(self.text, True, self.active_color) + self.active_box = self.font.render(self.text, True, + self.active_color) else: self.box = self.font.render(self.text, True, self.color) if self.active: @@ -178,7 +180,8 @@ class Progressbar(TouchObject): self.text.set_text(str(self.value), True) else: self.text = TextItem(font, text, pos, None) - self.text.pos = (self.pos[0] + self.size[0] / 2 - self.text.size[0] / 2, self.text.pos[1]) + self.text.pos = (self.pos[0] + self.size[0] / 2 - self.text.size[0] / 2, + self.text.pos[1]) def update(self): pass @@ -219,7 +222,9 @@ class ScrollBar(TouchObject): if self.max < 1: self.bar_size = self.size[1] else: - self.bar_size = math.ceil(float(self.items_on_screen) / float(self.max) * float(self.size[1])) + self.bar_size = math.ceil( + float(self.items_on_screen) / float(self.max) * float( + self.size[1])) self.bar = pygame.Surface((self.size[0], self.bar_size)) self.bar.fill((255, 255, 255)) @@ -237,4 +242,5 @@ class ScrollBar(TouchObject): def set_item(self, current_item): self.current_item = current_item - self.bar_pos = float(self.current_item) / float(self.max) * float(self.size[1]) \ No newline at end of file + self.bar_pos = float(self.current_item) / float(self.max) * float( + self.size[1]) \ No newline at end of file diff --git a/mopidy_touchscreen/touch_manager.py b/mopidy_touchscreen/touch_manager.py index 7d8bb72..bc02ae7 100644 --- a/mopidy_touchscreen/touch_manager.py +++ b/mopidy_touchscreen/touch_manager.py @@ -30,18 +30,21 @@ class TouchManager(): if event.type == pygame.MOUSEBUTTONUP: if event.button == 4: - touch_event = TouchEvent(TouchManager.swipe, self.down_pos, self.up_pos, True) + touch_event = TouchEvent(TouchManager.swipe, self.down_pos, + self.up_pos, True) touch_event.direction = TouchManager.up return touch_event elif event.button == 5: - touch_event = TouchEvent(TouchManager.swipe, self.down_pos, self.up_pos, True) + touch_event = TouchEvent(TouchManager.swipe, self.down_pos, + self.up_pos, True) touch_event.direction = TouchManager.down return touch_event elif event.button == 1 and self.down_button == 1: touch_event = self.mouse_up(event) return touch_event elif event.button == 3 and self.down_button == 3: - touch_event = TouchEvent(TouchManager.long_click, self.down_pos, self.up_pos, None) + touch_event = TouchEvent(TouchManager.long_click, self.down_pos, + self.up_pos, None) return touch_event else: return None @@ -59,14 +62,18 @@ class TouchManager(): if abs(self.down_pos[0] - self.up_pos[0]) < self.max_move_margin: if abs(self.down_pos[1] - self.up_pos[1]) < self.max_move_margin: if time.time() - TouchManager.long_click_min_time > self.down_time: - return TouchEvent(TouchManager.long_click, self.down_pos, self.up_pos, None) + return TouchEvent(TouchManager.long_click, self.down_pos, + self.up_pos, None) else: - return TouchEvent(TouchManager.click, self.down_pos, self.up_pos, None) + return TouchEvent(TouchManager.click, self.down_pos, + self.up_pos, None) elif abs(self.down_pos[1] - self.up_pos[1]) > self.min_swipe_move: - return TouchEvent(TouchManager.swipe, self.down_pos, self.up_pos, True) + return TouchEvent(TouchManager.swipe, self.down_pos, + self.up_pos, True) elif self.down_pos[1] - self.up_pos[1] < self.max_move_margin: if abs(self.down_pos[0] - self.up_pos[0]) > self.min_swipe_move: - return TouchEvent(TouchManager.swipe, self.down_pos, self.up_pos, False) + return TouchEvent(TouchManager.swipe, self.down_pos, + self.up_pos, False) class TouchEvent(): diff --git a/mopidy_touchscreen/touch_screen.py b/mopidy_touchscreen/touch_screen.py index 9274d6f..a8343df 100644 --- a/mopidy_touchscreen/touch_screen.py +++ b/mopidy_touchscreen/touch_screen.py @@ -15,23 +15,27 @@ logger = logging.getLogger(__name__) class TouchScreen(pykka.ThreadingActor, core.CoreListener): def __init__(self, config, core): super(TouchScreen, self).__init__() - self.backend = pykka.ActorRegistry.get_by_class_name("TouchScreenBackend")[0] + self.backend = \ + pykka.ActorRegistry.get_by_class_name("TouchScreenBackend")[0] self.core = core self.running = False - self.screen_size = (config['touchscreen']['screen_width'], config['touchscreen']['screen_height']) + self.screen_size = (config['touchscreen']['screen_width'], + config['touchscreen']['screen_height']) self.cache_dir = config['touchscreen']['cache_dir'] self.fullscreen = config['touchscreen']['fullscreen'] pygame.init() self.cursor = config['touchscreen']['cursor'] - self.screen_manager = ScreenManager(self.screen_size, self.core, self.backend, self.cache_dir) + self.screen_manager = ScreenManager(self.screen_size, self.core, + self.backend, self.cache_dir) def start_thread(self): clock = pygame.time.Clock() if self.fullscreen: - screen = pygame.display.set_mode(self.screen_size, pygame.FULLSCREEN) + screen = pygame.display.set_mode(self.screen_size, + pygame.FULLSCREEN) else: screen = pygame.display.set_mode(self.screen_size) - pygame.mouse.set_visible(self.cursor) + pygame.mouse.set_visible(self.cursor) while self.running: clock.tick(15) screen.blit(self.screen_manager.update(), (0, 0)) diff --git a/mopidy_touchscreen/touch_text_manager.py b/mopidy_touchscreen/touch_text_manager.py index 3ab183e..8b3aa18 100644 --- a/mopidy_touchscreen/touch_text_manager.py +++ b/mopidy_touchscreen/touch_text_manager.py @@ -3,30 +3,30 @@ import logging logger = logging.getLogger(__name__) + class TouchTextManager(): - - - - def __init__(self,size,base_size): + def __init__(self, size, base_size): self.size = size self.base_size = base_size self.touch_objects = {} self.text_objects = {} def add_object(self, key, text, pos, pos2, color): - self.text_objects[key] = TextItem(text, pos,pos2,color,self.base_size) + self.text_objects[key] = TextItem(text, pos, pos2, color, + self.base_size) def get_object(self, key): return self.text_objects[key] def add_touch_object(self, key, text, pos, color): - self.touch_objects['key'] = TouchAndTextItem(text, pos, color, self.base_size) + self.touch_objects['key'] = TouchAndTextItem(text, pos, color, + self.base_size) - def get_touch_object(self,key): + def get_touch_object(self, key): return self.touch_objects['key'] def add_progressbar(self, key, pos, pos2, max): - self.touch_objects['key'] = Progressbar(pos,pos2,max) + self.touch_objects['key'] = Progressbar(pos, pos2, max) def render(self, surface): for key in self.text_objects: @@ -37,21 +37,19 @@ class TouchTextManager(): class BaseItem(): - - def __init__(self,pos,pos2): + def __init__(self, pos, pos2): self.pos = pos self.pos2 = pos2 - self.size=[0,0] + self.size = [0, 0] self.size[0] = self.pos2[0] - self.pos[0] self.size[1] = self.pos2[1] - self.pos[1] - self.rect = pygame.Rect(0,0,self.size[0],self.size[1]) + self.rect = pygame.Rect(0, 0, self.size[0], self.size[1]) class TextItem(BaseItem): - - def __init__(self, text, pos,pos2, color,text_size): + def __init__(self, text, pos, pos2, color, text_size): if pos2 is not None: - BaseItem.__init__(self,pos,pos2) + BaseItem.__init__(self, pos, pos2) self.text_size = text_size self.font = pygame.font.SysFont("arial", text_size) self.text = text @@ -70,7 +68,8 @@ class TextItem(BaseItem): else: self.fit_vertical = True else: - BaseItem.__init__(self,pos,(pos[0]+self.box.get_rect().width,pos[1]+self.box.get_rect().height)) + BaseItem.__init__(self, pos, (pos[0] + self.box.get_rect().width, + pos[1] + self.box.get_rect().height)) self.fit_horizontal = True self.fit_vertical = True @@ -93,50 +92,49 @@ class TextItem(BaseItem): else: self.step = self.step + 1 - def render(self,surface): + def render(self, surface): if self.fit_horizontal: self.box else: self.box = self.font.render(self.text, True, self.color) - surface.blit(self.box,self.pos,area=self.rect) + surface.blit(self.box, self.pos, area=self.rect) def set_text(self, text): - self.__init__(text,self.pos,self.pos2,self.color,self.text_size) + self.__init__(text, self.pos, self.pos2, self.color, self.text_size) + class TouchObject(BaseItem): - - def __init__(self,pos,pos2): - BaseItem.__init__(self,pos,pos2) + def __init__(self, pos, pos2): + BaseItem.__init__(self, pos, pos2) self.active = False self.background_box = pygame.Surface(self.size) - self.background_box.fill((0,128,255)) + self.background_box.fill((0, 128, 255)) - def render(self,surface): + def render(self, surface): surface.blit(self.background_box, self.pos) class TouchAndTextItem(TouchObject, TextItem): - - def __init__(self, text, pos, color,text_size): - TextItem.__init__(self,text, pos,None, color,text_size) - TouchObject.__init__(self,pos,self.pos2) + def __init__(self, text, pos, color, text_size): + TextItem.__init__(self, text, pos, None, color, text_size) + TouchObject.__init__(self, pos, self.pos2) def update(self): TextItem.update() - def render(self,surface): - TouchObject.render(self,surface) - TextItem.render(self,surface) + def render(self, surface): + TouchObject.render(self, surface) + TextItem.render(self, surface) + class Progressbar(BaseItem): - def __init__(self, pos, pos2, max): BaseItem.__init__(self, pos, pos2) logger.error(pos2) self.value = 0 self.max = max - self.back_color = (0,0,0) - self.main_color = (255,255,255) + self.back_color = (0, 0, 0) + self.main_color = (255, 255, 255) self.surface = pygame.Surface(self.size) self.surface.fill(self.back_color) @@ -150,6 +148,6 @@ class Progressbar(BaseItem): self.value = value self.surface.fill(self.back_color) pos_pixel = value * self.size[0] / self.max - rect = pygame.Rect(0,0,pos_pixel,self.size[1]) + rect = pygame.Rect(0, 0, pos_pixel, self.size[1]) self.surface.fill(self.main_color, rect) diff --git a/mopidy_touchscreen/tracklist.py b/mopidy_touchscreen/tracklist.py index 4eaa2ad..126fdc9 100644 --- a/mopidy_touchscreen/tracklist.py +++ b/mopidy_touchscreen/tracklist.py @@ -7,7 +7,8 @@ class Tracklist(): self.size = size self.base_size = base_size self.manager = manager - self.list_view = ListView((0, self.base_size), (self.size[0], self.size[1] - 2 * self.base_size), + self.list_view = ListView((0, self.base_size), ( + self.size[0], self.size[1] - 2 * self.base_size), self.base_size, manager.fonts['base']) self.tracks = [] self.tracks_strings = [] @@ -23,13 +24,16 @@ class Tracklist(): self.tracks = self.manager.core.tracklist.tl_tracks.get() self.tracks_strings = [] for tl_track in self.tracks: - self.tracks_strings.append(MainScreen.get_track_name(tl_track.track)) + self.tracks_strings.append( + MainScreen.get_track_name(tl_track.track)) self.list_view.set_list(self.tracks_strings) def touch_event(self, touch_event): pos = self.list_view.touch_event(touch_event) if pos is not None: - self.manager.core.playback.change_track(self.tracks[pos], on_error_step=1) + self.manager.core.playback.change_track(self.tracks[pos], + on_error_step=1) def track_started(self, track): - self.list_view.set_selected([self.manager.core.tracklist.index(track).get()]) \ No newline at end of file + self.list_view.set_selected( + [self.manager.core.tracklist.index(track).get()]) \ No newline at end of file diff --git a/setup.py b/setup.py index 877d51b..1477351 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ setup( 'setuptools', 'Mopidy >= 0.18', 'Pykka >= 1.1', - 'pygame' + 'pygame' ], test_suite='nose.collector', tests_require=[