feat(egui): also disable activity buttons if some activity hasn't finished yet

This commit is contained in:
Alain Emilia Anna Zscheile 2024-10-03 16:01:13 +02:00
parent b5c637e68b
commit e26b1c13ed
1 changed files with 16 additions and 12 deletions

View File

@ -124,6 +124,13 @@ impl MenuBar {
egui::Key::Plus, egui::Key::Plus,
)); ));
let workspace_activities_enabled = match &maybe_workspace {
Some(w) => w.maybe_activity.as_ref().map_or(true, |activity| {
matches!(activity.maybe_status(), Some(ActivityStatus::Finished(..)))
}),
None => false,
};
egui::TopBottomPanel::top("menu_bar") egui::TopBottomPanel::top("menu_bar")
.show(ctx, |ui| { .show(ctx, |ui| {
egui::menu::bar(ui, |ui| { egui::menu::bar(ui, |ui| {
@ -157,7 +164,9 @@ impl MenuBar {
ui.separator(); ui.separator();
remove_bands.button(ctx, ui); ui.add_enabled_ui(workspace_activities_enabled, |ui| {
remove_bands.button(ctx, ui);
});
}); });
}); });
@ -214,7 +223,9 @@ impl MenuBar {
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| { ui.add_enabled_ui(maybe_workspace.is_some(), |ui| {
autoroute.button(ctx, ui); ui.add_enabled_ui(workspace_activities_enabled, |ui| {
autoroute.button(ctx, ui);
});
ui.separator(); ui.separator();
ui.menu_button(tr.text("tr-menu-options"), |ui| { ui.menu_button(tr.text("tr-menu-options"), |ui| {
@ -238,7 +249,7 @@ 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| { ui.add_enabled_ui(workspace_activities_enabled, |ui| {
compare_detours.button(ctx, ui); compare_detours.button(ctx, ui);
measure_length.button(ctx, ui); measure_length.button(ctx, ui);
}); });
@ -266,12 +277,6 @@ impl MenuBar {
}); });
} else if quit.consume_key_triggered(ctx, ui) { } else if quit.consume_key_triggered(ctx, ui) {
ctx.send_viewport_cmd(egui::ViewportCommand::Close); ctx.send_viewport_cmd(egui::ViewportCommand::Close);
} else if place_via.consume_key_enabled(ctx, ui, &mut self.is_placing_via) {
// NOTE: intentionally left empty.
//
// when later a full two-phase workflow with disabling of unusable UI elements
// is established, move this back under the maybe_workspace.is_some() condition
// below.
} else if let Some(workspace) = maybe_workspace { } else if let Some(workspace) = maybe_workspace {
if export_session.consume_key_triggered(ctx, ui) { if export_session.consume_key_triggered(ctx, ui) {
let ctx = ui.ctx().clone(); let ctx = ui.ctx().clone();
@ -342,9 +347,8 @@ impl MenuBar {
invoker: &mut workspace.invoker, invoker: &mut workspace.invoker,
}); });
} }
} else if workspace.maybe_activity.as_mut().map_or(true, |activity| { } else if place_via.consume_key_enabled(ctx, ui, &mut self.is_placing_via) {
matches!(activity.maybe_status(), Some(ActivityStatus::Finished(..))) } else if workspace_activities_enabled {
}) {
let mut schedule = |op: fn(Selection, AutorouterOptions) -> Command| { let mut schedule = |op: fn(Selection, AutorouterOptions) -> Command| {
let selection = workspace.overlay.take_selection(); let selection = workspace.overlay.take_selection();
workspace.maybe_activity = workspace.maybe_activity =