menu_screen.py 3.8 KB

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