touch_screen.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import pykka
  2. import traceback
  3. import logging
  4. from threading import Thread
  5. import pygame
  6. from .screen_manager import ScreenManager
  7. from pygame.locals import *
  8. from mopidy import core
  9. logger = logging.getLogger(__name__)
  10. class TouchScreen(pykka.ThreadingActor, core.CoreListener):
  11. def __init__(self, config, core):
  12. super(TouchScreen, self).__init__()
  13. self.backend = pykka.ActorRegistry.get_by_class_name("TouchScreenBackend")[0]
  14. logger.error(self.backend)
  15. self.core = core
  16. self.running = False
  17. #self.screen_size=(320, 240)
  18. self.screen_size=(800, 600)
  19. pygame.init()
  20. self.screen_manager = ScreenManager(self.screen_size,self.core, self.backend)
  21. def start_thread(self):
  22. clock = pygame.time.Clock()
  23. screen = pygame.display.set_mode(self.screen_size)
  24. while self.running:
  25. clock.tick(15)
  26. screen.blit(self.screen_manager.update(),(0,0))
  27. pygame.display.flip()
  28. for event in pygame.event.get():
  29. self.screen_manager.event(event)
  30. pygame.quit()
  31. def on_start(self):
  32. try:
  33. self.running = True
  34. thread = Thread(target=self.start_thread)
  35. thread.start()
  36. except:
  37. traceback.print_exc()
  38. def on_stop(self):
  39. self.running = False
  40. def track_playback_started(self, tl_track):
  41. try:
  42. self.screen_manager.track_started(tl_track)
  43. except:
  44. traceback.print_exc()
  45. def volume_changed(self, volume):
  46. self.screen_manager.volume_changed(volume)
  47. def playback_state_changed(self,old_state, new_state):
  48. self.screen_manager.playback_state_changed(old_state, new_state)