mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-05 06:35:43 +00:00
75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
import pykka
|
|
import traceback
|
|
import logging
|
|
from threading import Thread
|
|
import pygame
|
|
from .screen_manager import ScreenManager
|
|
from pygame.locals import *
|
|
|
|
from mopidy import core
|
|
|
|
|
|
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]
|
|
logger.error(self.backend)
|
|
self.core = core
|
|
self.running = False
|
|
#self.screen_size=(320, 240)
|
|
try:
|
|
self.screen_size = (config['touchscreen']['screen_width'],config['touchscreen']['screen_height'])
|
|
except KeyError:
|
|
self.screen_size=(320, 240)
|
|
logger.warning("Screen size not defined. Using default size: " + str(self.screen_size))
|
|
pygame.init()
|
|
try:
|
|
pygame.mouse.set_visible(config['touchscreen']['cursor'])
|
|
except KeyError:
|
|
pygame.mouse.set_visible(True)
|
|
self.screen_manager = ScreenManager(self.screen_size,self.core, self.backend)
|
|
|
|
def start_thread(self):
|
|
clock = pygame.time.Clock()
|
|
screen = pygame.display.set_mode(self.screen_size)
|
|
while self.running:
|
|
clock.tick(15)
|
|
screen.blit(self.screen_manager.update(),(0,0))
|
|
pygame.display.flip()
|
|
for event in pygame.event.get():
|
|
self.screen_manager.event(event)
|
|
pygame.quit()
|
|
|
|
def on_start(self):
|
|
try:
|
|
self.running = True
|
|
thread = Thread(target=self.start_thread)
|
|
thread.start()
|
|
except:
|
|
traceback.print_exc()
|
|
|
|
def on_stop(self):
|
|
self.running = False
|
|
|
|
def track_playback_started(self, tl_track):
|
|
try:
|
|
self.screen_manager.track_started(tl_track)
|
|
except:
|
|
traceback.print_exc()
|
|
|
|
def volume_changed(self, volume):
|
|
self.screen_manager.volume_changed(volume)
|
|
|
|
def playback_state_changed(self,old_state, new_state):
|
|
self.screen_manager.playback_state_changed(old_state, new_state)
|
|
|
|
def tracklist_changed(self):
|
|
try:
|
|
self.screen_manager.tracklist_changed()
|
|
except:
|
|
traceback.print_exc()
|