128 lines
4.1 KiB
Python
Executable File
128 lines
4.1 KiB
Python
Executable File
#!/usr/bin/python3
|
|
from cursesmenu import *
|
|
from cursesmenu.items import *
|
|
import curses
|
|
import argparse as ap
|
|
from FlippR_Networking import Networking
|
|
import signal
|
|
import os
|
|
|
|
networking = "notset"
|
|
|
|
def create_menu():
|
|
menu = CursesMenu("FlippR")
|
|
|
|
solenoids = networking.getSolenoids()["solenoids"]
|
|
sol_menu = create_submenu("Solenoids", solenoids, networking.triggerSolenoid)
|
|
sol_menu_item = SubmenuItem("Solenoids", sol_menu, menu)
|
|
menu.append_item(sol_menu_item)
|
|
|
|
sounds = networking.getSounds()["sounds"]
|
|
sound_menu = create_submenu("Sounds", sounds, networking.playSound)
|
|
sound_menu_item = SubmenuItem("Sounds", sound_menu, menu)
|
|
menu.append_item(sound_menu_item)
|
|
|
|
displays = networking.getDisplays()["displays"]
|
|
display_menu = create_displays_submenu(displays)
|
|
display_menu_item = SubmenuItem("Displays", display_menu, menu)
|
|
menu.append_item(display_menu_item)
|
|
|
|
lamps = networking.getLamps()["lamps"]
|
|
lamp_menu = create_lamps_submenu(lamps)
|
|
lamp_menu_item = SubmenuItem("Lamps", lamp_menu, menu)
|
|
menu.append_item(lamp_menu_item)
|
|
|
|
input_item = FunctionItem("Print Input", print_input)
|
|
menu.append_item(input_item)
|
|
|
|
flippr_item = FunctionItem("Activate Flippers", activate_flipper)
|
|
menu.append_item(flippr_item)
|
|
top_flipper_item = FunctionItem("Activate Top Flippers", activate_top_flipper)
|
|
menu.append_item(top_flipper_item)
|
|
deac_flippr_item = FunctionItem("Deactivate Flippers", deactivate_flipper)
|
|
menu.append_item(deac_flippr_item)
|
|
deac_top_flippr_item = FunctionItem("Deactivate Top Flippers", deactivate_top_flipper)
|
|
menu.append_item(deac_top_flippr_item)
|
|
menu.show()
|
|
|
|
def activate_flipper():
|
|
networking.activateFlipper("Flipper Relay")
|
|
|
|
def activate_top_flipper():
|
|
networking.activateFlipper("Top Flipper Relay")
|
|
|
|
def deactivate_flipper():
|
|
networking.deactivateFlipper("Flipper Relay")
|
|
|
|
def deactivate_top_flipper():
|
|
networking.deactivateFlipper("Top Flipper Relay")
|
|
|
|
def print_input():
|
|
print("Starting to print incoming events:")
|
|
# end_loop_handler = signal.signal(signal.SIGINT, sigint_handler)
|
|
while(True):
|
|
print(networking.getInputEvent())
|
|
# signal.signal(signal.SIGINT, end_loop_handler)
|
|
|
|
def create_lamps_submenu(lamps):
|
|
menu = CursesMenu("Output", "Lamps")
|
|
for lamp in lamps:
|
|
lamp_submenu = create_lamp_submenu(lamp)
|
|
sub_item = SubmenuItem(lamp['name'], lamp_submenu, menu)
|
|
menu.append_item(sub_item)
|
|
return menu
|
|
|
|
def create_lamp_submenu(lamp):
|
|
args = list()
|
|
args.append(lamp['name'])
|
|
menu = CursesMenu("Lamps", lamp['name'])
|
|
activate_item = FunctionItem("Activate", networking.activateLamp, args)
|
|
deactivate_item = FunctionItem("Deactivate", networking.deactivateLamp, args)
|
|
status_item = FunctionItem("Status", print_lamp_status, args)
|
|
menu.append_item(activate_item)
|
|
menu.append_item(deactivate_item)
|
|
menu.append_item(status_item)
|
|
return menu
|
|
|
|
def print_lamp_status(lamp):
|
|
status = networking.lampStatus(lamp)
|
|
print(status)
|
|
|
|
def create_displays_submenu(displays):
|
|
menu = CursesMenu("Output", "Displays")
|
|
for display in displays:
|
|
args = list()
|
|
args.append(display['name'])
|
|
fun_item = FunctionItem(display['name'], write_display_score, args)
|
|
menu.append_item(fun_item)
|
|
return menu
|
|
|
|
def write_display_score(display):
|
|
score = input("Score: ")
|
|
networking.writeDisplayScore(display, score)
|
|
|
|
def create_submenu(title, items, fun):
|
|
menu = CursesMenu("Output", title)
|
|
for item in items:
|
|
args = list()
|
|
args.append(item["name"])
|
|
fun_item = FunctionItem(item["name"], fun, args)
|
|
menu.append_item(fun_item)
|
|
return menu
|
|
|
|
def main():
|
|
argparser = ap.ArgumentParser()
|
|
global networking
|
|
if os.environ["XDG_RUNTIME_DIR"]:
|
|
path = os.environ["XDG_RUNTIME_DIR"]
|
|
else:
|
|
path = "/tmp"
|
|
in_path = path + "/S.flippR_driver.in"
|
|
out_path = path + "/S.flippR_driver.out"
|
|
print("Input path: " + in_path + " output path " + out_path )
|
|
networking = Networking(out_path, in_path)
|
|
print(networking)
|
|
create_menu()
|
|
|
|
main()
|