Simple windowed application: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added to distro) |
(Rust, using iced) |
||
Line 3,004: | Line 3,004: | ||
msg$ = "Button has been clicked ";clicks;" times" |
msg$ = "Button has been clicked ";clicks;" times" |
||
goto [loop]</lang> |
goto [loop]</lang> |
||
=={{header|Rust}}== |
|||
{{libheader|iced}} |
|||
<lang Rust>use iced::{ // 0.2.0 |
|||
button, Button, Column, Element, Length, |
|||
Text, Sandbox, Settings, Space, |
|||
}; |
|||
#[derive(Debug, Copy, Clone)] |
|||
struct Pressed; |
|||
struct Simple { |
|||
value: i32, |
|||
button: button::State, |
|||
} |
|||
impl Sandbox for Simple { |
|||
type Message = Pressed; |
|||
fn new() -> Simple { |
|||
Simple { |
|||
value: 0, |
|||
button: button::State::new(), |
|||
} |
|||
} |
|||
fn title(&self) -> String { |
|||
"Simple Windowed Application".into() |
|||
} |
|||
fn view(&mut self) -> Element<Self::Message> { |
|||
Column::new() |
|||
.padding(20) |
|||
.push({ |
|||
let text = match self.value { |
|||
0 => "there have been no clicks yet".into(), |
|||
1 => "there has been 1 click".into(), |
|||
n => format!("there have been {} clicks", n), |
|||
}; |
|||
Text::new(text).size(24) |
|||
}).push( |
|||
Space::with_height(Length::Fill) |
|||
).push( |
|||
Button::new(&mut self.button, Text::new("Click Me!")) |
|||
.on_press(Pressed) |
|||
).into() |
|||
} |
|||
fn update(&mut self, _: Self::Message) { |
|||
self.value += 1; |
|||
} |
|||
} |
|||
fn main() { |
|||
let mut settings = Settings::default(); |
|||
settings.window.size = (600, 400); |
|||
Simple::run(settings).unwrap(); |
|||
}</lang> |
|||
=={{header|Scala}}== |
=={{header|Scala}}== |