From 73b8ae8e5e7f57c608c775272a2980995ab22bb3 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 10 Jul 2020 02:50:47 +0200 Subject: Rename `ComboBox` to `PickList` --- examples/pick_list/Cargo.toml | 9 +++ examples/pick_list/README.md | 18 ++++++ examples/pick_list/src/main.rs | 121 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 examples/pick_list/Cargo.toml create mode 100644 examples/pick_list/README.md create mode 100644 examples/pick_list/src/main.rs (limited to 'examples/pick_list') diff --git a/examples/pick_list/Cargo.toml b/examples/pick_list/Cargo.toml new file mode 100644 index 00000000..a87d7217 --- /dev/null +++ b/examples/pick_list/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "pick_list" +version = "0.1.0" +authors = ["Héctor Ramón Jiménez "] +edition = "2018" +publish = false + +[dependencies] +iced = { path = "../..", features = ["debug"] } diff --git a/examples/pick_list/README.md b/examples/pick_list/README.md new file mode 100644 index 00000000..4d9fc5b9 --- /dev/null +++ b/examples/pick_list/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/pick_list/src/main.rs b/examples/pick_list/src/main.rs new file mode 100644 index 00000000..4eb368d1 --- /dev/null +++ b/examples/pick_list/src/main.rs @@ -0,0 +1,121 @@ +use iced::{ + button, pick_list, scrollable, Align, Button, Container, Element, Length, + PickList, Sandbox, Scrollable, Settings, Space, Text, +}; + +pub fn main() { + Example::run(Settings::default()) +} + +#[derive(Default)] +struct Example { + scroll: scrollable::State, + button: button::State, + pick_list: pick_list::State, + selected_language: Language, +} + +#[derive(Debug, Clone, Copy)] +enum Message { + ButtonPressed, + LanguageSelected(Language), +} + +impl Sandbox for Example { + type Message = Message; + + fn new() -> Self { + Self::default() + } + + fn title(&self) -> String { + String::from("Pick list - Iced") + } + + fn update(&mut self, message: Message) { + match message { + Message::ButtonPressed => {} + Message::LanguageSelected(language) => { + self.selected_language = language; + } + } + } + + fn view(&mut self) -> Element { + let pick_list = PickList::new( + &mut self.pick_list, + &Language::ALL[..], + Some(self.selected_language), + Message::LanguageSelected, + ); + + let button = Button::new(&mut self.button, Text::new("Press me!")) + .on_press(Message::ButtonPressed); + + let mut content = Scrollable::new(&mut self.scroll) + .width(Length::Fill) + .align_items(Align::Center) + .spacing(10) + .push(Space::with_height(Length::Units(800))) + .push(Text::new("Which is your favorite language?")) + .push(pick_list); + + content = content + .push(button) + .push(Space::with_height(Length::Units(800))); + + Container::new(content) + .width(Length::Fill) + .height(Length::Fill) + .center_x() + .center_y() + .into() + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum Language { + Rust, + Elm, + Ruby, + Haskell, + C, + Javascript, + Other, +} + +impl Language { + const ALL: [Language; 7] = [ + Language::C, + Language::Elm, + Language::Ruby, + Language::Haskell, + Language::Rust, + Language::Javascript, + Language::Other, + ]; +} + +impl Default for Language { + fn default() -> Language { + Language::Rust + } +} + +impl std::fmt::Display for Language { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "{}", + match self { + Language::Rust => "Rust", + Language::Elm => "Elm", + Language::Ruby => "Ruby", + Language::Haskell => "Haskell", + Language::C => "C", + Language::Javascript => "Javascript", + Language::Other => "Some other language", + } + ) + } +} -- cgit From 26fbc9af0097f7f912c554b3a1e0281678bb4823 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Fri, 10 Jul 2020 08:11:31 +0200 Subject: Simplify `pick_list` example --- examples/pick_list/src/main.rs | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) (limited to 'examples/pick_list') diff --git a/examples/pick_list/src/main.rs b/examples/pick_list/src/main.rs index 4eb368d1..66ed6c6f 100644 --- a/examples/pick_list/src/main.rs +++ b/examples/pick_list/src/main.rs @@ -1,6 +1,6 @@ use iced::{ - button, pick_list, scrollable, Align, Button, Container, Element, Length, - PickList, Sandbox, Scrollable, Settings, Space, Text, + pick_list, scrollable, Align, Container, Element, Length, PickList, + Sandbox, Scrollable, Settings, Space, Text, }; pub fn main() { @@ -10,14 +10,12 @@ pub fn main() { #[derive(Default)] struct Example { scroll: scrollable::State, - button: button::State, pick_list: pick_list::State, selected_language: Language, } #[derive(Debug, Clone, Copy)] enum Message { - ButtonPressed, LanguageSelected(Language), } @@ -34,7 +32,6 @@ impl Sandbox for Example { fn update(&mut self, message: Message) { match message { - Message::ButtonPressed => {} Message::LanguageSelected(language) => { self.selected_language = language; } @@ -49,20 +46,15 @@ impl Sandbox for Example { Message::LanguageSelected, ); - let button = Button::new(&mut self.button, Text::new("Press me!")) - .on_press(Message::ButtonPressed); - let mut content = Scrollable::new(&mut self.scroll) .width(Length::Fill) .align_items(Align::Center) .spacing(10) - .push(Space::with_height(Length::Units(800))) + .push(Space::with_height(Length::Units(600))) .push(Text::new("Which is your favorite language?")) .push(pick_list); - content = content - .push(button) - .push(Space::with_height(Length::Units(800))); + content = content.push(Space::with_height(Length::Units(600))); Container::new(content) .width(Length::Fill) -- cgit From 73d1353976e508d918206e2f61b6f45f551e0ff8 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 16 Jul 2020 04:30:06 +0200 Subject: Update `README` of examples --- examples/pick_list/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'examples/pick_list') diff --git a/examples/pick_list/README.md b/examples/pick_list/README.md index 4d9fc5b9..6dc80bf4 100644 --- a/examples/pick_list/README.md +++ b/examples/pick_list/README.md @@ -1,18 +1,18 @@ -## Counter +## Pick-list -The classic counter example explained in the [`README`](../../README.md). +A dropdown list of selectable options. + +It displays and positions an overlay based on the window position of the widget. The __[`main`]__ file contains all the code of the example.
- - - +
You can run it with `cargo run`: ``` -cargo run --package counter +cargo run --package pick_list ``` [`main`]: src/main.rs -- cgit