menu_screen.py 3.5 KB

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