diff options
author | 2024-10-17 07:29:31 +0300 | |
---|---|---|
committer | 2024-10-17 04:29:31 +0000 | |
commit | ab2adb11be28a3e44aa77daf41bbf7d86233d4ea (patch) | |
tree | 81cc1e5bc411f7d5b787675e36b83071ec751129 | |
parent | 4e0a63091cf1b5dbff0271200eac49d1b65e77e7 (diff) | |
download | iced-ab2adb11be28a3e44aa77daf41bbf7d86233d4ea.tar.gz iced-ab2adb11be28a3e44aa77daf41bbf7d86233d4ea.tar.bz2 iced-ab2adb11be28a3e44aa77daf41bbf7d86233d4ea.zip |
Update button Catalog and Style documentation (#2590)
* Update button Catalog and Style documentation
* Clarified button documentation
* fix code typo
* Run `cargo fmt`
* Fixed docs to pass tests
---------
Co-authored-by: Héctor Ramón Jiménez <hector@hecrj.dev>
-rw-r--r-- | widget/src/button.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/widget/src/button.rs b/widget/src/button.rs index 552298bb..a3394a01 100644 --- a/widget/src/button.rs +++ b/widget/src/button.rs @@ -471,6 +471,9 @@ pub enum Status { } /// The style of a button. +/// +/// If not specified with [`Button::style`] +/// the theme will provide the style. #[derive(Debug, Clone, Copy, PartialEq)] pub struct Style { /// The [`Background`] of the button. @@ -505,6 +508,54 @@ impl Default for Style { } /// The theme catalog of a [`Button`]. +/// +/// All themes that can be used with [`Button`] +/// must implement this trait. +/// +/// # Example +/// ```no_run +/// # use iced_widget::core::{Color, Background}; +/// # use iced_widget::button::{Catalog, Status, Style}; +/// # struct MyTheme; +/// #[derive(Debug, Default)] +/// pub enum ButtonClass { +/// #[default] +/// Primary, +/// Secondary, +/// Danger +/// } +/// +/// impl Catalog for MyTheme { +/// type Class<'a> = ButtonClass; +/// +/// fn default<'a>() -> Self::Class<'a> { +/// ButtonClass::default() +/// } +/// +/// +/// fn style(&self, class: &Self::Class<'_>, status: Status) -> Style { +/// let mut style = Style::default(); +/// +/// match class { +/// ButtonClass::Primary => { +/// style.background = Some(Background::Color(Color::from_rgb(0.529, 0.808, 0.921))); +/// }, +/// ButtonClass::Secondary => { +/// style.background = Some(Background::Color(Color::WHITE)); +/// }, +/// ButtonClass::Danger => { +/// style.background = Some(Background::Color(Color::from_rgb(0.941, 0.502, 0.502))); +/// }, +/// } +/// +/// style +/// } +/// } +/// ``` +/// +/// Although, in order to use [`Button::style`] +/// with `MyTheme`, [`Catalog::Class`] must implement +/// `From<StyleFn<'_, MyTheme>>`. pub trait Catalog { /// The item class of the [`Catalog`]. type Class<'a>; |