def handleSingleSelectTable(screen, title, dataList, filterRegex, choice=0, caption=""): itemSelected = False while True: UI.clearScreen(screen) filteredTable = Tables.filterTable(dataList, filterRegex) if (choice == 0): # Filter row UI.printTable(screen, title, filteredTable, 0, curses.LINES, filterRegex) screen.addstr(caption) choice, filterRegex = Tables.handleFilterField( screen, filterRegex, choice, filteredTable) elif (choice > 0 and choice <= len(filteredTable)): # Item rows UI.printTable(screen, title, filteredTable, 0, 0, filterRegex, [choice - 1], choice - 1) screen.addstr(caption) choice, itemSelected = Tables.handleItemRows( screen, choice, filteredTable) if (itemSelected): return filteredTable[choice - 1] if choice == -1: break return None
def exitApp(screen): UI.clearScreen(screen) state.saveObjects(screen) curses.nocbreak() screen.keypad(False) curses.echo() deinitializeScreen() exit()
def addNewDrink(screen, name="", drink_type="", recipe=None): UI.clearScreen(screen) curses.nocbreak() screen.keypad(False) curses.echo() if not name: name = UI.cursedInput("Enter name of drink: ") if not drink_type: drink_type = UI.cursedInput("Enter type of drink: ") if not recipe: recipe = UI.cursedInput("Enter recipe of drink (keep it short):") _drinks.append(Drink(name, drink_type, recipe)) curses.cbreak() screen.keypad(True) curses.noecho()
def addNewPerson(screen, name="", team="", favDrink=None, PMUDrink="N/A"): UI.clearScreen(screen) curses.nocbreak() screen.keypad(False) curses.echo() if not name: name = UI.cursedInput(screen, "Enter name of person: ") if not team: team = UI.cursedInput(screen, "Enter name of team person is in: ") if not favDrink: if State._drinks != []: favDrink = tables.handleSingleSelectTable( screen, "Drinks", State._drinks, "", 0, "Select this persons favorite drink") elif favDrink == None: UI.clearScreen(screen) screen.addstr("No drinks found. You can assign drink later...") screen.getch() State._people.append(Person(name, team, favDrink, PMUDrink))
def handleMultiSelectTable(screen, title, dataList, filterRegex, choice=0): itemSelected = False selectedItems = [] while True: UI.clearScreen(screen) selectedItemIDs = [] filteredTable = Tables.filterTable(dataList, filterRegex) for index, item in enumerate(filteredTable): if item in selectedItems: selectedItemIDs.append(index) if (choice == 0): # Filter row UI.printTable(screen, title, filteredTable, 0, curses.LINES, filterRegex, selectedItemIDs, choice - 1, curses.A_DIM, curses.A_NORMAL) choice, filterRegex = Tables.handleFilterField( screen, filterRegex, choice, filteredTable) elif (choice > 0 and choice <= len(filteredTable)): # Item rows UI.printTable(screen, title, filteredTable, 0, curses.LINES, filterRegex, selectedItemIDs, choice - 1, curses.A_DIM, curses.A_NORMAL, curses.A_REVERSE) choice, itemSelected = Tables.handleItemRows( screen, choice, filteredTable) if (itemSelected): if (filteredTable[choice - 1] in selectedItems): selectedItems.remove(filteredTable[choice - 1]) selectedItemIDs.remove(choice - 1) else: selectedItems.append(filteredTable[choice - 1]) selectedItemIDs.append(choice - 1) itemSelected = False if (choice == -1): break return selectedItems