use cushy::value::{Destination, Dynamic, Source}; use cushy::widget::MakeWidget; use cushy::widgets::button::ButtonKind; use cushy::Run; fn main() -> cushy::Result { let clicked_label = Dynamic::new(String::from("Click a Button")); let default_is_outline = Dynamic::new(false); let default_button_style = default_is_outline.map_each(|is_outline| { if *is_outline { ButtonKind::Outline } else { ButtonKind::Solid } }); clicked_label .clone() .and( "Normal Button" .into_button() .on_click( clicked_label.with_clone(|label| { move |_| label.set(String::from("Clicked Normal Button")) }), ) .and( "Outline Button" .into_button() .on_click(clicked_label.with_clone(|label| { move |_| label.set(String::from("Clicked Outline Button")) })) .kind(ButtonKind::Outline), ) .and( "Transparent Button" .into_button() .on_click(clicked_label.with_clone(|label| { move |_| label.set(String::from("Clicked Transparent Button")) })) .kind(ButtonKind::Transparent), ) .and( "Default Button" .into_button() .on_click(clicked_label.with_clone(|label| { move |_| label.set(String::from("Clicked Default Button")) })) .kind(default_button_style) .into_default(), ) .and("Set Default to Outline".into_checkbox(default_is_outline)) .into_columns(), ) .into_rows() .centered() .run() }