menu_screen.py 3.8 KB

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