diff options
| author | 2024-02-03 18:51:30 +0100 | |
|---|---|---|
| committer | 2024-02-03 18:51:30 +0100 | |
| commit | 17cb548e20a0594684b00c2eeda0e81cc8d06095 (patch) | |
| tree | 2d6fea959f42bed1a7ff214d85de4f12785d32aa /examples/styling | |
| parent | 5770efe06dc552409daf586590d4f477206c732b (diff) | |
| download | iced-17cb548e20a0594684b00c2eeda0e81cc8d06095.tar.gz iced-17cb548e20a0594684b00c2eeda0e81cc8d06095.tar.bz2 iced-17cb548e20a0594684b00c2eeda0e81cc8d06095.zip | |
Use `Theme::ALL` for theme selector in `styling` example
Diffstat (limited to '')
| -rw-r--r-- | examples/styling/src/main.rs | 86 | 
1 files changed, 15 insertions, 71 deletions
| diff --git a/examples/styling/src/main.rs b/examples/styling/src/main.rs index 8a7963d0..cf2dcb8a 100644 --- a/examples/styling/src/main.rs +++ b/examples/styling/src/main.rs @@ -1,10 +1,9 @@ -use iced::theme::{self, Theme};  use iced::widget::{ -    button, checkbox, column, container, horizontal_rule, progress_bar, radio, -    row, scrollable, slider, text, text_input, toggler, vertical_rule, -    vertical_space, +    button, checkbox, column, container, horizontal_rule, pick_list, +    progress_bar, row, scrollable, slider, text, text_input, toggler, +    vertical_rule, vertical_space,  }; -use iced::{Alignment, Color, Element, Length, Sandbox, Settings}; +use iced::{Alignment, Element, Length, Sandbox, Settings, Theme};  pub fn main() -> iced::Result {      Styling::run(Settings::default()) @@ -19,22 +18,9 @@ struct Styling {      toggler_value: bool,  } -#[derive(Debug, PartialEq, Eq, Clone, Copy)] -enum ThemeType { -    Light, -    Dark, -    Nord, -    GruvboxLight, -    GruvboxDark, -    Dracula, -    SolarizedLight, -    SolarizedDark, -    Custom, -} -  #[derive(Debug, Clone)]  enum Message { -    ThemeChanged(ThemeType), +    ThemeChanged(Theme),      InputChanged(String),      ButtonPressed,      SliderChanged(f32), @@ -56,26 +42,7 @@ impl Sandbox for Styling {      fn update(&mut self, message: Message) {          match message {              Message::ThemeChanged(theme) => { -                self.theme = match theme { -                    ThemeType::Light => Theme::Light, -                    ThemeType::Dark => Theme::Dark, -                    ThemeType::Nord => Theme::Nord, -                    ThemeType::GruvboxLight => Theme::GruvboxLight, -                    ThemeType::GruvboxDark => Theme::GruvboxDark, -                    ThemeType::Dracula => Theme::Dracula, -                    ThemeType::SolarizedLight => Theme::SolarizedLight, -                    ThemeType::SolarizedDark => Theme::SolarizedDark, -                    ThemeType::Custom => Theme::custom( -                        String::from("Custom"), -                        theme::Palette { -                            background: Color::from_rgb(1.0, 0.9, 1.0), -                            text: Color::BLACK, -                            primary: Color::from_rgb(0.5, 0.5, 0.0), -                            success: Color::from_rgb(0.0, 1.0, 0.0), -                            danger: Color::from_rgb(1.0, 0.0, 0.0), -                        }, -                    ), -                } +                self.theme = theme;              }              Message::InputChanged(value) => self.input_value = value,              Message::ButtonPressed => {} @@ -86,39 +53,16 @@ impl Sandbox for Styling {      }      fn view(&self) -> Element<Message> { -        let choose_theme = [ -            ThemeType::Light, -            ThemeType::Dark, -            ThemeType::Nord, -            ThemeType::Dracula, -            ThemeType::SolarizedLight, -            ThemeType::SolarizedDark, -            ThemeType::GruvboxLight, -            ThemeType::GruvboxDark, -            ThemeType::Custom, +        let choose_theme = column![ +            text("Theme:"), +            pick_list( +                Theme::ALL, +                Some(self.theme.clone()), +                Message::ThemeChanged +            ) +            .width(Length::Fill),          ] -        .iter() -        .fold( -            column![text("Choose a theme:")].spacing(10), -            |column, theme| { -                column.push(radio( -                    format!("{theme:?}"), -                    *theme, -                    Some(match self.theme { -                        Theme::Light => ThemeType::Light, -                        Theme::Dark => ThemeType::Dark, -                        Theme::Dracula => ThemeType::Dracula, -                        Theme::Nord => ThemeType::Nord, -                        Theme::SolarizedLight => ThemeType::SolarizedLight, -                        Theme::SolarizedDark => ThemeType::SolarizedDark, -                        Theme::GruvboxLight => ThemeType::GruvboxLight, -                        Theme::GruvboxDark => ThemeType::GruvboxDark, -                        Theme::Custom { .. } => ThemeType::Custom, -                    }), -                    Message::ThemeChanged, -                )) -            }, -        ); +        .spacing(10);          let text_input = text_input("Type something...", &self.input_value)              .on_input(Message::InputChanged) | 
