diff --git a/Cargo.toml b/Cargo.toml index dbc67c2c..aede0f0f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "iced_aw" -version = "0.4.1" +version = "0.5.0" authors = ["Kaiden42 "] edition = "2021" description = "Additional widgets for the Iced GUI library" @@ -65,17 +65,17 @@ lazy_static = { version = "1.4.0", optional = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies.iced_native] #git = "https://github.com/iced-rs/iced.git" #rev = "8221794" -version = "0.9.1" +version = "0.10.1" [target.'cfg(not(target_arch = "wasm32"))'.dependencies.iced_graphics] #git = "https://github.com/iced-rs/iced.git" #rev = "8221794" -version = "0.7.0" +version = "0.8.0" [dependencies.iced_style] #git = "https://github.com/iced-rs/iced.git" #rev = "8221794" -version = "0.7.0" +version = "0.8.0" [profile.dev.package."*"] opt-level = 2 @@ -106,7 +106,7 @@ members = [ [workspace.dependencies.iced] #git = "https://github.com/iced-rs/iced.git" #rev = "8221794" -version = "0.8.0" +version = "0.9.0" [workspace.dependencies.iced_aw] path = "./" diff --git a/README.md b/README.md index 1333de5f..e567b409 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ Every widget is hidden by a feature gate. This allows you to cherry pick the wid Include `iced_aw` as a dependency in your `Cargo.toml`: ```toml [dependencies] -iced = "0.8.0" -iced_aw = { version = "0.4.1", default-features = false, features = [...] } +iced = "0.9.0" +iced_aw = { version = "0.5", default-features = false, features = [...] } ``` ## Versioning @@ -24,7 +24,7 @@ iced_aw = { version = "0.4.1", default-features = false, features = [...] } | 0.4 | 0.2 | | 0.7 | 0.3 | | 0.8 | 0.4 | - +| 0.9 | 0.5 | ## Widgets diff --git a/examples/badge/src/main.rs b/examples/badge/src/main.rs index 5b3a345d..d0c4402d 100644 --- a/examples/badge/src/main.rs +++ b/examples/badge/src/main.rs @@ -1,6 +1,9 @@ -use iced::{Alignment, Element, Length, Sandbox, Settings, widget::{Column, Container, Row, Text}}; +use iced::{ + widget::{Column, Container, Row, Text}, + Alignment, Element, Length, Sandbox, Settings, +}; -use iced_aw::{Badge, style::BadgeStyles}; +use iced_aw::{style::BadgeStyles, Badge}; const BADGE_TEXT_SIZE: u16 = 15; @@ -40,20 +43,21 @@ impl Sandbox for BadgeExample { .spacing(15) .max_width(300); - let content_messages = self.messages.iter().enumerate().fold( - content, - |col, (i, (name, count))| { - col.push( - Row::new() - .align_items(Alignment::Center) - .push(Text::new(name).width(Length::Fill)) - .push( - Badge::new(Text::new(format!("{count}")).size(BADGE_TEXT_SIZE)) - .style(predefined_style(i)), - ), - ) - }, - ); + let content_messages = + self.messages + .iter() + .enumerate() + .fold(content, |col, (i, (name, count))| { + col.push( + Row::new() + .align_items(Alignment::Center) + .push(Text::new(name).width(Length::Fill)) + .push( + Badge::new(Text::new(format!("{count}")).size(BADGE_TEXT_SIZE)) + .style(predefined_style(i)), + ), + ) + }); let content_all = Column::new() .spacing(10) @@ -82,11 +86,12 @@ impl Sandbox for BadgeExample { .spacing(40) .push(content_messages) .push(content_all), - ).width(Length::Fill) - .height(Length::Fill) - .center_x() - .center_y() - .into() + ) + .width(Length::Fill) + .height(Length::Fill) + .center_x() + .center_y() + .into() } } diff --git a/examples/card/src/main.rs b/examples/card/src/main.rs index bf3bb54d..4e0d7f47 100644 --- a/examples/card/src/main.rs +++ b/examples/card/src/main.rs @@ -1,6 +1,8 @@ -use iced::{Element, Length, Sandbox, Settings, - widget::{Button, Column, Container, Scrollable, Text}}; -use iced_aw::{Card, style::CardStyles}; +use iced::{ + widget::{Button, Column, Container, Scrollable, Text}, + Element, Length, Sandbox, Settings, +}; +use iced_aw::{style::CardStyles, Card}; fn main() -> iced::Result { CardExample::run(Settings::default()) diff --git a/examples/color_picker/src/main.rs b/examples/color_picker/src/main.rs index 99a396cf..ac7d6078 100644 --- a/examples/color_picker/src/main.rs +++ b/examples/color_picker/src/main.rs @@ -1,5 +1,7 @@ -use iced::{Alignment, Color, Element, Length, Sandbox, Settings, - widget::{Button, Container, Row, Text}}; +use iced::{ + widget::{Button, Container, Row, Text}, + Alignment, Color, Element, Length, Sandbox, Settings, +}; use iced_aw::ColorPicker; diff --git a/examples/cupertino/cupertino_spinner/Cargo.toml b/examples/cupertino/cupertino_spinner/Cargo.toml index 25295b55..3edf4b3e 100644 --- a/examples/cupertino/cupertino_spinner/Cargo.toml +++ b/examples/cupertino/cupertino_spinner/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" publish = false [dependencies] -iced = { version = "0.8.0", features = ["canvas", "debug", "tokio"] } +iced = { workspace = true, features = ["canvas", "debug", "tokio"] } iced_aw = { path = "../../../", features = ["cupertino"] } -tokio = { version = "1.26.0", features = ["time"] } +tokio = { version = "1.27.0", features = ["time"] } diff --git a/examples/cupertino/cupertino_spinner/src/main.rs b/examples/cupertino/cupertino_spinner/src/main.rs index 0722ad42..385b862b 100644 --- a/examples/cupertino/cupertino_spinner/src/main.rs +++ b/examples/cupertino/cupertino_spinner/src/main.rs @@ -1,10 +1,13 @@ -use iced::{Application, Command, Element, executor, Length, Settings, Theme}; use iced::alignment; use iced::widget::{column, container, text}; +use iced::{executor, Application, Command, Element, Length, Settings, Theme}; use iced_aw::native::cupertino::cupertino_spinner::CupertinoSpinner; pub fn main() -> iced::Result { - Spinner::run(Settings { antialiasing: true, ..Settings::default() }) + Spinner::run(Settings { + antialiasing: true, + ..Settings::default() + }) } #[derive(Debug, Clone)] @@ -26,38 +29,40 @@ impl State { async fn load() -> Result { println!("Doing stuff..."); tokio::time::sleep(tokio::time::Duration::from_secs(3)).await; - return Ok(Self { hello: "Loaded!".to_string() }); + return Ok(Self { + hello: "Loaded!".to_string(), + }); } } impl Application for Spinner { type Executor = executor::Default; - type Message = Message; - type Theme = Theme; - type Flags = (); + type Message = Message; + type Theme = Theme; + type Flags = (); fn new(_flags: ()) -> (Self, Command) { - (Spinner::Loading, Command::perform(State::load(), Message::Loaded)) + ( + Spinner::Loading, + Command::perform(State::load(), Message::Loaded), + ) } - fn title(&self) -> String { String::from("CupertinoSpinner - Iced") } + fn title(&self) -> String { + String::from("CupertinoSpinner - Iced") + } fn update(&mut self, message: Message) -> Command { match self { - Spinner::Loading => { - match message { - Message::Loaded(Ok(state)) => { - *self = Spinner::Loaded(State { - hello: state.hello, - }); - }, - - _ => () + Spinner::Loading => match message { + Message::Loaded(Ok(state)) => { + *self = Spinner::Loaded(State { hello: state.hello }); } - }, - _ => () + _ => (), + }, + _ => (), } Command::none() @@ -65,27 +70,26 @@ impl Application for Spinner { fn view(&self) -> Element { match self { - Spinner::Loading => { - container( - CupertinoSpinner::new().width(Length::Fill).height(Length::Fill) - ).into() - }, - - Spinner::Loaded(state) => { - container(column![text(&state.hello) - .width(Length::Fill) - .size(25) - .horizontal_alignment(alignment::Horizontal::Center) - .vertical_alignment(alignment::Vertical::Center) - ]) + Spinner::Loading => container( + CupertinoSpinner::new() .width(Length::Fill) - .height(Length::Fill) - .center_y() - .into() - }, + .height(Length::Fill), + ) + .into(), + + Spinner::Loaded(state) => container(column![text(&state.hello) + .width(Length::Fill) + .size(25) + .horizontal_alignment(alignment::Horizontal::Center) + .vertical_alignment(alignment::Vertical::Center)]) + .width(Length::Fill) + .height(Length::Fill) + .center_y() + .into(), } } - fn theme(&self) -> Self::Theme { Theme::Light } + fn theme(&self) -> Self::Theme { + Theme::Light + } } - diff --git a/examples/date_picker/src/main.rs b/examples/date_picker/src/main.rs index 0c6bd91e..9641927a 100644 --- a/examples/date_picker/src/main.rs +++ b/examples/date_picker/src/main.rs @@ -1,5 +1,8 @@ -use iced::{Alignment, Element, Length, Sandbox, Settings, widget::{Button, Container, Row, Text}}; -use iced_aw::{DatePicker, date_picker::Date}; +use iced::{ + widget::{Button, Container, Row, Text}, + Alignment, Element, Length, Sandbox, Settings, +}; +use iced_aw::{date_picker::Date, DatePicker}; fn main() -> iced::Result { DatePickerExample::run(Settings::default()) diff --git a/examples/floating_element/src/main.rs b/examples/floating_element/src/main.rs index 8e2e4199..1025cb09 100644 --- a/examples/floating_element/src/main.rs +++ b/examples/floating_element/src/main.rs @@ -1,7 +1,10 @@ use iced::widget::button; use iced::widget::button::Appearance; -use iced::{theme, Element, Length, Sandbox, Settings, Theme, - widget::{Button, Column, Container, Scrollable, Text}}; +use iced::{ + theme, + widget::{Button, Column, Container, Scrollable, Text}, + Element, Length, Sandbox, Settings, Theme, +}; use iced_aw::floating_element::{self, FloatingElement}; use iced_aw::{Icon, ICON_FONT}; @@ -69,9 +72,10 @@ impl Sandbox for FloatingElementExample { )))) .into() }, - ).anchor(floating_element::Anchor::SouthEast) - .offset(20.0) - .hide(false); + ) + .anchor(floating_element::Anchor::SouthEast) + .offset(20.0) + .hide(false); Container::new(content) .width(Length::Fill) diff --git a/examples/floating_element_anchors/src/main.rs b/examples/floating_element_anchors/src/main.rs index d660293d..246392d3 100644 --- a/examples/floating_element_anchors/src/main.rs +++ b/examples/floating_element_anchors/src/main.rs @@ -1,6 +1,6 @@ use iced::widget::{button, container, text}; use iced::{Element, Length, Sandbox, Settings}; -use iced_aw::{FloatingElement, floating_element::Anchor}; +use iced_aw::{floating_element::Anchor, FloatingElement}; fn main() -> iced::Result { FloatingElementAnchorsExample::run(Settings::default()) diff --git a/examples/grid/src/main.rs b/examples/grid/src/main.rs index d2285c02..ed4500af 100644 --- a/examples/grid/src/main.rs +++ b/examples/grid/src/main.rs @@ -1,5 +1,8 @@ -use iced::{theme, Alignment, Color, Element, Length, Sandbox, Settings, - widget::{Button, Column, Container, Scrollable, Text}}; +use iced::{ + theme, + widget::{Button, Column, Container, Scrollable, Text}, + Alignment, Color, Element, Length, Sandbox, Settings, +}; use iced_aw::Grid; diff --git a/examples/menu/src/main.rs b/examples/menu/src/main.rs index a75b2c41..78df18f9 100644 --- a/examples/menu/src/main.rs +++ b/examples/menu/src/main.rs @@ -1,6 +1,8 @@ use iced::widget::column as col; -use iced::widget::{button, checkbox, container, horizontal_space, pick_list, row, slider, svg, - text, text_input, toggler, vertical_slider}; +use iced::widget::{ + button, checkbox, container, horizontal_space, pick_list, row, slider, svg, text, text_input, + toggler, vertical_slider, +}; use iced::{alignment, theme, Application, Color, Element, Length}; use iced_aw::menu::{CloseCondition, ItemHeight, ItemWidth, MenuBar, MenuTree, PathHighlight}; @@ -174,23 +176,26 @@ impl Application for App { menu_3(self), menu_4(self), menu_5(self), - ]).item_width(ItemWidth::Static(180)) - .item_height(ItemHeight::Static(25)), - }.spacing(4.0) - .bounds_expand(30) - .path_highlight(Some(PathHighlight::MenuActive)) - .close_condition(CloseCondition { - leave: true, - click_outside: false, - click_inside: false, - }); + ]) + .item_width(ItemWidth::Static(180)) + .item_height(ItemHeight::Static(25)), + } + .spacing(4.0) + .bounds_expand(30) + .path_highlight(Some(PathHighlight::MenuActive)) + .close_condition(CloseCondition { + leave: true, + click_outside: false, + click_inside: false, + }); let r = if self.flip_h { row!(pick_size_option, horizontal_space(Length::Fill), mb,) } else { row!(mb, horizontal_space(Length::Fill), pick_size_option) - }.padding([2, 8]) - .align_items(alignment::Alignment::Center); + } + .padding([2, 8]) + .align_items(alignment::Alignment::Center); let top_bar_style: fn(&iced::Theme) -> container::Appearance = |_theme| container::Appearance { @@ -300,8 +305,9 @@ fn sub_menu<'a>( arrow ], msg, - ).width(Length::Fill) - .height(Length::Fill), + ) + .width(Length::Fill) + .height(Length::Fill), children, ) } @@ -386,7 +392,8 @@ fn menu_1<'a>(_app: &App) -> MenuTree<'a, Message, iced::Renderer> { debug_item("Item"), debug_item("Item"), ], - ).width(180); + ) + .width(180); let sub_3 = debug_sub_menu( "More sub menus", vec![ @@ -409,7 +416,8 @@ fn menu_1<'a>(_app: &App) -> MenuTree<'a, Message, iced::Renderer> { debug_item("Item"), debug_item("Item"), ], - ).width(140); + ) + .width(140); let sub_1 = debug_sub_menu( "A sub menu", vec![ @@ -420,7 +428,8 @@ fn menu_1<'a>(_app: &App) -> MenuTree<'a, Message, iced::Renderer> { debug_item("Item"), debug_item("Item"), ], - ).width(220); + ) + .width(220); let root = MenuTree::with_children( debug_button("Nested Menus"), @@ -432,7 +441,8 @@ fn menu_1<'a>(_app: &App) -> MenuTree<'a, Message, iced::Renderer> { debug_item("Item"), debug_item("Item"), ], - ).width(110); + ) + .width(110); root } @@ -443,9 +453,10 @@ fn menu_2<'a>(app: &App) -> MenuTree<'a, Message, iced::Renderer> { Some("Or as a sub menu item".to_string()), app.toggle, Message::ToggleChange, - )).padding([0, 8]) - .height(Length::Fill) - .align_y(alignment::Vertical::Center), + )) + .padding([0, 8]) + .height(Length::Fill) + .align_y(alignment::Vertical::Center), vec![ debug_item("Item"), debug_item("Item"), @@ -460,9 +471,10 @@ fn menu_2<'a>(app: &App) -> MenuTree<'a, Message, iced::Renderer> { .width(Length::Fill) .height(Length::Fill) .vertical_alignment(alignment::Vertical::Center), - ).width(Length::Fill) - .height(Length::Fill) - .on_press(Message::Debug("Button".into())), + ) + .width(Length::Fill) + .height(Length::Fill) + .on_press(Message::Debug("Button".into())), ); let cb = @@ -474,7 +486,7 @@ fn menu_2<'a>(app: &App) -> MenuTree<'a, Message, iced::Renderer> { slider(0..=255, app.value, Message::ValueChange) ]); - let txn = MenuTree::new(text_input("", &app.text, Message::TextChange)); + let txn = MenuTree::new(text_input("", &app.text).on_input(Message::TextChange)); let root = MenuTree::with_children( debug_button("Widgets"), @@ -533,13 +545,12 @@ fn menu_3<'a>(app: &App) -> MenuTree<'a, Message, iced::Renderer> { ), separator(), MenuTree::new( - row![ - toggler( - Some("Dark Mode".into()), - app.dark_mode, - Message::ThemeChange - ) - ].padding([0, 8]), + row![toggler( + Some("Dark Mode".into()), + app.dark_mode, + Message::ThemeChange + )] + .padding([0, 8]), ), color_item([0.45, 0.25, 0.57]), color_item([0.15, 0.59, 0.64]), @@ -701,22 +712,28 @@ fn menu_5<'a>(app: &App) -> MenuTree<'a, Message, iced::Renderer> { let sliders = MenuTree::new( row![ - vertical_slider(0..=255, r, move |x| Message::ColorChange( - Color::from_rgb8(x, g, b) - )).width(30), - vertical_slider(0..=255, g, move |x| Message::ColorChange( - Color::from_rgb8(r, x, b) - )).width(30), - vertical_slider(0..=255, b, move |x| Message::ColorChange( - Color::from_rgb8(r, g, x) - )).width(30), - ].spacing(4), - ).height(100); + vertical_slider(0..=255, r, move |x| Message::ColorChange(Color::from_rgb8( + x, g, b + ))) + .width(30), + vertical_slider(0..=255, g, move |x| Message::ColorChange(Color::from_rgb8( + r, x, b + ))) + .width(30), + vertical_slider(0..=255, b, move |x| Message::ColorChange(Color::from_rgb8( + r, g, x + ))) + .width(30), + ] + .spacing(4), + ) + .height(100); let root = MenuTree::with_children( debug_button("Static"), vec![labeled_separator("Primary"), sliders], - ).width(slider_width * slider_count + (slider_count - 1) * spacing); + ) + .width(slider_width * slider_count + (slider_count - 1) * spacing); root } diff --git a/examples/modal/src/main.rs b/examples/modal/src/main.rs index 13b4be24..74d134ae 100644 --- a/examples/modal/src/main.rs +++ b/examples/modal/src/main.rs @@ -1,5 +1,8 @@ -use iced::{Alignment, Element, Length, Sandbox, Settings, alignment::Horizontal, - widget::{Button, Container, Row, Text}}; +use iced::{ + alignment::Horizontal, + widget::{Button, Container, Row, Text}, + Alignment, Element, Length, Sandbox, Settings, +}; use iced_aw::{Card, Modal}; @@ -87,8 +90,9 @@ impl Sandbox for ModalExample { //.width(Length::Shrink) .on_close(Message::CloseModal) .into() - }).backdrop(Message::CloseModal) - .on_esc(Message::CloseModal) - .into() + }) + .backdrop(Message::CloseModal) + .on_esc(Message::CloseModal) + .into() } } diff --git a/examples/modal_component/Cargo.toml b/examples/modal_component/Cargo.toml index 6055cfbd..8c958676 100644 --- a/examples/modal_component/Cargo.toml +++ b/examples/modal_component/Cargo.toml @@ -11,5 +11,5 @@ iced_aw = { workspace = true, features = [ "card", "modal", ] } -iced_lazy = "0.5" +iced_lazy = "0.6" iced.workspace = true \ No newline at end of file diff --git a/examples/modal_component/src/main.rs b/examples/modal_component/src/main.rs index 01a6772b..5dd51859 100644 --- a/examples/modal_component/src/main.rs +++ b/examples/modal_component/src/main.rs @@ -1,5 +1,7 @@ -use iced::{Alignment, Element, Sandbox, Settings, - widget::{container, Button, Container, Row, Text}}; +use iced::{ + widget::{container, Button, Container, Row, Text}, + Alignment, Element, Sandbox, Settings, +}; use iced_aw::Modal; @@ -58,14 +60,18 @@ impl Sandbox for ModalExample { Modal::new(self.show_modal, content, || { container(my_component::MyComponent).into() - }).backdrop(Message::CloseModal) - .on_esc(Message::CloseModal) - .into() + }) + .backdrop(Message::CloseModal) + .on_esc(Message::CloseModal) + .into() } } mod my_component { - use iced::{Element, widget::{container, row, text}}; + use iced::{ + widget::{container, row, text}, + Element, + }; use iced_lazy::{self, Component}; pub struct MyComponent; diff --git a/examples/number_input/src/main.rs b/examples/number_input/src/main.rs index 7d1297e1..430bdd10 100644 --- a/examples/number_input/src/main.rs +++ b/examples/number_input/src/main.rs @@ -1,4 +1,7 @@ -use iced::{window, Alignment, Element, Length, Sandbox, Settings, widget::{Container, Row, Text}}; +use iced::{ + widget::{Container, Row, Text}, + window, Alignment, Element, Length, Sandbox, Settings, +}; use iced_aw::{number_input::NumberInput, style::NumberInputStyles}; #[derive(Default)] @@ -53,10 +56,11 @@ impl Sandbox for NumberInputDemo { .align_items(Alignment::Center) .push(lb_minute) .push(txt_minute), - ).width(Length::Fill) - .height(Length::Fill) - .center_x() - .center_y() - .into() + ) + .width(Length::Fill) + .height(Length::Fill) + .center_x() + .center_y() + .into() } } diff --git a/examples/selection_list/src/main.rs b/examples/selection_list/src/main.rs index 299b2518..fc4b153b 100644 --- a/examples/selection_list/src/main.rs +++ b/examples/selection_list/src/main.rs @@ -1,4 +1,7 @@ -use iced::{Alignment, Element, Length, Sandbox, Settings, widget::{Column, Container, Space, Text}}; +use iced::{ + widget::{Column, Container, Space, Text}, + Alignment, Element, Length, Sandbox, Settings, +}; use iced_aw::selection_list::{SelectionList, SelectionListStyles}; pub fn main() -> iced::Result { @@ -55,8 +58,9 @@ impl Sandbox for Example { 12.0, 5.0, SelectionListStyles::Default, - ).width(Length::Shrink) - .height(Length::Fixed(100.0)); + ) + .width(Length::Shrink) + .height(Length::Fixed(100.0)); let mut content = Column::new() .width(Length::Fill) @@ -79,7 +83,8 @@ impl Sandbox for Example { #[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] pub enum Language { - #[default] Rust, + #[default] + Rust, Elm, Ruby, Haskell, diff --git a/examples/spinner/src/main.rs b/examples/spinner/src/main.rs index 606a2586..842a8ae2 100644 --- a/examples/spinner/src/main.rs +++ b/examples/spinner/src/main.rs @@ -1,5 +1,8 @@ use iced::widget::PickList; -use iced::{Application, Command, Element, Length, Settings, Theme, widget::{column, container}}; +use iced::{ + widget::{column, container}, + Application, Command, Element, Length, Settings, Theme, +}; use iced_aw::Spinner; use std::fmt::{Display, Formatter}; @@ -70,7 +73,8 @@ impl Application for SpinnerExample { Some(self.theme), Message::ThemeChanged ), - ].into() + ] + .into() } fn theme(&self) -> Self::Theme { diff --git a/examples/split/src/main.rs b/examples/split/src/main.rs index 423f9820..f4b921f4 100644 --- a/examples/split/src/main.rs +++ b/examples/split/src/main.rs @@ -1,4 +1,7 @@ -use iced::{Application, Command, Element, Length, Settings, Theme, widget::{Container, Text}}; +use iced::{ + widget::{Container, Text}, + Application, Command, Element, Length, Settings, Theme, +}; use iced_aw::{split, Split}; fn main() -> iced::Result { @@ -78,7 +81,8 @@ impl Application for SplitPaneExample { self.hor_divider_position, split::Axis::Horizontal, Message::OnHorResize, - ).into() + ) + .into() } fn theme(&self) -> Self::Theme { diff --git a/examples/tab_bar/src/main.rs b/examples/tab_bar/src/main.rs index 9c3af64b..52613fdb 100644 --- a/examples/tab_bar/src/main.rs +++ b/examples/tab_bar/src/main.rs @@ -1,5 +1,7 @@ -use iced::{Alignment, Element, Length, Sandbox, Settings, - widget::{Button, Column, Row, Text, TextInput}}; +use iced::{ + widget::{Button, Column, Row, Text, TextInput}, + Alignment, Element, Length, Sandbox, Settings, +}; use iced_aw::{TabBar, TabLabel}; fn main() -> iced::Result { @@ -73,19 +75,15 @@ impl Sandbox for TabBarExample { .push( Row::new() .push( - TextInput::new( - "Tab label", - &self.new_tab_label, - Message::TabLabelInputChanged, - ).size(22) + TextInput::new("Tab label", &self.new_tab_label) + .on_input(Message::TabLabelInputChanged) + .size(22) .padding(5.0), ) .push( - TextInput::new( - "Tab content", - &self.new_tab_content, - Message::TabContentInputChanged, - ).size(22) + TextInput::new("Tab content", &self.new_tab_content) + .on_input(Message::TabContentInputChanged) + .size(22) .padding(5.0), ) .push(Button::new(Text::new("New")).on_press(Message::NewTab)) @@ -113,7 +111,8 @@ impl Sandbox for TabBarExample { Text::new(content) } else { Text::new("Please create a new tab") - }.size(25), + } + .size(25), ) .into() } diff --git a/examples/tabs/src/counter.rs b/examples/tabs/src/counter.rs index c1c8d91f..63c620f8 100644 --- a/examples/tabs/src/counter.rs +++ b/examples/tabs/src/counter.rs @@ -1,4 +1,7 @@ -use iced::{Alignment, Element, widget::{Button, Column, Container, Row, Text}}; +use iced::{ + widget::{Button, Column, Container, Row, Text}, + Alignment, Element, +}; use iced_aw::tab_bar::TabLabel; use crate::{Icon, Message, Tab}; @@ -54,7 +57,8 @@ impl Tab for CounterTab { Button::new(Text::new("Increase")).on_press(CounterMessage::Increase), ), ), - ).into(); + ) + .into(); content.map(Message::Counter) } diff --git a/examples/tabs/src/ferris.rs b/examples/tabs/src/ferris.rs index e3e87476..34317ec5 100644 --- a/examples/tabs/src/ferris.rs +++ b/examples/tabs/src/ferris.rs @@ -1,4 +1,7 @@ -use iced::{Alignment, Element, Length, widget::{Column, Container, Image, Slider, Text}}; +use iced::{ + widget::{Column, Container, Image, Slider, Text}, + Alignment, Element, Length, +}; use iced_aw::tab_bar::TabLabel; use crate::{Icon, Message, Tab}; @@ -55,7 +58,8 @@ impl Tab for FerrisTab { self.ferris_width, FerrisMessage::ImageWidthChanged, )), - ).into(); + ) + .into(); content.map(Message::Ferris) } @@ -67,6 +71,7 @@ fn ferris<'a>(width: f32) -> Container<'a, FerrisMessage> { } else { Image::new(format!("{}/images/ferris.png", env!("CARGO_MANIFEST_DIR"))) .width(Length::Fixed(width)) - }).width(Length::Fill) - .center_x() + }) + .width(Length::Fill) + .center_x() } diff --git a/examples/tabs/src/login.rs b/examples/tabs/src/login.rs index 0826b32a..befe8c72 100644 --- a/examples/tabs/src/login.rs +++ b/examples/tabs/src/login.rs @@ -1,5 +1,8 @@ -use iced::{Alignment, Element, Length, alignment::{Horizontal, Vertical}, - widget::{Button, Column, Container, Row, Text, TextInput}}; +use iced::{ + alignment::{Horizontal, Vertical}, + widget::{Button, Column, Container, Row, Text, TextInput}, + Alignment, Element, Length, +}; use iced_aw::tab_bar::TabLabel; use crate::{Icon, Message, Tab}; @@ -58,12 +61,14 @@ impl Tab for LoginTab { .padding(20) .spacing(16) .push( - TextInput::new("Username", &self.username, LoginMessage::UsernameChanged) + TextInput::new("Username", &self.username) + .on_input(LoginMessage::UsernameChanged) .padding(10) .size(32), ) .push( - TextInput::new("Password", &self.password, LoginMessage::PasswordChanged) + TextInput::new("Password", &self.password) + .on_input(LoginMessage::PasswordChanged) .padding(10) .size(32) .password(), @@ -74,19 +79,22 @@ impl Tab for LoginTab { .push( Button::new( Text::new("Clear").horizontal_alignment(Horizontal::Center), - ).width(Length::Fill) - .on_press(LoginMessage::ClearPressed), + ) + .width(Length::Fill) + .on_press(LoginMessage::ClearPressed), ) .push( Button::new( Text::new("Login").horizontal_alignment(Horizontal::Center), - ).width(Length::Fill) - .on_press(LoginMessage::LoginPressed), + ) + .width(Length::Fill) + .on_press(LoginMessage::LoginPressed), ), ), - ).align_x(Horizontal::Center) - .align_y(Vertical::Center) - .into(); + ) + .align_x(Horizontal::Center) + .align_y(Vertical::Center) + .into(); content.map(Message::Login) } diff --git a/examples/tabs/src/main.rs b/examples/tabs/src/main.rs index 72272c73..3bc69ce0 100644 --- a/examples/tabs/src/main.rs +++ b/examples/tabs/src/main.rs @@ -1,6 +1,9 @@ mod login; -use iced::{Element, Font, Length, Sandbox, Settings, alignment::{Horizontal, Vertical}, - widget::{Column, Container, Text}}; +use iced::{ + alignment::{Horizontal, Vertical}, + widget::{Column, Container, Text}, + Element, Font, Length, Sandbox, Settings, +}; use iced_aw::{TabLabel, Tabs}; use login::{LoginMessage, LoginTab}; @@ -88,11 +91,13 @@ impl Sandbox for TabBarExample { } fn view(&self) -> Element<'_, Self::Message> { - let position = self.settings_tab + let position = self + .settings_tab .settings() .tab_bar_position .unwrap_or_default(); - let theme = self.settings_tab + let theme = self + .settings_tab .settings() .tab_bar_theme .unwrap_or_default(); diff --git a/examples/tabs/src/settings.rs b/examples/tabs/src/settings.rs index a523b12f..0b73ca43 100644 --- a/examples/tabs/src/settings.rs +++ b/examples/tabs/src/settings.rs @@ -1,10 +1,14 @@ use crate::{Icon, Message, Tab}; -use iced::{Element, widget::{Column, Container, Radio, Text}}; +use iced::{ + widget::{Column, Container, Radio, Text}, + Element, +}; use iced_aw::style::TabBarStyles; use iced_aw::tab_bar::TabLabel; #[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] pub enum TabBarPosition { - #[default] Top, + #[default] + Top, Bottom, } @@ -92,7 +96,8 @@ impl Tab for SettingsTab { position, self.settings().tab_bar_position, SettingsMessage::PositionSelected, - ).size(16), + ) + .size(16), ) }, )) @@ -105,11 +110,13 @@ impl Tab for SettingsTab { predefined_style(id), self.settings().tab_bar_theme, SettingsMessage::ThemeSelected, - ).size(16), + ) + .size(16), ) }), ), - ).into(); + ) + .into(); content.map(Message::Settings) } diff --git a/examples/time_picker/src/main.rs b/examples/time_picker/src/main.rs index 57bff787..92f5989c 100644 --- a/examples/time_picker/src/main.rs +++ b/examples/time_picker/src/main.rs @@ -1,5 +1,8 @@ -use iced::{Alignment, Element, Length, Sandbox, Settings, widget::{Button, Container, Row, Text}}; -use iced_aw::{TimePicker, time_picker::Time}; +use iced::{ + widget::{Button, Container, Row, Text}, + Alignment, Element, Length, Sandbox, Settings, +}; +use iced_aw::{time_picker::Time, TimePicker}; fn main() -> iced::Result { TimePickerExample::run(Settings::default()) diff --git a/examples/wrap/src/main.rs b/examples/wrap/src/main.rs index eb036238..2d1ee4dc 100644 --- a/examples/wrap/src/main.rs +++ b/examples/wrap/src/main.rs @@ -1,6 +1,9 @@ use std::fmt::Display; -use iced::{Element, Sandbox, Settings, widget::{Button, Column, Container, PickList, Row, Text}}; +use iced::{ + widget::{Button, Column, Container, PickList, Row, Text}, + Element, Sandbox, Settings, +}; use iced_aw::{NumberInput, Wrap}; use rand::Rng; @@ -28,7 +31,6 @@ impl From for WrapAlign { iced::Alignment::Start => Self::Start, iced::Alignment::Center => Self::Center, iced::Alignment::End => Self::End, - iced::Alignment::Fill => panic!("Does not Exist for wrap align"), } } } @@ -122,7 +124,8 @@ impl Sandbox for RandStrings { .spacing(self.spacing) .line_spacing(self.line_spacing) .line_minimal_length(self.line_minimal_length), - ).width(iced::Length::FillPortion(5)); + ) + .width(iced::Length::FillPortion(5)); let horizontal = Container::new( hbuttons .iter() @@ -134,7 +137,8 @@ impl Sandbox for RandStrings { .spacing(self.spacing) .line_spacing(self.line_spacing) .line_minimal_length(self.line_minimal_length), - ).width(iced::Length::FillPortion(5)); + ) + .width(iced::Length::FillPortion(5)); let align_picklist = PickList::new( vec![WrapAlign::Start, WrapAlign::Center, WrapAlign::End], Some(self.align.into()), @@ -147,16 +151,22 @@ impl Sandbox for RandStrings { 500.0, Message::ChangeSpacing, )); - let line_spacing_input = Column::new().push(Text::new("line spacing")).push( - NumberInput::new(self.line_spacing, 500.0, Message::ChangeLineSpacing), - ); - let line_minimal_length_input = Column::new().push(Text::new("line minimal length")).push( - NumberInput::new( - self.line_minimal_length, - 999.0, - Message::ChangeMinimalLength, - ), - ); + let line_spacing_input = + Column::new() + .push(Text::new("line spacing")) + .push(NumberInput::new( + self.line_spacing, + 500.0, + Message::ChangeLineSpacing, + )); + let line_minimal_length_input = + Column::new() + .push(Text::new("line minimal length")) + .push(NumberInput::new( + self.line_minimal_length, + 999.0, + Message::ChangeMinimalLength, + )); let ctrls = Column::new() .push(align_picklist) .push(spacing_input) diff --git a/src/native/cupertino/cupertino_spinner.rs b/src/native/cupertino/cupertino_spinner.rs index 5f235c73..77d9208e 100644 --- a/src/native/cupertino/cupertino_spinner.rs +++ b/src/native/cupertino/cupertino_spinner.rs @@ -2,19 +2,22 @@ use iced_graphics::{Backend, Renderer}; use iced_native::event::Status; use iced_native::layout::{Limits, Node}; use iced_native::renderer::Style; -use iced_native::widget::{tree::{State, Tag}, Tree}; +use iced_native::widget::{ + tree::{State, Tag}, + Tree, +}; use iced_native::{ - Clipboard, Color, Element, Event, Layout, Length, Point, Rectangle, Size, Shell, - Vector, Widget, window, + window, Clipboard, Color, Element, Event, Layout, Length, Point, Rectangle, Shell, Size, + Vector, Widget, }; -use iced_graphics::widget::canvas::{stroke, Cache, Geometry, LineCap, Path, Stroke,}; +use iced_graphics::widget::canvas::{stroke, Cache, Geometry, LineCap, Path, Stroke}; use std::f32::consts::PI; -const HAND_COUNT: usize = 8; -const ALPHAS: [u16; 8] = [47, 47, 47, 47, 72, 97, 122, 147]; +const HAND_COUNT: usize = 8; +const ALPHAS: [u16; 8] = [47, 47, 47, 47, 72, 97, 122, 147]; /** * `CupertinoSpinner` @@ -38,22 +41,22 @@ const ALPHAS: [u16; 8] = [47, 47, 47, 47, 72, 97, 122, 147]; #[allow(missing_debug_implementations)] #[derive(Debug)] pub struct CupertinoSpinner { - width: Length, + width: Length, height: Length, radius: f32, } struct SpinnerState { - now: time::OffsetDateTime, + now: time::OffsetDateTime, spinner: Cache, } impl Default for CupertinoSpinner { fn default() -> Self { Self { - width: Length::Fixed(20.0), - height: Length::Fixed(20.0), - radius: 20.0, + width: Length::Fixed(20.0), + height: Length::Fixed(20.0), + radius: 20.0, } } } @@ -85,38 +88,44 @@ impl CupertinoSpinner { } } -impl<'a, Message, B, T> Widget> -for CupertinoSpinner -where B: Backend { - fn width(&self) -> Length { self.width } - fn height(&self) -> Length { self.height } +impl<'a, Message, B, T> Widget> for CupertinoSpinner +where + B: Backend, +{ + fn width(&self) -> Length { + self.width + } + fn height(&self) -> Length { + self.height + } fn layout(&self, _renderer: &Renderer, limits: &Limits) -> Node { - Node::new(limits - .width(self.width) - .height(self.height) - .resolve(Size::new(f32::INFINITY, f32::INFINITY)), + Node::new( + limits + .width(self.width) + .height(self.height) + .resolve(Size::new(f32::INFINITY, f32::INFINITY)), ) } fn draw( &self, - state: &Tree, - renderer: &mut Renderer, - _theme: &T, - _style: &Style, - layout: Layout<'_>, + state: &Tree, + renderer: &mut Renderer, + _theme: &T, + _style: &Style, + layout: Layout<'_>, _cursor_position: Point, - _viewport: &Rectangle, + _viewport: &Rectangle, ) { let state: &SpinnerState = state.state.downcast_ref::(); let spinner: Geometry = state.spinner.draw(layout.bounds().size(), |frame| { let center = frame.center(); let radius = self.radius; - let width = radius / 5.0; + let width = radius / 5.0; - let mut hands: Vec<(Path, _)> = vec!(); + let mut hands: Vec<(Path, _)> = vec![]; for i in 0..HAND_COUNT { hands.push(( @@ -125,7 +134,7 @@ where B: Backend { // The `60.0` is to shift the original black to dark grey // gen_stroke( width, - Color::from_rgba(0.0, 0.0, 0.0, ALPHAS[i] as f32 / (60.0 + 147.0)) + Color::from_rgba(0.0, 0.0, 0.0, ALPHAS[i] as f32 / (60.0 + 147.0)), ) }, )) @@ -144,7 +153,7 @@ where B: Backend { frame.stroke( &hands[i].0, - hands[((HAND_COUNT - i - 1) + new_index) % 8].1() + hands[((HAND_COUNT - i - 1) + new_index) % 8].1(), ); } }); @@ -154,34 +163,34 @@ where B: Backend { renderer.draw_primitive(spinner.into_primitive()); } - fn tag(&self) -> Tag { Tag::of::() } + fn tag(&self) -> Tag { + Tag::of::() + } fn state(&self) -> State { State::new(SpinnerState { - now: time::OffsetDateTime::now_local().unwrap_or_else( - |_| time::OffsetDateTime::now_utc() - ), + now: time::OffsetDateTime::now_local() + .unwrap_or_else(|_| time::OffsetDateTime::now_utc()), spinner: Default::default(), }) } fn on_event( - &mut self, - state: &mut Tree, - event: Event, - _layout: Layout<'_>, - _cursor_position: Point, - _renderer: &Renderer, - _clipboard: &mut dyn Clipboard, - shell: &mut Shell<'_, Message>, + &mut self, + state: &mut Tree, + event: Event, + _layout: Layout<'_>, + _cursor_position: Point, + _renderer: &Renderer, + _clipboard: &mut dyn Clipboard, + shell: &mut Shell<'_, Message>, ) -> Status { let state: &mut SpinnerState = state.state.downcast_mut::(); if let Event::Window(window::Event::RedrawRequested(_now)) = &event { // if is_visible(&bounds) { - state.now = time::OffsetDateTime::now_local().unwrap_or_else( - |_| time::OffsetDateTime::now_utc() - ); + state.now = time::OffsetDateTime::now_local() + .unwrap_or_else(|_| time::OffsetDateTime::now_utc()); state.spinner.clear(); shell.request_redraw(window::RedrawRequest::NextFrame); @@ -192,9 +201,10 @@ where B: Backend { } } -impl<'a, Message, B, T> From -for Element<'a, Message, Renderer> -where B: Backend { +impl<'a, Message, B, T> From for Element<'a, Message, Renderer> +where + B: Backend, +{ fn from(spinner: CupertinoSpinner) -> Self { Self::new(spinner) } @@ -216,4 +226,3 @@ fn hand_rotation(n: u16, total: u16) -> f32 { K * turns } - diff --git a/src/native/cupertino/mod.rs b/src/native/cupertino/mod.rs index d0ef3d3d..86dd048f 100644 --- a/src/native/cupertino/mod.rs +++ b/src/native/cupertino/mod.rs @@ -2,4 +2,3 @@ /// /// *This API requires the following crate features to be activated: `cupertino`* pub mod cupertino_spinner; - diff --git a/src/native/menu/flex.rs b/src/native/menu/flex.rs index bcbdfb78..fe46e079 100644 --- a/src/native/menu/flex.rs +++ b/src/native/menu/flex.rs @@ -85,7 +85,7 @@ where let mut nodes: Vec = Vec::with_capacity(items.len()); nodes.resize(items.len(), Node::default()); - if align_items == Alignment::Fill { + if align_items == Alignment::Center { let mut fill_cross = axis.cross(limits.min()); for child in items.iter() { @@ -120,13 +120,13 @@ where .fill_factor(); if fill_factor == 0 { - let (min_width, min_height) = if align_items == Alignment::Fill { + let (min_width, min_height) = if align_items == Alignment::Center { axis.pack(0.0, cross) } else { axis.pack(0.0, 0.0) }; - let (max_width, max_height) = if align_items == Alignment::Fill { + let (max_width, max_height) = if align_items == Alignment::Center { axis.pack(available, cross) } else { axis.pack(available, max_cross) @@ -142,7 +142,7 @@ where available -= axis.main(size); - if align_items != Alignment::Fill { + if align_items != Alignment::Center { cross = cross.max(axis.cross(size)); } @@ -170,13 +170,13 @@ where max_main }; - let (min_width, min_height) = if align_items == Alignment::Fill { + let (min_width, min_height) = if align_items == Alignment::Center { axis.pack(min_main, cross) } else { axis.pack(min_main, axis.cross(limits.min())) }; - let (max_width, max_height) = if align_items == Alignment::Fill { + let (max_width, max_height) = if align_items == Alignment::Center { axis.pack(max_main, cross) } else { axis.pack(max_main, max_cross) @@ -189,7 +189,7 @@ where let layout = child.as_widget().layout(renderer, &child_limits); - if align_items != Alignment::Fill { + if align_items != Alignment::Center { cross = cross.max(axis.cross(layout.size())); } diff --git a/src/native/mod.rs b/src/native/mod.rs index 7b56156c..d4559674 100644 --- a/src/native/mod.rs +++ b/src/native/mod.rs @@ -94,4 +94,3 @@ pub mod spinner; #[cfg(feature = "spinner")] pub use spinner::Spinner; - diff --git a/src/native/number_input.rs b/src/native/number_input.rs index fa70cb4a..a099122d 100644 --- a/src/native/number_input.rs +++ b/src/native/number_input.rs @@ -112,7 +112,8 @@ where bounds: (T::zero(), max), padding, size: None, - content: TextInput::new("", format!("{value}").as_str(), convert_to_num) + content: TextInput::new("", format!("{value}").as_str()) + .on_input(convert_to_num) .padding(padding) .width(Length::Fixed(127.0)), on_change: Box::new(on_changed),