menu_screen.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from .list_view import ListView
  2. from .screen_objects import *
  3. import mopidy
  4. import os
  5. import socket
  6. class MenuScreen():
  7. def __init__(self, size, base_size, manager):
  8. self.size = size
  9. self.base_size = base_size
  10. self.manager = manager
  11. self.ip = None
  12. self.screen_objects = ScreenObjectsManager()
  13. #Exit mopidy button
  14. button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue611", (0, self.base_size), None)
  15. self.screen_objects.set_touch_object("exit_icon", button)
  16. button = TouchAndTextItem(self.manager.fonts['base'], "Exit Mopidy", (button.get_right_pos(), self.base_size), None)
  17. self.screen_objects.set_touch_object("exit", button)
  18. #Shutdown button
  19. button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue60b", (0, self.base_size * 2), None)
  20. self.screen_objects.set_touch_object("shutdown_icon", button)
  21. button = TouchAndTextItem(self.manager.fonts['base'], "Shutdown", (button.get_right_pos(), self.base_size * 2), None)
  22. self.screen_objects.set_touch_object("shutdown", button)
  23. #Restart button
  24. button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue609", (0, self.base_size * 3), None)
  25. self.screen_objects.set_touch_object("restart_icon", button)
  26. button = TouchAndTextItem(self.manager.fonts['base'], "Restart", (button.get_right_pos(), self.base_size * 3), None)
  27. self.screen_objects.set_touch_object("restart", button)
  28. #IP addres
  29. button = TouchAndTextItem(self.manager.fonts['base'], "IP: ", (0, self.base_size * 4), None)
  30. self.screen_objects.set_touch_object("ip", button)
  31. #self.list_view = ListView((0,self.base_size),(self.size[0],self.size[1]-2*self.base_size), self.base_size, manager.fonts)
  32. #self.list_view.set_list(["Exit mopidy", "Shutdown", "Restart"])
  33. def update(self, screen):
  34. self.screen_objects.render(screen)
  35. #self.list_view.render(screen)
  36. def touch_event(self, touch_event):
  37. #clicked = self.list_view.touch_event(touch_event)
  38. clicked = self.screen_objects.get_touch_objects_in_pos(touch_event.current_pos)
  39. for key in clicked:
  40. if key == "exit_icon" or key == "exit":
  41. mopidy.utils.process.exit_process()
  42. elif key == "shutdown_icon" or key == "shutdown":
  43. os.system("shutdown now -h")
  44. elif key == "ip":
  45. self.check_connection()
  46. def check_connection(self):
  47. try:
  48. self.manager.set_connection(False, True)
  49. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  50. s.connect(("8.8.8.8", 80))
  51. self.ip = s.getsockname()[0]
  52. s.close()
  53. self.screen_objects.get_touch_object("ip").set_text("IP: " + self.ip, "None")
  54. self.manager.set_connection(True, False)
  55. except socket.error:
  56. s.close()
  57. self.ip = None
  58. self.screen_objects.get_touch_object("ip").set_text("IP: No internet", "None")
  59. self.manager.set_connection(False, False)