from cursesmenu import * from cursesmenu.items import * import argparse as ap from FlippR_Networking import Networking networking = {} def create_menu(): menu = CursesMenu("FlippR") solenoids = networking.getSolenoids() 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() 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() display_menu = create_displays_submenu(displays) display_menu_item = SubmenuItem("Displays", display_menu, menu) menu.append_item(display_menu_item) lamps = networking.getLamps() lamp_menu = create_lamps_submenu(lamps) lamp_menu_item = SubmenuItem("Lamps", display_menu, menu) menu.append_item(lamp_menu_item) # todo inputs menu.show() 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() argparser.add_argument("input_socket", help="path to the input socket") argparser.add_argument("output_socket", help="path to the output socket") argparser.parse_args() networking = Networking(argparser.output_socket, argparser.input_socket) create_menu()