diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/component/Cargo.toml | 10 | ||||
| -rw-r--r-- | examples/component/src/main.rs | 149 | ||||
| -rw-r--r-- | examples/editor/src/main.rs | 20 | ||||
| -rw-r--r-- | examples/markdown/src/main.rs | 18 | ||||
| -rw-r--r-- | examples/modal/src/main.rs | 28 | ||||
| -rw-r--r-- | examples/pane_grid/src/main.rs | 22 | ||||
| -rw-r--r-- | examples/styling/src/main.rs | 2 | ||||
| -rw-r--r-- | examples/todos/src/main.rs | 3 | ||||
| -rw-r--r-- | examples/tour/src/main.rs | 2 | 
9 files changed, 64 insertions, 190 deletions
diff --git a/examples/component/Cargo.toml b/examples/component/Cargo.toml deleted file mode 100644 index 83b7b8a4..00000000 --- a/examples/component/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "component" -version = "0.1.0" -authors = ["Héctor Ramón Jiménez <hector0193@gmail.com>"] -edition = "2021" -publish = false - -[dependencies] -iced.workspace = true -iced.features = ["debug", "lazy"] diff --git a/examples/component/src/main.rs b/examples/component/src/main.rs deleted file mode 100644 index a5d2e508..00000000 --- a/examples/component/src/main.rs +++ /dev/null @@ -1,149 +0,0 @@ -use iced::widget::center; -use iced::Element; - -use numeric_input::numeric_input; - -pub fn main() -> iced::Result { -    iced::run("Component - Iced", Component::update, Component::view) -} - -#[derive(Default)] -struct Component { -    value: Option<u32>, -} - -#[derive(Debug, Clone, Copy)] -enum Message { -    NumericInputChanged(Option<u32>), -} - -impl Component { -    fn update(&mut self, message: Message) { -        match message { -            Message::NumericInputChanged(value) => { -                self.value = value; -            } -        } -    } - -    fn view(&self) -> Element<Message> { -        center(numeric_input(self.value, Message::NumericInputChanged)) -            .padding(20) -            .into() -    } -} - -mod numeric_input { -    use iced::widget::{button, component, row, text, text_input, Component}; -    use iced::{Center, Element, Fill, Length, Size}; - -    pub struct NumericInput<Message> { -        value: Option<u32>, -        on_change: Box<dyn Fn(Option<u32>) -> Message>, -    } - -    pub fn numeric_input<Message>( -        value: Option<u32>, -        on_change: impl Fn(Option<u32>) -> Message + 'static, -    ) -> NumericInput<Message> { -        NumericInput::new(value, on_change) -    } - -    #[derive(Debug, Clone)] -    pub enum Event { -        InputChanged(String), -        IncrementPressed, -        DecrementPressed, -    } - -    impl<Message> NumericInput<Message> { -        pub fn new( -            value: Option<u32>, -            on_change: impl Fn(Option<u32>) -> Message + 'static, -        ) -> Self { -            Self { -                value, -                on_change: Box::new(on_change), -            } -        } -    } - -    impl<Message, Theme> Component<Message, Theme> for NumericInput<Message> -    where -        Theme: text::Catalog + button::Catalog + text_input::Catalog + 'static, -    { -        type State = (); -        type Event = Event; - -        fn update( -            &mut self, -            _state: &mut Self::State, -            event: Event, -        ) -> Option<Message> { -            match event { -                Event::IncrementPressed => Some((self.on_change)(Some( -                    self.value.unwrap_or_default().saturating_add(1), -                ))), -                Event::DecrementPressed => Some((self.on_change)(Some( -                    self.value.unwrap_or_default().saturating_sub(1), -                ))), -                Event::InputChanged(value) => { -                    if value.is_empty() { -                        Some((self.on_change)(None)) -                    } else { -                        value -                            .parse() -                            .ok() -                            .map(Some) -                            .map(self.on_change.as_ref()) -                    } -                } -            } -        } - -        fn view(&self, _state: &Self::State) -> Element<'_, Event, Theme> { -            let button = |label, on_press| { -                button(text(label).width(Fill).height(Fill).center()) -                    .width(40) -                    .height(40) -                    .on_press(on_press) -            }; - -            row![ -                button("-", Event::DecrementPressed), -                text_input( -                    "Type a number", -                    self.value -                        .as_ref() -                        .map(u32::to_string) -                        .as_deref() -                        .unwrap_or(""), -                ) -                .on_input(Event::InputChanged) -                .padding(10), -                button("+", Event::IncrementPressed), -            ] -            .align_y(Center) -            .spacing(10) -            .into() -        } - -        fn size_hint(&self) -> Size<Length> { -            Size { -                width: Length::Fill, -                height: Length::Shrink, -            } -        } -    } - -    impl<'a, Message, Theme> From<NumericInput<Message>> -        for Element<'a, Message, Theme> -    where -        Theme: text::Catalog + button::Catalog + text_input::Catalog + 'static, -        Message: 'a, -    { -        fn from(numeric_input: NumericInput<Message>) -> Self { -            component(numeric_input) -        } -    } -} diff --git a/examples/editor/src/main.rs b/examples/editor/src/main.rs index aa07b328..5f12aec5 100644 --- a/examples/editor/src/main.rs +++ b/examples/editor/src/main.rs @@ -2,7 +2,7 @@ use iced::highlighter;  use iced::keyboard;  use iced::widget::{      self, button, column, container, horizontal_space, pick_list, row, text, -    text_editor, tooltip, +    text_editor, toggler, tooltip,  };  use iced::{Center, Element, Fill, Font, Subscription, Task, Theme}; @@ -24,6 +24,7 @@ struct Editor {      file: Option<PathBuf>,      content: text_editor::Content,      theme: highlighter::Theme, +    word_wrap: bool,      is_loading: bool,      is_dirty: bool,  } @@ -32,6 +33,7 @@ struct Editor {  enum Message {      ActionPerformed(text_editor::Action),      ThemeSelected(highlighter::Theme), +    WordWrapToggled(bool),      NewFile,      OpenFile,      FileOpened(Result<(PathBuf, Arc<String>), Error>), @@ -46,6 +48,7 @@ impl Editor {                  file: None,                  content: text_editor::Content::new(),                  theme: highlighter::Theme::SolarizedDark, +                word_wrap: true,                  is_loading: true,                  is_dirty: false,              }, @@ -76,6 +79,11 @@ impl Editor {                  Task::none()              } +            Message::WordWrapToggled(word_wrap) => { +                self.word_wrap = word_wrap; + +                Task::none() +            }              Message::NewFile => {                  if !self.is_loading {                      self.file = None; @@ -152,6 +160,11 @@ impl Editor {                  self.is_dirty.then_some(Message::SaveFile)              ),              horizontal_space(), +            toggler( +                Some("Word Wrap"), +                self.word_wrap, +                Message::WordWrapToggled +            ),              pick_list(                  highlighter::Theme::ALL,                  Some(self.theme), @@ -189,6 +202,11 @@ impl Editor {              text_editor(&self.content)                  .height(Fill)                  .on_action(Message::ActionPerformed) +                .wrapping(if self.word_wrap { +                    text::Wrapping::Word +                } else { +                    text::Wrapping::None +                })                  .highlight(                      self.file                          .as_deref() diff --git a/examples/markdown/src/main.rs b/examples/markdown/src/main.rs index eb51f985..5605478f 100644 --- a/examples/markdown/src/main.rs +++ b/examples/markdown/src/main.rs @@ -29,8 +29,7 @@ impl Markdown {          (              Self {                  content: text_editor::Content::with_text(INITIAL_CONTENT), -                items: markdown::parse(INITIAL_CONTENT, theme.palette()) -                    .collect(), +                items: markdown::parse(INITIAL_CONTENT).collect(),                  theme,              },              widget::focus_next(), @@ -45,11 +44,8 @@ impl Markdown {                  self.content.perform(action);                  if is_edit { -                    self.items = markdown::parse( -                        &self.content.text(), -                        self.theme.palette(), -                    ) -                    .collect(); +                    self.items = +                        markdown::parse(&self.content.text()).collect();                  }              }              Message::LinkClicked(link) => { @@ -67,8 +63,12 @@ impl Markdown {              .font(Font::MONOSPACE)              .highlight("markdown", highlighter::Theme::Base16Ocean); -        let preview = markdown(&self.items, markdown::Settings::default()) -            .map(Message::LinkClicked); +        let preview = markdown( +            &self.items, +            markdown::Settings::default(), +            markdown::Style::from_palette(self.theme.palette()), +        ) +        .map(Message::LinkClicked);          row![editor, scrollable(preview).spacing(10).height(Fill)]              .spacing(10) diff --git a/examples/modal/src/main.rs b/examples/modal/src/main.rs index f1f0e8ad..067ca24d 100644 --- a/examples/modal/src/main.rs +++ b/examples/modal/src/main.rs @@ -201,19 +201,21 @@ where  {      stack![          base.into(), -        mouse_area(center(opaque(content)).style(|_theme| { -            container::Style { -                background: Some( -                    Color { -                        a: 0.8, -                        ..Color::BLACK -                    } -                    .into(), -                ), -                ..container::Style::default() -            } -        })) -        .on_press(on_blur) +        opaque( +            mouse_area(center(opaque(content)).style(|_theme| { +                container::Style { +                    background: Some( +                        Color { +                            a: 0.8, +                            ..Color::BLACK +                        } +                        .into(), +                    ), +                    ..container::Style::default() +                } +            })) +            .on_press(on_blur) +        )      ]      .into()  } diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs index f18fc5f3..67f4d27f 100644 --- a/examples/pane_grid/src/main.rs +++ b/examples/pane_grid/src/main.rs @@ -154,11 +154,23 @@ impl Example {              .spacing(5);              let title_bar = pane_grid::TitleBar::new(title) -                .controls(view_controls( -                    id, -                    total_panes, -                    pane.is_pinned, -                    is_maximized, +                .controls(pane_grid::Controls::dynamic( +                    view_controls( +                        id, +                        total_panes, +                        pane.is_pinned, +                        is_maximized, +                    ), +                    button(text("X").size(14)) +                        .style(button::danger) +                        .padding(3) +                        .on_press_maybe( +                            if total_panes > 1 && !pane.is_pinned { +                                Some(Message::Close(id)) +                            } else { +                                None +                            }, +                        ),                  ))                  .padding(10)                  .style(if is_focused { diff --git a/examples/styling/src/main.rs b/examples/styling/src/main.rs index 527aaa29..e19d5cf7 100644 --- a/examples/styling/src/main.rs +++ b/examples/styling/src/main.rs @@ -78,7 +78,7 @@ impl Styling {              .on_toggle(Message::CheckboxToggled);          let toggler = toggler( -            String::from("Toggle me!"), +            Some("Toggle me!"),              self.toggler_value,              Message::TogglerToggled,          ) diff --git a/examples/todos/src/main.rs b/examples/todos/src/main.rs index 86845f87..a5f7b36a 100644 --- a/examples/todos/src/main.rs +++ b/examples/todos/src/main.rs @@ -202,7 +202,8 @@ impl Todos {                      .on_input(Message::InputChanged)                      .on_submit(Message::CreateTask)                      .padding(15) -                    .size(30); +                    .size(30) +                    .align_x(Center);                  let controls = view_controls(tasks, *filter);                  let filtered_tasks = diff --git a/examples/tour/src/main.rs b/examples/tour/src/main.rs index ee4754e6..0dd588fe 100644 --- a/examples/tour/src/main.rs +++ b/examples/tour/src/main.rs @@ -358,7 +358,7 @@ impl Tour {              .push("A toggler is mostly used to enable or disable something.")              .push(                  Container::new(toggler( -                    "Toggle me to continue...".to_owned(), +                    Some("Toggle me to continue..."),                      self.toggler,                      Message::TogglerChanged,                  ))  | 
