use egui::Response;
pub fn button(ui: &mut egui::Ui, word: &str, enabled: bool, help: &str) -> Response {
let seat = ui.add_enabled(enabled, egui::Button::new(word));
super::told(seat, help)
}
pub fn seat(ui: &mut egui::Ui, chosen: bool, word: &str, help: &str) -> Response {
let seat = ui.selectable_label(chosen, word);
super::told(seat, help)
}
pub fn toggle(ui: &mut egui::Ui, on: &mut bool, word: &str, help: &str) -> Response {
let seat = ui.checkbox(on, word);
super::told(seat, help)
}
#[cfg(test)]
mod tests {
use crate::paint_probe::frame::Window;
use crate::test_support::window::click;
fn pressed(label: &str) -> (bool, bool, bool, bool) {
let window = Window::sized(300.0, 100.0);
let mut took = (false, false, false, false);
click(&window, label, |ctx| {
egui::CentralPanel::default().show(ctx, |ui| {
took.0 |= super::button(ui, "go", true, "goes").clicked();
took.1 |= super::button(ui, "dead", false, "would go").clicked();
took.2 |= super::seat(ui, false, "one", "picks one").clicked();
let mut on = false;
took.3 |= super::toggle(ui, &mut on, "lane", "toggles").clicked();
});
});
took
}
#[test]
fn a_button_and_a_seat_take_a_click_and_a_dead_button_does_not() {
assert_eq!(pressed("go"), (true, false, false, false));
assert_eq!(pressed("dead"), (false, false, false, false));
assert_eq!(pressed("one"), (false, false, true, false));
assert_eq!(pressed("lane"), (false, false, false, true));
}
}