From 897188317b5875cc00a0f1c797790df8ac13687f Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 11 Feb 2022 17:50:12 +0700 Subject: Rename `iced_virtual` to `iced_pure` `virtual` is a reserved keyword in Rust :grimacing: --- examples/pure/counter/Cargo.toml | 10 ++++++++ examples/pure/counter/README.md | 18 +++++++++++++ examples/pure/counter/index.html | 12 +++++++++ examples/pure/counter/src/main.rs | 54 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100644 examples/pure/counter/Cargo.toml create mode 100644 examples/pure/counter/README.md create mode 100644 examples/pure/counter/index.html create mode 100644 examples/pure/counter/src/main.rs (limited to 'examples/pure/counter') diff --git a/examples/pure/counter/Cargo.toml b/examples/pure/counter/Cargo.toml new file mode 100644 index 00000000..1363bfd5 --- /dev/null +++ b/examples/pure/counter/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "pure_counter" +version = "0.1.0" +authors = ["Héctor Ramón Jiménez "] +edition = "2021" +publish = false + +[dependencies] +iced = { path = "../../.." } +iced_pure = { path = "../../../pure" } diff --git a/examples/pure/counter/README.md b/examples/pure/counter/README.md new file mode 100644 index 00000000..4d9fc5b9 --- /dev/null +++ b/examples/pure/counter/README.md @@ -0,0 +1,18 @@ +## Counter + +The classic counter example explained in the [`README`](../../README.md). + +The __[`main`]__ file contains all the code of the example. + +
+ + + +
+ +You can run it with `cargo run`: +``` +cargo run --package counter +``` + +[`main`]: src/main.rs diff --git a/examples/pure/counter/index.html b/examples/pure/counter/index.html new file mode 100644 index 00000000..d2e368e4 --- /dev/null +++ b/examples/pure/counter/index.html @@ -0,0 +1,12 @@ + + + + + + Counter - Iced + + + + + + diff --git a/examples/pure/counter/src/main.rs b/examples/pure/counter/src/main.rs new file mode 100644 index 00000000..e2746d40 --- /dev/null +++ b/examples/pure/counter/src/main.rs @@ -0,0 +1,54 @@ +use iced::{Alignment, Element, Sandbox, Settings}; +use iced_pure::{Button, Column, Pure, State, Text}; + +pub fn main() -> iced::Result { + Counter::run(Settings::default()) +} + +struct Counter { + value: i32, + state: State, +} + +#[derive(Debug, Clone, Copy)] +enum Message { + IncrementPressed, + DecrementPressed, +} + +impl Sandbox for Counter { + type Message = Message; + + fn new() -> Self { + Self { + value: 0, + state: State::new(), + } + } + + 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> { + let content = Column::new() + .padding(20) + .align_items(Alignment::Center) + .push(Button::new("Increment").on_press(Message::IncrementPressed)) + .push(Text::new(self.value.to_string()).size(50)) + .push(Button::new("Decrement").on_press(Message::DecrementPressed)); + + Pure::new(&mut self.state, content).into() + } +} -- cgit From 66d69b5c9a183091e05e82bbe21b3203f75c1b18 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 11 Feb 2022 17:51:33 +0700 Subject: Expose `iced_pure` through a `pure` feature in `iced` Besides exposing the `iced_pure` crate, enabling the `pure` feature also provides pure versions of both the `Application` and `Sandbox` traits! :tada: --- examples/pure/counter/Cargo.toml | 3 +-- examples/pure/counter/src/main.rs | 19 +++++++------------ 2 files changed, 8 insertions(+), 14 deletions(-) (limited to 'examples/pure/counter') diff --git a/examples/pure/counter/Cargo.toml b/examples/pure/counter/Cargo.toml index 1363bfd5..2fcd22d4 100644 --- a/examples/pure/counter/Cargo.toml +++ b/examples/pure/counter/Cargo.toml @@ -6,5 +6,4 @@ edition = "2021" publish = false [dependencies] -iced = { path = "../../.." } -iced_pure = { path = "../../../pure" } +iced = { path = "../../..", features = ["pure"] } diff --git a/examples/pure/counter/src/main.rs b/examples/pure/counter/src/main.rs index e2746d40..00cb3fc7 100644 --- a/examples/pure/counter/src/main.rs +++ b/examples/pure/counter/src/main.rs @@ -1,5 +1,5 @@ -use iced::{Alignment, Element, Sandbox, Settings}; -use iced_pure::{Button, Column, Pure, State, Text}; +use iced::pure::{Button, Column, Element, Sandbox, Text}; +use iced::{Alignment, Settings}; pub fn main() -> iced::Result { Counter::run(Settings::default()) @@ -7,7 +7,6 @@ pub fn main() -> iced::Result { struct Counter { value: i32, - state: State, } #[derive(Debug, Clone, Copy)] @@ -20,10 +19,7 @@ impl Sandbox for Counter { type Message = Message; fn new() -> Self { - Self { - value: 0, - state: State::new(), - } + Self { value: 0 } } fn title(&self) -> String { @@ -41,14 +37,13 @@ impl Sandbox for Counter { } } - fn view(&mut self) -> Element<'_, Message> { - let content = Column::new() + fn view(&self) -> Element { + Column::new() .padding(20) .align_items(Alignment::Center) .push(Button::new("Increment").on_press(Message::IncrementPressed)) .push(Text::new(self.value.to_string()).size(50)) - .push(Button::new("Decrement").on_press(Message::DecrementPressed)); - - Pure::new(&mut self.state, content).into() + .push(Button::new("Decrement").on_press(Message::DecrementPressed)) + .into() } } -- cgit From 43a7ad72ef070929278e6d03d98077ac267fe2a6 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 11 Feb 2022 18:42:15 +0700 Subject: Expose function helpers to build widgets in `pure::widget` `button("Hello")` is easier to write and read than `Button::new("Hello")`. --- examples/pure/counter/src/main.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'examples/pure/counter') diff --git a/examples/pure/counter/src/main.rs b/examples/pure/counter/src/main.rs index 00cb3fc7..4cb79a0e 100644 --- a/examples/pure/counter/src/main.rs +++ b/examples/pure/counter/src/main.rs @@ -1,4 +1,5 @@ -use iced::pure::{Button, Column, Element, Sandbox, Text}; +use iced::pure::widget::{button, column, text}; +use iced::pure::{Element, Sandbox}; use iced::{Alignment, Settings}; pub fn main() -> iced::Result { @@ -38,12 +39,12 @@ impl Sandbox for Counter { } fn view(&self) -> Element { - Column::new() + column() .padding(20) .align_items(Alignment::Center) - .push(Button::new("Increment").on_press(Message::IncrementPressed)) - .push(Text::new(self.value.to_string()).size(50)) - .push(Button::new("Decrement").on_press(Message::DecrementPressed)) + .push(button("Increment").on_press(Message::IncrementPressed)) + .push(text(self.value).size(50)) + .push(button("Decrement").on_press(Message::DecrementPressed)) .into() } } -- cgit From dee3dba632709f57b5573dbe28827ad481287648 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sat, 12 Feb 2022 14:22:17 +0700 Subject: Reuse `Text` widget from `iced_native` in `iced_pure` --- examples/pure/counter/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'examples/pure/counter') diff --git a/examples/pure/counter/src/main.rs b/examples/pure/counter/src/main.rs index 4cb79a0e..9b520347 100644 --- a/examples/pure/counter/src/main.rs +++ b/examples/pure/counter/src/main.rs @@ -43,7 +43,7 @@ impl Sandbox for Counter { .padding(20) .align_items(Alignment::Center) .push(button("Increment").on_press(Message::IncrementPressed)) - .push(text(self.value).size(50)) + .push(text(self.value.to_string()).size(50)) .push(button("Decrement").on_press(Message::DecrementPressed)) .into() } -- cgit From 7d9ab71790ba0395681490f3af4d3899bb09ab09 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 8 Mar 2022 22:08:38 +0700 Subject: Remove superfluous files from `pure` examples --- examples/pure/counter/README.md | 18 ------------------ examples/pure/counter/index.html | 12 ------------ 2 files changed, 30 deletions(-) delete mode 100644 examples/pure/counter/README.md delete mode 100644 examples/pure/counter/index.html (limited to 'examples/pure/counter') diff --git a/examples/pure/counter/README.md b/examples/pure/counter/README.md deleted file mode 100644 index 4d9fc5b9..00000000 --- a/examples/pure/counter/README.md +++ /dev/null @@ -1,18 +0,0 @@ -## Counter - -The classic counter example explained in the [`README`](../../README.md). - -The __[`main`]__ file contains all the code of the example. - - - -You can run it with `cargo run`: -``` -cargo run --package counter -``` - -[`main`]: src/main.rs diff --git a/examples/pure/counter/index.html b/examples/pure/counter/index.html deleted file mode 100644 index d2e368e4..00000000 --- a/examples/pure/counter/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Counter - Iced - - - - - - -- cgit From d7100fd2597da82d97eaf196d50573ea64f3f8ff Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 16 Mar 2022 17:37:19 +0700 Subject: Export widget modules in `iced_pure` ... and fix collisions with the new `helpers` --- examples/pure/counter/src/main.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'examples/pure/counter') diff --git a/examples/pure/counter/src/main.rs b/examples/pure/counter/src/main.rs index 9b520347..726009df 100644 --- a/examples/pure/counter/src/main.rs +++ b/examples/pure/counter/src/main.rs @@ -1,5 +1,4 @@ -use iced::pure::widget::{button, column, text}; -use iced::pure::{Element, Sandbox}; +use iced::pure::{button, column, text, Element, Sandbox}; use iced::{Alignment, Settings}; pub fn main() -> iced::Result { -- cgit