-
Notifications
You must be signed in to change notification settings - Fork 24
/
menu_screen.py
94 lines (80 loc) · 3.27 KB
/
menu_screen.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import os
import socket
from base_screen import BaseScreen
from ..graphic_utils import ListView
class MenuScreen(BaseScreen):
def __init__(self, size, base_size, manager, fonts, core):
BaseScreen.__init__(self, size, base_size, manager, fonts)
self.ip = None
self.core = core
self.list = ListView((0, 0), size,
base_size, fonts['base'])
self.list_items = ["Random", "Repeat", "Single", "Consume",
"Exit Mopidy", "Shutdown", "Restart", "IP: "]
self.list.set_list(self.list_items)
def should_update(self):
return self.list.should_update()
def find_update_rects(self, rects):
return self.list_view.find_update_rects(rects)
def update(self, screen, update_type, rects):
update_all = (update_type == BaseScreen.update_all)
self.list.render(screen, update_all, rects)
def touch_event(self, event):
clicked = self.list.touch_event(event)
if clicked is not None:
if clicked == 0:
random = not self.core.tracklist.get_random().get()
self.core.tracklist.set_random(random)
elif clicked == 1:
repeat = not self.core.tracklist.get_repeat().get()
self.core.tracklist.set_repeat(repeat)
elif clicked == 2:
single = not self.core.tracklist.get_single().get()
self.core.tracklist.set_single(single)
elif clicked == 3:
consume = not self.core.tracklist.get_consume().get()
self.core.tracklist.set_consume(consume)
elif clicked == 4:
os.system("pkill mopidy")
elif clicked == 5:
if os.system("gksu -- shutdown now -h") != 0:
os.system("sudo shutdown now -h")
elif clicked == 6:
if os.system("gksu -- shutdown -r now") != 0:
os.system("sudo shutdown -r now")
elif clicked == 7:
self.check_connection()
# Will check internet connection
def check_connection(self):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
self.ip = s.getsockname()[0]
s.close()
self.list_items[7] = "IP: " + self.ip
self.list.set_list(self.list_items)
except socket.error:
s.close()
self.ip = None
self.list_items[7] = "IP: No internet"
self.list.set_list(self.list_items)
def options_changed(self):
active = []
if self.core.tracklist.random.get():
active.append(0)
if self.core.tracklist.repeat.get():
active.append(1)
if self.core.tracklist.single.get():
active.append(2)
if self.core.tracklist.consume.get():
active.append(3)
self.list.set_active(active)
def set_connection(self, connection, loading):
internet = self.touch_text_manager.get_touch_object(
"internet")
if loading:
internet.set_text(u"\ue627", None)
internet.set_active(False)
else:
internet.set_text(u"\ue602", None)
internet.set_active(connection)