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);
ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
export_session.button(ctx, 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,6 +147,7 @@ impl MenuBar {
}); });
ui.menu_button(tr.text("tr-menu-edit"), |ui| { ui.menu_button(tr.text("tr-menu-edit"), |ui| {
ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
undo.button(ctx, ui); undo.button(ctx, ui);
redo.button(ctx, ui); redo.button(ctx, ui);
@ -156,6 +159,7 @@ impl MenuBar {
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| {
ui.toggle_value( ui.toggle_value(
@ -165,11 +169,15 @@ impl MenuBar {
ui.separator(); ui.separator();
ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
ui.checkbox( ui.checkbox(
&mut self.show_ratsnest, &mut self.show_ratsnest,
tr.text("tr-menu-view-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_navmesh,
tr.text("tr-menu-view-show-navmesh"),
);
ui.checkbox(&mut self.show_bboxes, tr.text("tr-menu-view-show-bboxes")); ui.checkbox(&mut self.show_bboxes, tr.text("tr-menu-view-show-bboxes"));
ui.checkbox( ui.checkbox(
&mut self.show_origin_destination, &mut self.show_origin_destination,
@ -182,6 +190,7 @@ impl MenuBar {
&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,11 +201,19 @@ 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| {
ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
place_via.toggle_widget(ctx, ui, &mut self.is_placing_via); 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| {
ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
autoroute.button(ctx, ui); autoroute.button(ctx, ui);
ui.separator(); ui.separator();
@ -218,11 +235,14 @@ impl MenuBar {
); );
}); });
}); });
});
ui.menu_button(tr.text("tr-menu-inspect"), |ui| { ui.menu_button(tr.text("tr-menu-inspect"), |ui| {
ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
compare_detours.button(ctx, ui); compare_detours.button(ctx, ui);
measure_length.button(ctx, ui); measure_length.button(ctx, ui);
}); });
});
ui.separator(); ui.separator();