-
Notifications
You must be signed in to change notification settings - Fork 13
/
main_menu.py
75 lines (65 loc) · 2.38 KB
/
main_menu.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
import os
import socket
from .on_off_configuration import OnOffConfiguration
from .playlist_menu import PlaylistMenu
class MainMenu():
def __init__(self, frontend):
self.current = 0
self.fronted = frontend
self.main_menu = False
self.elements = [PlaylistMenu(frontend), 'exit mopidy']
self.elements.append(OnOffConfiguration('random'))
self.elements.append('shutdown')
self.elements.append('reboot')
self.elements.append('check ip')
def reset(self):
self.current = 0
self.say_current_element()
self.main_menu = True
def input(self, input_event):
if self.main_menu:
if input_event['key'] == 'next':
self.change_current(1)
elif input_event['key'] == 'previous':
self.change_current(-1)
elif input_event['key'] == 'main':
if isinstance(self.elements[self.current], str):
self.item_selected(self.elements[self.current])
else:
self.main_menu = False
self.elements[self.current].reset()
else:
self.elements[self.current].input(input_event)
def item_selected(self, item):
if item == 'exit mopidy':
os.system("pkill mopidy")
elif item == 'shutdown':
os.system("shutdown now -h")
elif item == 'reboot':
os.system("shutdown -r now")
elif item == 'check ip':
self.check_ip()
def change_current(self, move):
self.current += move
if self.current < 0:
self.current = len(self.elements) - 1
elif self.current >= len(self.elements):
self.current = 0
self.say_current_element()
def say_current_element(self):
self.fronted.tts.speak_text(str(self.elements[self.current]))
def repeat(self):
if self.main_menu:
self.say_current_element()
else:
self.elements[self.current].repeat()
def check_ip(self):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
self.fronted.tts.speak_text("Your IP is: " + ip)
except socket.error:
s.close()
self.fronted.tts.speak_text("No internet connection found")