mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-04 22:25:39 +00:00
Code cleanup
This commit is contained in:
@@ -37,7 +37,7 @@ templates_path = ['_templates']
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#source_encoding = 'utf-8-sig'
|
||||
# source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
@@ -196,7 +196,8 @@ latex_elements = {}
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
('index', 'Mopidy-Touchscreen.tex', u'Mopidy-Touchscreen Documentation',
|
||||
('index', 'Mopidy-Touchscreen.tex',
|
||||
u'Mopidy-Touchscreen Documentation',
|
||||
u'9and3r', 'manual'),
|
||||
]
|
||||
|
||||
@@ -241,8 +242,8 @@ man_pages = [
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
('index', 'Mopidy-Touchscreen', u'Mopidy-Touchscreen Documentation',
|
||||
u'9and3r', 'Mopidy-Touchscreen', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
u'9and3r', 'Mopidy-Touchscreen', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import logging
|
||||
from .screen_objects import ScrollBar, ScreenObjectsManager, TouchAndTextItem
|
||||
from .screen_objects import ScreenObjectsManager, TouchAndTextItem, ScrollBar
|
||||
from .touch_manager import TouchManager
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
|
||||
@@ -7,8 +7,10 @@ import urllib2
|
||||
import json
|
||||
import pygame
|
||||
import logging
|
||||
|
||||
from .touch_manager import TouchManager
|
||||
from .screen_objects import ScreenObjectsManager, Progressbar, TouchAndTextItem, TextItem
|
||||
from .screen_objects import ScreenObjectsManager, Progressbar, \
|
||||
TouchAndTextItem, TextItem
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -37,7 +39,8 @@ class MainScreen():
|
||||
if self.image is not None:
|
||||
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.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(
|
||||
@@ -75,7 +78,7 @@ class MainScreen():
|
||||
(x, self.base_size * 4), (width, self.size[1]))
|
||||
self.touch_text_manager.set_object("artist_name", label)
|
||||
|
||||
#Previous track button
|
||||
# Previous track button
|
||||
button = TouchAndTextItem(self.fonts['icon'], u"\ue61c",
|
||||
(0, self.base_size * 6), None)
|
||||
self.touch_text_manager.set_touch_object("previous", button)
|
||||
@@ -93,7 +96,8 @@ class MainScreen():
|
||||
0)) + "/" + time.strftime('%M:%S',
|
||||
time.gmtime(0)),
|
||||
(size_1, self.base_size * 6),
|
||||
(self.size[0] - size_1 - size_2, self.base_size),
|
||||
(
|
||||
self.size[0] - size_1 - size_2, self.base_size),
|
||||
track.length / 1000, False)
|
||||
self.touch_text_manager.set_touch_object("time_progress", progress)
|
||||
|
||||
@@ -133,13 +137,14 @@ class MainScreen():
|
||||
def download_image(self, artist_index):
|
||||
if artist_index < len(self.artists):
|
||||
try:
|
||||
safe_artist = urllib.quote_plus(self.artists[artist_index].name)
|
||||
safe_artist = urllib.quote_plus(
|
||||
self.artists[artist_index].name)
|
||||
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"
|
||||
"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']
|
||||
@@ -225,13 +230,15 @@ class MainScreen():
|
||||
volume = self.core.playback.volume.get() + 10
|
||||
if volume > 100:
|
||||
volume = 100
|
||||
self.manager.backend.tell({'action': 'volume', 'value': volume})
|
||||
self.manager.backend.tell(
|
||||
{'action': 'volume', 'value': volume})
|
||||
self.manager.volume_changed(volume)
|
||||
elif event.direction == TouchManager.down:
|
||||
volume = self.core.playback.volume.get() - 10
|
||||
if volume < 0:
|
||||
volume = 0
|
||||
self.manager.backend.tell({'action': 'volume', 'value': volume})
|
||||
self.manager.backend.tell(
|
||||
{'action': 'volume', 'value': volume})
|
||||
self.manager.volume_changed(volume)
|
||||
|
||||
@staticmethod
|
||||
|
||||
@@ -61,50 +61,50 @@ class ScreenManager():
|
||||
self.screen_objects_manager.set_touch_object("repeat", button)
|
||||
x = button.get_right_pos()
|
||||
|
||||
#Repeat
|
||||
# Single
|
||||
button = TouchAndTextItem(self.fonts['base'], " 1 ", (x, 0), None)
|
||||
self.screen_objects_manager.set_touch_object("single", button)
|
||||
x = button.get_right_pos()
|
||||
|
||||
#Internet
|
||||
# Internet
|
||||
button = TouchAndTextItem(self.fonts['icon'], u"\ue602 ", (x, 0), None)
|
||||
self.screen_objects_manager.set_touch_object("internet", button)
|
||||
x = button.get_right_pos()
|
||||
|
||||
#Mute
|
||||
# Mute
|
||||
button = TouchAndTextItem(self.fonts['icon'], u"\ue61f ", (x, 0), None)
|
||||
self.screen_objects_manager.set_touch_object("mute", button)
|
||||
x = button.get_right_pos()
|
||||
|
||||
#Volume
|
||||
# Volume
|
||||
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())
|
||||
|
||||
#Menu buttons
|
||||
# Menu buttons
|
||||
|
||||
button_size = (self.size[0] / 5, self.base_size)
|
||||
|
||||
#Main button
|
||||
# Main button
|
||||
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
|
||||
# Tracklist button
|
||||
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
|
||||
# Library button
|
||||
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
|
||||
# Playlist button
|
||||
button = TouchAndTextItem(self.fonts['icon'], u" \ue605",
|
||||
(x, self.base_size * 7), button_size)
|
||||
self.screen_objects_manager.set_touch_object("menu_3", button)
|
||||
|
||||
@@ -1,153 +0,0 @@
|
||||
import pygame
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TouchTextManager():
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
def render(self, surface):
|
||||
for key in self.text_objects:
|
||||
self.text_objects[key].update()
|
||||
self.text_objects[key].render(surface)
|
||||
for key in self.touch_objects:
|
||||
self.touch_objects[key].render(surface)
|
||||
|
||||
|
||||
class BaseItem():
|
||||
def __init__(self, pos, pos2):
|
||||
self.pos = pos
|
||||
self.pos2 = pos2
|
||||
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])
|
||||
|
||||
|
||||
class TextItem(BaseItem):
|
||||
def __init__(self, text, pos, pos2, color, text_size):
|
||||
if pos2 is not None:
|
||||
BaseItem.__init__(self, pos, pos2)
|
||||
self.text_size = text_size
|
||||
self.font = pygame.font.SysFont("arial", text_size)
|
||||
self.text = text
|
||||
self.color = color
|
||||
self.box = self.font.render(text, True, self.color)
|
||||
if pos2 is not None:
|
||||
if self.pos[0] + self.box.get_rect().width > pos2[0]:
|
||||
self.fit_horizontal = False
|
||||
self.text = self.text + " "
|
||||
self.original_text = self.text
|
||||
self.step = 0
|
||||
else:
|
||||
self.fit_horizontal = True
|
||||
if self.pos[1] + self.box.get_rect().height > pos2[1]:
|
||||
self.fit_vertical = False
|
||||
else:
|
||||
self.fit_vertical = True
|
||||
else:
|
||||
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
|
||||
|
||||
|
||||
def update(self):
|
||||
if not self.fit_horizontal:
|
||||
if self.text == self.original_text:
|
||||
if self.step > 90:
|
||||
self.step = 0
|
||||
new_text = self.text[1:]
|
||||
new_text = new_text + self.text[:1]
|
||||
self.text = new_text
|
||||
else:
|
||||
self.step = self.step + 1
|
||||
elif self.step > 5:
|
||||
self.step = 0
|
||||
new_text = self.text[1:]
|
||||
new_text = new_text + self.text[:1]
|
||||
self.text = new_text
|
||||
else:
|
||||
self.step = self.step + 1
|
||||
|
||||
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)
|
||||
|
||||
def set_text(self, text):
|
||||
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)
|
||||
self.active = False
|
||||
self.background_box = pygame.Surface(self.size)
|
||||
self.background_box.fill((0, 128, 255))
|
||||
|
||||
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 update(self):
|
||||
TextItem.update()
|
||||
|
||||
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.surface = pygame.Surface(self.size)
|
||||
self.surface.fill(self.back_color)
|
||||
|
||||
def update(self):
|
||||
pass
|
||||
|
||||
def render(self, surface):
|
||||
surface.blit(self.surface, self.pos)
|
||||
|
||||
def set_value(self, value):
|
||||
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])
|
||||
self.surface.fill(self.main_color, rect)
|
||||
|
||||
@@ -8,8 +8,8 @@ class Tracklist():
|
||||
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.base_size, manager.fonts['base'])
|
||||
self.size[0], self.size[1] - 2 * self.base_size),
|
||||
self.base_size, manager.fonts['base'])
|
||||
self.tracks = []
|
||||
self.tracks_strings = []
|
||||
self.update_list()
|
||||
@@ -36,4 +36,4 @@ class Tracklist():
|
||||
|
||||
def track_started(self, track):
|
||||
self.list_view.set_selected(
|
||||
[self.manager.core.tracklist.index(track).get()])
|
||||
[self.manager.core.tracklist.index(track).get()])
|
||||
|
||||
Reference in New Issue
Block a user