touch_screen.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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.core = core
  14. self.running = False
  15. #self.screen_size=(320, 240)
  16. self.screen_size=(800, 600)
  17. pygame.init()
  18. self.screen_manager = ScreenManager(self.screen_size,self.core)
  19. def start_thread(self):
  20. clock = pygame.time.Clock()
  21. screen = pygame.display.set_mode(self.screen_size)
  22. while self.running:
  23. clock.tick(30)
  24. screen.blit(self.screen_manager.update(),(0,0))
  25. pygame.display.flip()
  26. for event in pygame.event.get():
  27. self.screen_manager.event(event)
  28. pygame.quit()
  29. def on_start(self):
  30. try:
  31. self.running = True
  32. thread = Thread(target=self.start_thread)
  33. thread.start()
  34. except:
  35. traceback.print_exc()
  36. def on_stop(self):
  37. self.running = False
  38. def track_playback_started(self, tl_track):
  39. try:
  40. self.screen_manager.track_started(tl_track)
  41. except:
  42. traceback.print_exc()