Add quick example to widget::button module

This commit is contained in:
Héctor Ramón Jiménez 2024-09-18 23:05:50 +02:00
parent dc2efb3fab
commit 0a95af78f4
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 48 additions and 14 deletions

View file

@ -1,4 +1,20 @@
//! Allow your users to perform actions by pressing a button. //! Buttons allow your users to perform actions by pressing them.
//!
//! ```no_run
//! # mod iced { pub mod widget { pub use iced_widget::*; } }
//! # pub type State = ();
//! # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
//! use iced::widget::button;
//!
//! #[derive(Clone)]
//! enum Message {
//! ButtonPressed,
//! }
//!
//! fn view(state: &State) -> Element<'_, Message> {
//! button("Press me!").on_press(Message::ButtonPressed).into()
//! }
//! ```
use crate::core::border::{self, Border}; use crate::core::border::{self, Border};
use crate::core::event::{self, Event}; use crate::core::event::{self, Event};
use crate::core::layout; use crate::core::layout;
@ -17,33 +33,37 @@ use crate::core::{
/// A generic widget that produces a message when pressed. /// A generic widget that produces a message when pressed.
/// ///
/// ```no_run /// ```no_run
/// # type Button<'a, Message> = iced_widget::Button<'a, Message>; /// # mod iced { pub mod widget { pub use iced_widget::*; } }
/// # /// # pub type State = ();
/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
/// use iced::widget::button;
///
/// #[derive(Clone)] /// #[derive(Clone)]
/// enum Message { /// enum Message {
/// ButtonPressed, /// ButtonPressed,
/// } /// }
/// ///
/// let button = Button::new("Press me!").on_press(Message::ButtonPressed); /// fn view(state: &State) -> Element<'_, Message> {
/// button("Press me!").on_press(Message::ButtonPressed).into()
/// }
/// ``` /// ```
/// ///
/// If a [`Button::on_press`] handler is not set, the resulting [`Button`] will /// If a [`Button::on_press`] handler is not set, the resulting [`Button`] will
/// be disabled: /// be disabled:
/// ///
/// ``` /// ```no_run
/// # type Button<'a, Message> = iced_widget::Button<'a, Message>; /// # mod iced { pub mod widget { pub use iced_widget::*; } }
/// # /// # pub type State = ();
/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
/// use iced::widget::button;
///
/// #[derive(Clone)] /// #[derive(Clone)]
/// enum Message { /// enum Message {
/// ButtonPressed, /// ButtonPressed,
/// } /// }
/// ///
/// fn disabled_button<'a>() -> Button<'a, Message> { /// fn view(state: &State) -> Element<'_, Message> {
/// Button::new("I'm disabled!") /// button("I am disabled!").into()
/// }
///
/// fn enabled_button<'a>() -> Button<'a, Message> {
/// disabled_button().on_press(Message::ButtonPressed)
/// } /// }
/// ``` /// ```
#[allow(missing_debug_implementations)] #[allow(missing_debug_implementations)]

View file

@ -653,7 +653,21 @@ where
/// Creates a new [`Button`] with the provided content. /// Creates a new [`Button`] with the provided content.
/// ///
/// [`Button`]: crate::Button /// ```no_run
/// # mod iced { pub mod widget { pub use iced_widget::*; } }
/// # pub type State = ();
/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
/// use iced::widget::button;
///
/// #[derive(Clone)]
/// enum Message {
/// ButtonPressed,
/// }
///
/// fn view(state: &State) -> Element<'_, Message> {
/// button("Press me!").on_press(Message::ButtonPressed).into()
/// }
/// ```
pub fn button<'a, Message, Theme, Renderer>( pub fn button<'a, Message, Theme, Renderer>(
content: impl Into<Element<'a, Message, Theme, Renderer>>, content: impl Into<Element<'a, Message, Theme, Renderer>>,
) -> Button<'a, Message, Theme, Renderer> ) -> Button<'a, Message, Theme, Renderer>