import os import socket import mopidy from .screen_objects import ScreenObjectsManager, TouchAndTextItem class MenuScreen(): def __init__(self, size, base_size, manager): self.size = size self.base_size = base_size self.manager = manager self.ip = None self.screen_objects = ScreenObjectsManager() # Exit mopidy button button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue611", (0, self.base_size), None) self.screen_objects.set_touch_object("exit_icon", button) button = TouchAndTextItem(self.manager.fonts['base'], "Exit Mopidy", (button.get_right_pos(), self.base_size), None) self.screen_objects.set_touch_object("exit", button) # Shutdown button button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue60b", (0, self.base_size * 2), None) self.screen_objects.set_touch_object("shutdown_icon", button) button = TouchAndTextItem(self.manager.fonts['base'], "Shutdown", (button.get_right_pos(), self.base_size * 2), None) self.screen_objects.set_touch_object("shutdown", button) # Restart button button = TouchAndTextItem(self.manager.fonts['icon'], u"\ue609", (0, self.base_size * 3), None) self.screen_objects.set_touch_object("restart_icon", button) button = TouchAndTextItem(self.manager.fonts['base'], "Restart", (button.get_right_pos(), self.base_size * 3), None) self.screen_objects.set_touch_object("restart", button) # IP addres button = TouchAndTextItem(self.manager.fonts['base'], "IP: ", (0, self.base_size * 4), None) self.screen_objects.set_touch_object("ip", button) def update(self, screen): self.screen_objects.render(screen) def touch_event(self, touch_event): clicked = self.screen_objects.get_touch_objects_in_pos( touch_event.current_pos) for key in clicked: if key == "exit_icon" or key == "exit": mopidy.utils.process.exit_process() elif key == "shutdown_icon" or key == "shutdown": if os.system("gksu -- shutdown now -h") != 0: os.system("shutdown now -h") elif key == "restart_icon" or key == "restart": if os.system("gksu -- shutdown -r now") != 0: os.system("shutdown -r now") elif key == "ip": self.check_connection() # Will check internet connection def check_connection(self): try: self.manager.set_connection(False, True) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("8.8.8.8", 80)) self.ip = s.getsockname()[0] s.close() self.screen_objects.get_touch_object("ip").set_text( "IP: " + self.ip, "None") self.manager.set_connection(True, False) except socket.error: s.close() self.ip = None self.screen_objects.get_touch_object("ip").set_text( "IP: No internet", "None") self.manager.set_connection(False, False)