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'
|
source_suffix = '.rst'
|
||||||
|
|
||||||
# The encoding of source files.
|
# The encoding of source files.
|
||||||
#source_encoding = 'utf-8-sig'
|
# source_encoding = 'utf-8-sig'
|
||||||
|
|
||||||
# The master toctree document.
|
# The master toctree document.
|
||||||
master_doc = 'index'
|
master_doc = 'index'
|
||||||
@@ -196,7 +196,8 @@ latex_elements = {}
|
|||||||
# (source start file, target name, title,
|
# (source start file, target name, title,
|
||||||
# author, documentclass [howto, manual, or own class]).
|
# author, documentclass [howto, manual, or own class]).
|
||||||
latex_documents = [
|
latex_documents = [
|
||||||
('index', 'Mopidy-Touchscreen.tex', u'Mopidy-Touchscreen Documentation',
|
('index', 'Mopidy-Touchscreen.tex',
|
||||||
|
u'Mopidy-Touchscreen Documentation',
|
||||||
u'9and3r', 'manual'),
|
u'9and3r', 'manual'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import logging
|
import logging
|
||||||
from .screen_objects import ScrollBar, ScreenObjectsManager, TouchAndTextItem
|
from .screen_objects import ScreenObjectsManager, TouchAndTextItem, ScrollBar
|
||||||
from .touch_manager import TouchManager
|
from .touch_manager import TouchManager
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,10 @@ import urllib2
|
|||||||
import json
|
import json
|
||||||
import pygame
|
import pygame
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from .touch_manager import TouchManager
|
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__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -37,7 +39,8 @@ class MainScreen():
|
|||||||
if self.image is not None:
|
if self.image is not None:
|
||||||
screen.blit(self.image, (
|
screen.blit(self.image, (
|
||||||
self.base_size / 2, self.base_size + self.base_size / 2))
|
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.core.playback.time_position.get() / 1000)
|
||||||
self.touch_text_manager.get_touch_object("time_progress").set_text(
|
self.touch_text_manager.get_touch_object("time_progress").set_text(
|
||||||
time.strftime('%M:%S', time.gmtime(
|
time.strftime('%M:%S', time.gmtime(
|
||||||
@@ -75,7 +78,7 @@ class MainScreen():
|
|||||||
(x, self.base_size * 4), (width, self.size[1]))
|
(x, self.base_size * 4), (width, self.size[1]))
|
||||||
self.touch_text_manager.set_object("artist_name", label)
|
self.touch_text_manager.set_object("artist_name", label)
|
||||||
|
|
||||||
#Previous track button
|
# Previous track button
|
||||||
button = TouchAndTextItem(self.fonts['icon'], u"\ue61c",
|
button = TouchAndTextItem(self.fonts['icon'], u"\ue61c",
|
||||||
(0, self.base_size * 6), None)
|
(0, self.base_size * 6), None)
|
||||||
self.touch_text_manager.set_touch_object("previous", button)
|
self.touch_text_manager.set_touch_object("previous", button)
|
||||||
@@ -93,7 +96,8 @@ class MainScreen():
|
|||||||
0)) + "/" + time.strftime('%M:%S',
|
0)) + "/" + time.strftime('%M:%S',
|
||||||
time.gmtime(0)),
|
time.gmtime(0)),
|
||||||
(size_1, self.base_size * 6),
|
(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)
|
track.length / 1000, False)
|
||||||
self.touch_text_manager.set_touch_object("time_progress", progress)
|
self.touch_text_manager.set_touch_object("time_progress", progress)
|
||||||
|
|
||||||
@@ -133,7 +137,8 @@ class MainScreen():
|
|||||||
def download_image(self, artist_index):
|
def download_image(self, artist_index):
|
||||||
if artist_index < len(self.artists):
|
if artist_index < len(self.artists):
|
||||||
try:
|
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(
|
safe_album = urllib.quote_plus(
|
||||||
MainScreen.get_track_album_name(self.track))
|
MainScreen.get_track_album_name(self.track))
|
||||||
url = "http://ws.audioscrobbler.com/2.0/?"
|
url = "http://ws.audioscrobbler.com/2.0/?"
|
||||||
@@ -225,13 +230,15 @@ class MainScreen():
|
|||||||
volume = self.core.playback.volume.get() + 10
|
volume = self.core.playback.volume.get() + 10
|
||||||
if volume > 100:
|
if volume > 100:
|
||||||
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)
|
self.manager.volume_changed(volume)
|
||||||
elif event.direction == TouchManager.down:
|
elif event.direction == TouchManager.down:
|
||||||
volume = self.core.playback.volume.get() - 10
|
volume = self.core.playback.volume.get() - 10
|
||||||
if volume < 0:
|
if volume < 0:
|
||||||
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)
|
self.manager.volume_changed(volume)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
@@ -61,50 +61,50 @@ class ScreenManager():
|
|||||||
self.screen_objects_manager.set_touch_object("repeat", button)
|
self.screen_objects_manager.set_touch_object("repeat", button)
|
||||||
x = button.get_right_pos()
|
x = button.get_right_pos()
|
||||||
|
|
||||||
#Repeat
|
# Single
|
||||||
button = TouchAndTextItem(self.fonts['base'], " 1 ", (x, 0), None)
|
button = TouchAndTextItem(self.fonts['base'], " 1 ", (x, 0), None)
|
||||||
self.screen_objects_manager.set_touch_object("single", button)
|
self.screen_objects_manager.set_touch_object("single", button)
|
||||||
x = button.get_right_pos()
|
x = button.get_right_pos()
|
||||||
|
|
||||||
#Internet
|
# Internet
|
||||||
button = TouchAndTextItem(self.fonts['icon'], u"\ue602 ", (x, 0), None)
|
button = TouchAndTextItem(self.fonts['icon'], u"\ue602 ", (x, 0), None)
|
||||||
self.screen_objects_manager.set_touch_object("internet", button)
|
self.screen_objects_manager.set_touch_object("internet", button)
|
||||||
x = button.get_right_pos()
|
x = button.get_right_pos()
|
||||||
|
|
||||||
#Mute
|
# Mute
|
||||||
button = TouchAndTextItem(self.fonts['icon'], u"\ue61f ", (x, 0), None)
|
button = TouchAndTextItem(self.fonts['icon'], u"\ue61f ", (x, 0), None)
|
||||||
self.screen_objects_manager.set_touch_object("mute", button)
|
self.screen_objects_manager.set_touch_object("mute", button)
|
||||||
x = button.get_right_pos()
|
x = button.get_right_pos()
|
||||||
|
|
||||||
#Volume
|
# Volume
|
||||||
progress = Progressbar(self.fonts['base'], "100", (x, 0),
|
progress = Progressbar(self.fonts['base'], "100", (x, 0),
|
||||||
(self.size[0] - x, self.base_size), 100, True)
|
(self.size[0] - x, self.base_size), 100, True)
|
||||||
self.screen_objects_manager.set_touch_object("volume", progress)
|
self.screen_objects_manager.set_touch_object("volume", progress)
|
||||||
progress.set_value(self.core.playback.volume.get())
|
progress.set_value(self.core.playback.volume.get())
|
||||||
|
|
||||||
#Menu buttons
|
# Menu buttons
|
||||||
|
|
||||||
button_size = (self.size[0] / 5, self.base_size)
|
button_size = (self.size[0] / 5, self.base_size)
|
||||||
|
|
||||||
#Main button
|
# Main button
|
||||||
button = TouchAndTextItem(self.fonts['icon'], u" \ue600",
|
button = TouchAndTextItem(self.fonts['icon'], u" \ue600",
|
||||||
(0, self.base_size * 7), button_size)
|
(0, self.base_size * 7), button_size)
|
||||||
self.screen_objects_manager.set_touch_object("menu_0", button)
|
self.screen_objects_manager.set_touch_object("menu_0", button)
|
||||||
x = button.get_right_pos()
|
x = button.get_right_pos()
|
||||||
|
|
||||||
#Tracklist button
|
# Tracklist button
|
||||||
button = TouchAndTextItem(self.fonts['icon'], u" \ue60d",
|
button = TouchAndTextItem(self.fonts['icon'], u" \ue60d",
|
||||||
(x, self.base_size * 7), button_size)
|
(x, self.base_size * 7), button_size)
|
||||||
self.screen_objects_manager.set_touch_object("menu_1", button)
|
self.screen_objects_manager.set_touch_object("menu_1", button)
|
||||||
x = button.get_right_pos()
|
x = button.get_right_pos()
|
||||||
|
|
||||||
#Library button
|
# Library button
|
||||||
button = TouchAndTextItem(self.fonts['icon'], u" \ue604",
|
button = TouchAndTextItem(self.fonts['icon'], u" \ue604",
|
||||||
(x, self.base_size * 7), button_size)
|
(x, self.base_size * 7), button_size)
|
||||||
self.screen_objects_manager.set_touch_object("menu_2", button)
|
self.screen_objects_manager.set_touch_object("menu_2", button)
|
||||||
x = button.get_right_pos()
|
x = button.get_right_pos()
|
||||||
|
|
||||||
#Playlist button
|
# Playlist button
|
||||||
button = TouchAndTextItem(self.fonts['icon'], u" \ue605",
|
button = TouchAndTextItem(self.fonts['icon'], u" \ue605",
|
||||||
(x, self.base_size * 7), button_size)
|
(x, self.base_size * 7), button_size)
|
||||||
self.screen_objects_manager.set_touch_object("menu_3", button)
|
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)
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user