Show slider doc example in multiple places

This commit is contained in:
Héctor Ramón Jiménez 2024-09-19 05:42:21 +02:00
parent 94f0e0a212
commit 10fa40a85f
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
3 changed files with 162 additions and 18 deletions

View file

@ -969,7 +969,36 @@ where
/// Creates a new [`Slider`]. /// Creates a new [`Slider`].
/// ///
/// [`Slider`]: crate::Slider /// Sliders let users set a value by moving an indicator.
///
/// # Example
/// ```no_run
/// # mod iced { pub mod widget { pub use iced_widget::*; } pub use iced_widget::Renderer; pub use iced_widget::core::*; }
/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
/// #
/// use iced::widget::slider;
///
/// struct State {
/// value: f32,
/// }
///
/// #[derive(Debug, Clone)]
/// enum Message {
/// ValueChanged(f32),
/// }
///
/// fn view(state: &State) -> Element<'_, Message> {
/// slider(0.0..=100.0, state.value, Message::ValueChanged).into()
/// }
///
/// fn update(state: &mut State, message: Message) {
/// match message {
/// Message::ValueChanged(value) => {
/// state.value = value;
/// }
/// }
/// }
/// ```
pub fn slider<'a, T, Message, Theme>( pub fn slider<'a, T, Message, Theme>(
range: std::ops::RangeInclusive<T>, range: std::ops::RangeInclusive<T>,
value: T, value: T,
@ -985,7 +1014,36 @@ where
/// Creates a new [`VerticalSlider`]. /// Creates a new [`VerticalSlider`].
/// ///
/// [`VerticalSlider`]: crate::VerticalSlider /// Sliders let users set a value by moving an indicator.
///
/// # Example
/// ```no_run
/// # mod iced { pub mod widget { pub use iced_widget::*; } pub use iced_widget::Renderer; pub use iced_widget::core::*; }
/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
/// #
/// use iced::widget::vertical_slider;
///
/// struct State {
/// value: f32,
/// }
///
/// #[derive(Debug, Clone)]
/// enum Message {
/// ValueChanged(f32),
/// }
///
/// fn view(state: &State) -> Element<'_, Message> {
/// vertical_slider(0.0..=100.0, state.value, Message::ValueChanged).into()
/// }
///
/// fn update(state: &mut State, message: Message) {
/// match message {
/// Message::ValueChanged(value) => {
/// state.value = value;
/// }
/// }
/// }
/// ```
pub fn vertical_slider<'a, T, Message, Theme>( pub fn vertical_slider<'a, T, Message, Theme>(
range: std::ops::RangeInclusive<T>, range: std::ops::RangeInclusive<T>,
value: T, value: T,

View file

@ -1,4 +1,33 @@
//! Display an interactive selector of a single value from a range of values. //! Sliders let users set a value by moving an indicator.
//!
//! # Example
//! ```no_run
//! # mod iced { pub mod widget { pub use iced_widget::*; } pub use iced_widget::Renderer; pub use iced_widget::core::*; }
//! # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
//! #
//! use iced::widget::slider;
//!
//! struct State {
//! value: f32,
//! }
//!
//! #[derive(Debug, Clone)]
//! enum Message {
//! ValueChanged(f32),
//! }
//!
//! fn view(state: &State) -> Element<'_, Message> {
//! slider(0.0..=100.0, state.value, Message::ValueChanged).into()
//! }
//!
//! fn update(state: &mut State, message: Message) {
//! match message {
//! Message::ValueChanged(value) => {
//! state.value = value;
//! }
//! }
//! }
//! ```
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::keyboard; use crate::core::keyboard;
@ -25,19 +54,32 @@ use std::ops::RangeInclusive;
/// ///
/// # Example /// # Example
/// ```no_run /// ```no_run
/// # type Slider<'a, T, Message> = iced_widget::Slider<'a, Message, T>; /// # mod iced { pub mod widget { pub use iced_widget::*; } pub use iced_widget::Renderer; pub use iced_widget::core::*; }
/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
/// # /// #
/// #[derive(Clone)] /// use iced::widget::slider;
/// pub enum Message { ///
/// SliderChanged(f32), /// struct State {
/// value: f32,
/// } /// }
/// ///
/// let value = 50.0; /// #[derive(Debug, Clone)]
/// enum Message {
/// ValueChanged(f32),
/// }
/// ///
/// Slider::new(0.0..=100.0, value, Message::SliderChanged); /// fn view(state: &State) -> Element<'_, Message> {
/// slider(0.0..=100.0, state.value, Message::ValueChanged).into()
/// }
///
/// fn update(state: &mut State, message: Message) {
/// match message {
/// Message::ValueChanged(value) => {
/// state.value = value;
/// }
/// }
/// }
/// ``` /// ```
///
/// ![Slider drawn by Coffee's renderer](https://github.com/hecrj/coffee/blob/bda9818f823dfcb8a7ad0ff4940b4d4b387b5208/images/ui/slider.png?raw=true)
#[allow(missing_debug_implementations)] #[allow(missing_debug_implementations)]
pub struct Slider<'a, T, Message, Theme = crate::Theme> pub struct Slider<'a, T, Message, Theme = crate::Theme>
where where

View file

@ -1,4 +1,33 @@
//! Display an interactive selector of a single value from a range of values. //! Sliders let users set a value by moving an indicator.
//!
//! # Example
//! ```no_run
//! # mod iced { pub mod widget { pub use iced_widget::*; } pub use iced_widget::Renderer; pub use iced_widget::core::*; }
//! # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
//! #
//! use iced::widget::slider;
//!
//! struct State {
//! value: f32,
//! }
//!
//! #[derive(Debug, Clone)]
//! enum Message {
//! ValueChanged(f32),
//! }
//!
//! fn view(state: &State) -> Element<'_, Message> {
//! slider(0.0..=100.0, state.value, Message::ValueChanged).into()
//! }
//!
//! fn update(state: &mut State, message: Message) {
//! match message {
//! Message::ValueChanged(value) => {
//! state.value = value;
//! }
//! }
//! }
//! ```
use std::ops::RangeInclusive; use std::ops::RangeInclusive;
pub use crate::slider::{ pub use crate::slider::{
@ -29,16 +58,31 @@ use crate::core::{
/// ///
/// # Example /// # Example
/// ```no_run /// ```no_run
/// # type VerticalSlider<'a, T, Message> = iced_widget::VerticalSlider<'a, T, Message>; /// # mod iced { pub mod widget { pub use iced_widget::*; } pub use iced_widget::Renderer; pub use iced_widget::core::*; }
/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
/// # /// #
/// #[derive(Clone)] /// use iced::widget::vertical_slider;
/// pub enum Message { ///
/// SliderChanged(f32), /// struct State {
/// value: f32,
/// } /// }
/// ///
/// let value = 50.0; /// #[derive(Debug, Clone)]
/// enum Message {
/// ValueChanged(f32),
/// }
/// ///
/// VerticalSlider::new(0.0..=100.0, value, Message::SliderChanged); /// fn view(state: &State) -> Element<'_, Message> {
/// vertical_slider(0.0..=100.0, state.value, Message::ValueChanged).into()
/// }
///
/// fn update(state: &mut State, message: Message) {
/// match message {
/// Message::ValueChanged(value) => {
/// state.value = value;
/// }
/// }
/// }
/// ``` /// ```
#[allow(missing_debug_implementations)] #[allow(missing_debug_implementations)]
pub struct VerticalSlider<'a, T, Message, Theme = crate::Theme> pub struct VerticalSlider<'a, T, Message, Theme = crate::Theme>