35 lines
882 B
Rust
35 lines
882 B
Rust
use iris::prelude::*;
|
|
use std::time::Duration;
|
|
|
|
fn main() {
|
|
DesktopApp::<State>::run();
|
|
}
|
|
|
|
#[derive(DesktopUiState)]
|
|
struct State {
|
|
ui_state: DesktopUiState,
|
|
}
|
|
|
|
impl DesktopAppState for State {
|
|
fn new(
|
|
mut ui_state: DesktopUiState,
|
|
rsc: &mut DesktopRsc<Self>,
|
|
_: Proxy<Self::Event>,
|
|
) -> Self {
|
|
let rect = rect(PaintId::RED).add(rsc);
|
|
rect.task_on(CursorSense::click(), async move |mut ctx| {
|
|
tokio::time::sleep(Duration::from_secs(1)).await;
|
|
ctx.update(move |_, rsc| {
|
|
let rect = rect(rsc);
|
|
if rect.is_paint(&PaintId::RED) {
|
|
rect.set_paint(PaintId::BLUE);
|
|
} else {
|
|
rect.set_paint(PaintId::RED);
|
|
}
|
|
});
|
|
})
|
|
.set_root(rsc, &mut ui_state);
|
|
Self { ui_state }
|
|
}
|
|
}
|