menu_screen.py 3.4 KB

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