mirror of
https://github.com/Febbweiss/mopidy-touchscreen.git
synced 2026-03-05 06:35:43 +00:00
94 lines
3.8 KiB
Python
94 lines
3.8 KiB
Python
import os
|
|
import socket
|
|
import mopidy
|
|
|
|
from .screen_objects import ScreenObjectsManager, TouchAndTextItem
|
|
from .input_manager import InputManager
|
|
|
|
|
|
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, update_all):
|
|
self.screen_objects.render(screen)
|
|
|
|
def touch_event(self, event):
|
|
if event.type == InputManager.click:
|
|
clicked = self.screen_objects.get_touch_objects_in_pos(
|
|
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)
|