def __show_all_airplane_types(): ComponentUI.print_header(AirplanesUI.__FRAME_IN_USE_STR) print(TextEditor.format_text("All airplane types", TextEditor.UNDERLINE_TEXT)) user_input = "" while user_input not in AirplanesUI.__NAVIGATION_BAR_OPTIONS: table_header_tuple = ("Type", "Manufacturer", "Seats") airplane_type_list = LogicAPI.get_all_airplane_types() airplanes_type_getfunctions_tuple = ([aircraft_type.get_plane_type() for aircraft_type in airplane_type_list],[aircraft_type.get_manufacturer() for aircraft_type in airplane_type_list],\ [aircraft_type.get_seat_count() for aircraft_type in airplane_type_list]) table_height = len(airplane_type_list) ### - ONLY DISPLAY TABLE - ## ComponentUI.fill_in_table(table_header_tuple, airplanes_type_getfunctions_tuple, False) ComponentUI.fill_window_and_print_action_line(table_height+2) #ComponentUI.print_frame_table_menu(table_header_tuple, airplanes_type_getfunctions_tuple, table_height, ComponentUI.print_header(AirplanesUI.__FRAME_IN_USE_STR),"All airplane types") user_input = ComponentUI.get_user_input() user_input = ComponentUI.remove_brackets(user_input) if not user_input.isdigit() or int(user_input) > table_height: continue table_index = int(user_input)-1 airplane = airplane_type_list[table_index] user_input = AirplanesUI.__show_airplane(airplane) return user_input
def __airplane_type_picker(header="License"): #### PICK AIRPLANE TYPE BY TABLE LIST ### table_header_tuple = ("Type", "Manufacturer", "Seats") airplane_type_list = LogicAPI.get_all_airplane_types() airplanes_type_getfunctions_tuple = ([aircraft_type.get_plane_type() for aircraft_type in airplane_type_list],[aircraft_type.get_manufacturer() for aircraft_type in airplane_type_list],\ [aircraft_type.get_seat_count() for aircraft_type in airplane_type_list]) table_height = len(airplane_type_list) ComponentUI.print_frame_table_menu(table_header_tuple, airplanes_type_getfunctions_tuple, table_height,\ ComponentUI.get_main_options()[2], header) user_input = ComponentUI.get_user_input( "Insert number of desired type: ") user_input = ComponentUI.remove_brackets(user_input) if not user_input.isdigit() or int( user_input) > table_height or not user_input: return None table_index = int(user_input) - 1 chosen_table_line = airplane_type_list[table_index] ### LINE PICKED ## return chosen_table_line.get_plane_type()
def __show_new_airplane_constructor(): option_tuple = ("Name", "Type", "Manufacturer", "Seating capacity") valid_user_inputs = ComponentUI.make_valid_menu_options_tuple(len(option_tuple)) input_message_tuple = ("Insert Name: ", "Insert Type: ", "Insert Manufacturer: ", "Insert Seating capacity: ") user_input_list = [""] * len(option_tuple) user_input_list.append(State.get_airplane_states()[0]) #State default value valid_for_submit_list = [False, False] # only 2 chosse here * len(option_tuple) #list that contains bools if all true then ok to submit user_input = "" while user_input not in AirplanesUI.__NAVIGATION_BAR_OPTIONS: ComponentUI.print_frame_constructor_menu(option_tuple, ComponentUI.get_main_options()[2],\ "New airplane", user_input_list, True, 1000, [2,3], True) user_input = ComponentUI.get_user_input() if not user_input: continue user_input = ComponentUI.remove_brackets(user_input) if user_input in valid_user_inputs: index = int(user_input) - 1 if index == 0: ComponentUI.print_frame_constructor_menu(option_tuple, ComponentUI.get_main_options()[2],\ "New airplane", user_input_list, False, index) user_input = input(input_message_tuple[index]).strip() elif index == 1: #### PICK AIRPLANE TYPE BY TABLE LIST ### table_header_tuple = ("Type", "Manufacturer", "Seats") airplane_type_list = LogicAPI.get_all_airplane_types() airplanes_type_getfunctions_tuple = ([aircraft_type.get_plane_type() for aircraft_type in airplane_type_list],[aircraft_type.get_manufacturer() for aircraft_type in airplane_type_list],\ [aircraft_type.get_seat_count() for aircraft_type in airplane_type_list]) table_height = len(airplane_type_list) ComponentUI.print_frame_table_menu(table_header_tuple, airplanes_type_getfunctions_tuple, table_height,\ ComponentUI.get_main_options()[2], "New airplane") user_input = ComponentUI.get_user_input("Insert number of desired type: ") user_input = ComponentUI.remove_brackets(user_input) if not user_input.isdigit() or int(user_input) > table_height or not user_input: continue table_index = int(user_input) - 1 chosen_table_line = airplane_type_list[table_index] ### LINE PICKED ## user_input_list[1] = chosen_table_line.get_plane_type() user_input_list[2] = chosen_table_line.get_manufacturer() user_input_list[3] = chosen_table_line.get_seat_count() valid_for_submit_list[1] = True #Check if airplane name already exists if index == 0: user_input = user_input.capitalize() if not LogicAPI.is_airplane_name_available(user_input): user_input = user_input + " " + TextEditor.color_text_background("Airplane name already exists, another input is required", TextEditor.RED_BACKGROUND) valid_for_submit_list[0] = False else: valid_for_submit_list[0] = True if index == 0: user_input_list[index] = user_input user_input = "" elif user_input.startswith('s'): if all(valid_for_submit_list): new_airplane = Airplane( user_input_list[0], user_input_list[1], user_input_list[2], user_input_list[3], user_input_list[4] ) LogicAPI.save_new_airplane(new_airplane) user_input = "A new airplane has been registered" break return user_input