Files
flippr-code/cli/main.py
Johannes Wendel 250a3c8f14 its late
2019-10-09 23:42:25 +02:00

98 lines
3.1 KiB
Python

from cursesmenu import *
from cursesmenu.items import *
import curses
import argparse as ap
from FlippR_Networking import Networking
import keyboard
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)
#actually not supported by server
# displays = networking.getDisplays()
# 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)
#win = curses.newwin(20,20,20,20)
menu.show()
def print_input():
while(not keyboard.is_pressed('q')):
print(networking.getInputEvent())
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):
menu = CursesMenu("Lamps", lamp['name'])
activate_item = FunctionItem("Activate", networking.activateLamp, lamp['name'])
deactivate_item = FunctionItem("Deactivate", networking.deactivateLamp, lamp['name'])
status_item = FunctionItem("Status", print_lamp_status, lamp['name'])
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:
fun_item = FunctionItem(display["name"], write_display_score, args=display["name"])
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:
fun_item = FunctionItem(item["name"], fun, args=item["name"])
menu.append_item(fun_item)
return menu
def main():
argparser = ap.ArgumentParser()
global networking
if os.getenv("XDG_RUNTIME_DIR"):
path = os.getenv("XDG_RUNTIME_DIR")
else:
path = "/tmp/"
in_path = path + "/S.flippR_driver.in"
out_path = path + "/S.flippR_driver.out"
networking = Networking(out_path, in_path)
print(networking)
create_menu()
main()