egui/MenuBar: grey out workspace-tied commands when no workspace is loaded

This commit is contained in:
Alain Emilia Anna Zscheile 2024-10-03 15:26:09 +02:00
parent e66fbe292b
commit b5c637e68b
1 changed files with 66 additions and 46 deletions

View File

@ -129,12 +129,14 @@ impl MenuBar {
egui::menu::bar(ui, |ui| { egui::menu::bar(ui, |ui| {
ui.menu_button(tr.text("tr-menu-file"), |ui| { ui.menu_button(tr.text("tr-menu-file"), |ui| {
open_design.button(ctx, ui); open_design.button(ctx, ui);
export_session.button(ctx, ui); ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
export_session.button(ctx, ui);
ui.separator(); ui.separator();
import_history.button(ctx, ui); import_history.button(ctx, ui);
export_history.button(ctx, ui); export_history.button(ctx, ui);
});
ui.separator(); ui.separator();
@ -145,16 +147,18 @@ impl MenuBar {
}); });
ui.menu_button(tr.text("tr-menu-edit"), |ui| { ui.menu_button(tr.text("tr-menu-edit"), |ui| {
undo.button(ctx, ui); ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
redo.button(ctx, ui); undo.button(ctx, ui);
redo.button(ctx, ui);
ui.separator(); ui.separator();
abort.button(ctx, ui); abort.button(ctx, ui);
ui.separator(); ui.separator();
remove_bands.button(ctx, ui); remove_bands.button(ctx, ui);
});
}); });
ui.menu_button(tr.text("tr-menu-view"), |ui| { ui.menu_button(tr.text("tr-menu-view"), |ui| {
@ -165,23 +169,28 @@ impl MenuBar {
ui.separator(); ui.separator();
ui.checkbox( ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
&mut self.show_ratsnest, ui.checkbox(
tr.text("tr-menu-view-show-ratsnest"), &mut self.show_ratsnest,
); tr.text("tr-menu-view-show-ratsnest"),
ui.checkbox(&mut self.show_navmesh, tr.text("tr-menu-view-show-navmesh")); );
ui.checkbox(&mut self.show_bboxes, tr.text("tr-menu-view-show-bboxes")); ui.checkbox(
ui.checkbox( &mut self.show_navmesh,
&mut self.show_origin_destination, tr.text("tr-menu-view-show-navmesh"),
tr.text("tr-menu-view-show-origin-destination"), );
); ui.checkbox(&mut self.show_bboxes, tr.text("tr-menu-view-show-bboxes"));
ui.checkbox(
&mut self.show_origin_destination,
tr.text("tr-menu-view-show-origin-destination"),
);
ui.separator(); ui.separator();
ui.checkbox( ui.checkbox(
&mut self.show_layer_manager, &mut self.show_layer_manager,
tr.text("tr-menu-view-show-layer-manager"), tr.text("tr-menu-view-show-layer-manager"),
); );
});
ui.separator(); ui.separator();
@ -192,36 +201,47 @@ impl MenuBar {
); );
}); });
// NOTE: we could disable the entire range of menus below
// when no workspace is loaded, but that would disrupt "hover-scrolling"
// between menus inside of the conditionally enabled section and
// those outside...
ui.menu_button(tr.text("tr-menu-place"), |ui| { ui.menu_button(tr.text("tr-menu-place"), |ui| {
place_via.toggle_widget(ctx, ui, &mut self.is_placing_via); ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
place_via.toggle_widget(ctx, ui, &mut self.is_placing_via);
});
}); });
ui.menu_button(tr.text("tr-menu-route"), |ui| { ui.menu_button(tr.text("tr-menu-route"), |ui| {
autoroute.button(ctx, ui); ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
ui.separator(); autoroute.button(ctx, ui);
ui.separator();
ui.menu_button(tr.text("tr-menu-options"), |ui| { ui.menu_button(tr.text("tr-menu-options"), |ui| {
ui.checkbox( ui.checkbox(
&mut self.autorouter_options.presort_by_pairwise_detours, &mut self.autorouter_options.presort_by_pairwise_detours,
tr.text("tr-menu-route-options-presort-by-pairwise-detours"), tr.text("tr-menu-route-options-presort-by-pairwise-detours"),
); );
ui.checkbox( ui.checkbox(
&mut self &mut self
.autorouter_options .autorouter_options
.router_options .router_options
.squeeze_through_under_bands, .squeeze_through_under_bands,
tr.text("tr-menu-route-options-squeeze-through-under-bands"), tr.text("tr-menu-route-options-squeeze-through-under-bands"),
); );
ui.checkbox( ui.checkbox(
&mut self.autorouter_options.router_options.wrap_around_bands, &mut self.autorouter_options.router_options.wrap_around_bands,
tr.text("tr-menu-route-options-wrap-around-bands"), tr.text("tr-menu-route-options-wrap-around-bands"),
); );
});
}); });
}); });
ui.menu_button(tr.text("tr-menu-inspect"), |ui| { ui.menu_button(tr.text("tr-menu-inspect"), |ui| {
compare_detours.button(ctx, ui); ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
measure_length.button(ctx, ui); compare_detours.button(ctx, ui);
measure_length.button(ctx, ui);
});
}); });
ui.separator(); ui.separator();