def choose(self, items: typing.Iterable, message: str = None): """Let user pick from list, returns picked item.""" options = {str(item): item for item in items} message = "Choose an item:\n" if message is None else message menu = Menu(message, options) item_str, item = menu.get_input() return item
def operation_result(self, result_message, undo_op, continue_op): result_menu = Menu("Operation result:\n" + result_message, { "Undo": undo_op, "Continue": continue_op }) key, operation = result_menu.get_input() return operation
def search_result_choice(self, results, next, back, order_field=None, message=""): """Get user choice from search results.""" options = [("Back", back)] + [(str(item), item) for item in results] menu_msg = "" if order_field == "sports": menu_msg = "Ordered based on the first alphabetically ordered " menu_msg += "sport users are registered for. \nUsers not " menu_msg += "registered for any sports are hidden.\n" if message: menu_msg += message else: menu_msg += "Search results:" menu = Menu(menu_msg, options) string, item = menu.get_input() if string == "Back": return None, item return item, next