Refactor upper_menu to have sub functions for menu structure

This commit is contained in:
Emilia Allison 2025-11-23 19:29:20 -05:00
parent e855732901
commit 35eba6f906
Signed by: emilia
GPG Key ID: FEC1CE6360EEC9A8
1 changed files with 105 additions and 54 deletions

View File

@ -19,66 +19,66 @@ pub fn render_menu_bar(
) { ) {
egui::MenuBar::new().ui(ui, |ui| { egui::MenuBar::new().ui(ui, |ui| {
ui.menu_button("File", |ui| { ui.menu_button("File", |ui| {
if ui.button("New Plate").clicked() { render_file_menu(
crate::modals::open_new_plate_modal(modal_state); ui,
} main_state,
ui.menu_button("Export", |ui| { modal_state,
render_export_menu( current_transfer_state,
ui, main_window_state,
main_state, );
modal_state,
current_transfer_state,
main_window_state,
);
});
ui.menu_button("Import", |ui| {
if ui.button("Import from JSON").clicked() {}
if ui.button("Import transfer from CSV").clicked() {}
});
if ui.button("Reset All").clicked() {
*main_state = MainState::default();
*current_transfer_state = CurrentTransferState::default();
}
if ui.button("Dump State").clicked() {
log::warn!("{:?}\n{:?}", main_state, current_transfer_state);
}
}); });
ui.menu_button("Options", |ui| { ui.menu_button("Options", |ui| {
ui.menu_button("Styles", |ui| { render_options_menu(
ui.toggle_value( ui,
&mut main_window_state.plate_display_options.show_transfer_hashes, main_state,
"Toggle transfer hashes", modal_state,
); current_transfer_state,
ui.toggle_value( main_window_state,
&mut main_window_state.plate_display_options.show_volume_heatmap, );
"Toggle volume heatmap",
);
ui.toggle_value(
&mut main_window_state.plate_display_options.show_coordinates,
"Toggle coordinate highlighting",
);
});
ui.menu_button("Exports", |ui| {
ui.menu_button("CSV Export Type", |ui| {
ui.radio_value(
&mut main_window_state.csv_export_type,
CsvExportType::Normal,
format!("{}", CsvExportType::Normal),
);
ui.radio_value(
&mut main_window_state.csv_export_type,
CsvExportType::EchoClient,
format!("{}", CsvExportType::EchoClient),
);
});
});
ui.menu_button("Windows", |ui| {
ui.toggle_value(&mut main_window_state.show_side_panel, "Toggle side panel");
});
}); });
}); });
} }
fn render_file_menu(
ui: &mut egui::Ui,
main_state: &mut MainState,
modal_state: &mut ModalState,
current_transfer_state: &mut CurrentTransferState,
main_window_state: &mut MainWindowState,
) {
if ui.button("New Plate").clicked() {
crate::modals::open_new_plate_modal(modal_state);
}
ui.menu_button("Export", |ui| {
render_export_menu(
ui,
main_state,
modal_state,
current_transfer_state,
main_window_state,
);
});
ui.menu_button("Import", |ui| {
render_import_menu(
ui,
main_state,
modal_state,
current_transfer_state,
main_window_state,
);
});
if ui.button("Reset All").clicked() {
*main_state = MainState::default();
*current_transfer_state = CurrentTransferState::default();
}
if ui.button("Dump State").clicked() {
log::warn!("{:?}\n{:?}", main_state, current_transfer_state);
}
}
fn render_export_menu( fn render_export_menu(
ui: &mut egui::Ui, ui: &mut egui::Ui,
main_state: &mut MainState, main_state: &mut MainState,
@ -137,3 +137,54 @@ fn render_export_menu(
} }
} }
} }
fn render_import_menu(
ui: &mut egui::Ui,
_main_state: &mut MainState,
_modal_state: &mut ModalState,
_current_transfer_state: &mut CurrentTransferState,
_main_window_state: &mut MainWindowState,
) {
if ui.button("Import from JSON").clicked() {}
if ui.button("Import transfer from CSV").clicked() {}
}
fn render_options_menu(
ui: &mut egui::Ui,
_main_state: &mut MainState,
_modal_state: &mut ModalState,
_current_transfer_state: &mut CurrentTransferState,
main_window_state: &mut MainWindowState,
) {
ui.menu_button("Styles", |ui| {
ui.toggle_value(
&mut main_window_state.plate_display_options.show_transfer_hashes,
"Toggle transfer hashes",
);
ui.toggle_value(
&mut main_window_state.plate_display_options.show_volume_heatmap,
"Toggle volume heatmap",
);
ui.toggle_value(
&mut main_window_state.plate_display_options.show_coordinates,
"Toggle coordinate highlighting",
);
});
ui.menu_button("Exports", |ui| {
ui.menu_button("CSV Export Type", |ui| {
ui.radio_value(
&mut main_window_state.csv_export_type,
CsvExportType::Normal,
format!("{}", CsvExportType::Normal),
);
ui.radio_value(
&mut main_window_state.csv_export_type,
CsvExportType::EchoClient,
format!("{}", CsvExportType::EchoClient),
);
});
});
ui.menu_button("Windows", |ui| {
ui.toggle_value(&mut main_window_state.show_side_panel, "Toggle side panel");
});
}