use druid::widget::{Checkbox, Either, Flex, Label, Slider};
use druid::{AppLauncher, Data, Lens, LocalizedString, Widget, WidgetExt, WindowDesc};
#[derive(Clone, Default, Data, Lens)]
struct AppState {
which: bool,
value: f64,
}
fn main() {
let main_window = WindowDesc::new(ui_builder).title(
LocalizedString::new("either-demo-window-title")
.with_placeholder("Switcheroo")
.with_arg("view", |data: &AppState, _env| (data.which as u8).into()),
);
let data = AppState::default();
AppLauncher::with_window(main_window)
.use_simple_logger()
.launch(data)
.expect("launch failed");
}
fn ui_builder() -> impl Widget<AppState> {
let label = Label::new("Click to reveal slider");
let mut col = Flex::column();
col.add_child(
Checkbox::new("Toggle slider")
.lens(AppState::which)
.padding(5.0),
);
let either = Either::new(
|data, _env| data.which,
Slider::new().lens(AppState::value).padding(5.0),
label.padding(5.0),
);
col.add_child(either);
col
}