Files
mopidy-touchscreen/mopidy_touchscreen/touch_screen.py
2014-07-25 12:13:13 +02:00

69 lines
2.1 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)