diff options
Diffstat (limited to 'examples/counter/src')
-rw-r--r-- | examples/counter/src/main.rs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/examples/counter/src/main.rs b/examples/counter/src/main.rs new file mode 100644 index 00000000..bde0ea94 --- /dev/null +++ b/examples/counter/src/main.rs @@ -0,0 +1,57 @@ +use iced::{button, Align, Button, Column, Element, Sandbox, Settings, Text}; + +pub fn main() { + Counter::run(Settings::default()) +} + +#[derive(Default)] +struct Counter { + value: i32, + increment_button: button::State, + decrement_button: button::State, +} + +#[derive(Debug, Clone, Copy)] +enum Message { + IncrementPressed, + DecrementPressed, +} + +impl Sandbox for Counter { + type Message = Message; + + fn new() -> Self { + Self::default() + } + + fn title(&self) -> String { + String::from("Counter - Iced") + } + + fn update(&mut self, message: Message) { + match message { + Message::IncrementPressed => { + self.value += 1; + } + Message::DecrementPressed => { + self.value -= 1; + } + } + } + + fn view(&mut self) -> Element<Message> { + Column::new() + .padding(20) + .align_items(Align::Center) + .push( + Button::new(&mut self.increment_button, Text::new("Increment")) + .on_press(Message::IncrementPressed), + ) + .push(Text::new(self.value.to_string()).size(50)) + .push( + Button::new(&mut self.decrement_button, Text::new("Decrement")) + .on_press(Message::DecrementPressed), + ) + .into() + } +} |