diff --git a/examples/progressbar.rs b/examples/progress_bar.rs similarity index 82% rename from examples/progressbar.rs rename to examples/progress_bar.rs index c4ebf248..56f54903 100644 --- a/examples/progressbar.rs +++ b/examples/progress_bar.rs @@ -1,8 +1,8 @@ use iced::{ - settings::Window, slider, Background, Color, Column, Element, Sandbox, - Settings, Slider, + settings::Window, slider, Background, Color, Column, Element, Length, + Sandbox, Settings, Slider, }; -use iced_winit::Progressbar; +use iced_winit::ProgressBar; pub fn main() { Progress::run(Settings { @@ -17,7 +17,7 @@ pub fn main() { #[derive(Default)] struct Progress { value: f32, - progressbar_slider: slider::State, + progress_bar_slider: slider::State, } #[derive(Debug, Clone, Copy)] @@ -46,14 +46,15 @@ impl Sandbox for Progress { Column::new() .padding(20) .push( - Progressbar::new(0.0..=100.0, self.value) + ProgressBar::new(0.0..=100.0, self.value) .background(Background::Color(Color::from_rgb( 0.6, 0.6, 0.6, ))) - .active_color(Color::from_rgb(0.0, 0.95, 0.0)), + .active_color(Color::from_rgb(0.0, 0.95, 0.0)) + .height(Length::Units(30)), ) .push(Slider::new( - &mut self.progressbar_slider, + &mut self.progress_bar_slider, 0.0..=100.0, self.value, Message::SliderChanged, diff --git a/native/src/widget.rs b/native/src/widget.rs index d899da58..ccc9b47e 100644 --- a/native/src/widget.rs +++ b/native/src/widget.rs @@ -25,7 +25,7 @@ pub mod checkbox; pub mod column; pub mod container; pub mod image; -pub mod progressbar; +pub mod progress_bar; pub mod radio; pub mod row; pub mod scrollable; @@ -46,7 +46,7 @@ pub use container::Container; #[doc(no_inline)] pub use image::Image; #[doc(no_inline)] -pub use progressbar::Progressbar; +pub use progress_bar::ProgressBar; #[doc(no_inline)] pub use radio::Radio; #[doc(no_inline)] diff --git a/native/src/widget/progressbar.rs b/native/src/widget/progress_bar.rs similarity index 57% rename from native/src/widget/progressbar.rs rename to native/src/widget/progress_bar.rs index fc55a803..f9b87026 100644 --- a/native/src/widget/progressbar.rs +++ b/native/src/widget/progress_bar.rs @@ -1,7 +1,7 @@ -//! Display a progressbar +//! Display a ProgressBar //! //! -//! [`Progressbar`]: struct.Progressbar.html +//! [`ProgressBar`]: struct.ProgressBar.html use crate::{ layout, Background, Color, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, @@ -9,71 +9,83 @@ use crate::{ use std::{hash::Hash, ops::RangeInclusive}; -/// A progressbar +const DEFAULT_HEIGHT: Length = Length::Units(30); + +/// A ProgressBar /// /// # Example /// /// ``` -/// # use iced_native::Progressbar; -/// +/// # use iced_native::ProgressBar; +/// /// let value = 50.0; -/// Progressbar::new(0.0..=100.0, value); +/// ProgressBar::new(0.0..=100.0, value); /// ``` /// -/// ![Default Progressbar](https://user-images.githubusercontent.com/18618951/71662391-a316c200-2d51-11ea-9cef-52758cab85e3.png) +/// ![Default ProgressBar](https://user-images.githubusercontent.com/18618951/71662391-a316c200-2d51-11ea-9cef-52758cab85e3.png) #[allow(missing_debug_implementations)] -pub struct Progressbar { +pub struct ProgressBar { range: RangeInclusive, value: f32, width: Length, + height: Length, background: Option, active_color: Option, } -impl Progressbar { - /// Creates a new [`Progressbar`]. +impl ProgressBar { + /// Creates a new [`ProgressBar`]. /// /// It expects: /// * an inclusive range of possible values - /// * the current value of the [`Progressbar`] + /// * the current value of the [`ProgressBar`] /// - /// [`Progressbar`]: struct.Progressbar.html + /// [`ProgressBar`]: struct.ProgressBar.html pub fn new(range: RangeInclusive, value: f32) -> Self { - Progressbar { + ProgressBar { value: value.max(*range.start()).min(*range.end()), range, width: Length::Fill, + height: DEFAULT_HEIGHT, background: None, active_color: None, } } - /// Sets the width of the [`Progressbar`]. + /// Sets the width of the [`ProgressBar`]. /// - /// [`Progressbar`]: struct.Progressbar.html + /// [`ProgressBar`]: struct.ProgressBar.html pub fn width(mut self, width: Length) -> Self { self.width = width; self } - /// Sets the background of the [`Progressbar`]. + /// Sets the height of the [`ProgressBar`]. /// - /// [`Progressbar`]: struct.Progressbar.html + /// [`ProgressBar`]: struct.ProgressBar.html + pub fn height(mut self, height: Length) -> Self { + self.height = height; + self + } + + /// Sets the background of the [`ProgressBar`]. + /// + /// [`ProgressBar`]: struct.ProgressBar.html pub fn background(mut self, background: Background) -> Self { self.background = Some(background); self } - /// Sets the active color of the [`Progressbar`]. + /// Sets the active color of the [`ProgressBar`]. /// - /// [`Progressbar`]: struct.Progressbar.html + /// [`ProgressBar`]: struct.ProgressBar.html pub fn active_color(mut self, active_color: Color) -> Self { self.active_color = Some(active_color); self } } -impl Widget for Progressbar +impl Widget for ProgressBar where Renderer: self::Renderer, { @@ -82,17 +94,15 @@ where } fn height(&self) -> Length { - Length::Shrink + self.height } fn layout( &self, - renderer: &Renderer, + _renderer: &Renderer, limits: &layout::Limits, ) -> layout::Node { - let limits = limits - .width(self.width) - .height(Length::Units(renderer.height() as u16)); + let limits = limits.width(self.width).height(self.height); let size = limits.resolve(Size::ZERO); @@ -119,30 +129,25 @@ where } } -/// The renderer of a [`Progressbar`]. +/// The renderer of a [`ProgressBar`]. /// /// Your [renderer] will need to implement this trait before being -/// able to use a [`Progressbar`] in your user interface. +/// able to use a [`ProgressBar`] in your user interface. /// -/// [`Progressbar`]: struct.Progressbar.html +/// [`ProgressBar`]: struct.ProgressBar.html /// [renderer]: ../../renderer/index.html pub trait Renderer: crate::Renderer { - /// Returns the height of the [`Progressbar`]. - /// - /// [`Progressbar`]: struct.Progressbar.html - fn height(&self) -> u32; - - /// Draws a [`Progressbar`]. + /// Draws a [`ProgressBar`]. /// /// It receives: - /// * the local state of the [`Progressbar`] - /// * the bounds of the [`Progressbar`] - /// * the range of values of the [`Progressbar`] - /// * the current value of the [`Progressbar`] - /// * maybe a specific background of the [`Progressbar`] - /// * maybe a specific active color of the [`Progressbar`] + /// * the local state of the [`ProgressBar`] + /// * the bounds of the [`ProgressBar`] + /// * the range of values of the [`ProgressBar`] + /// * the current value of the [`ProgressBar`] + /// * maybe a specific background of the [`ProgressBar`] + /// * maybe a specific active color of the [`ProgressBar`] /// - /// [`Progressbar`]: struct.Progressbar.html + /// [`ProgressBar`]: struct.ProgressBar.html /// [`State`]: struct.State.html /// [`Class`]: enum.Class.html fn draw( @@ -155,12 +160,12 @@ pub trait Renderer: crate::Renderer { ) -> Self::Output; } -impl<'a, Message, Renderer> From for Element<'a, Message, Renderer> +impl<'a, Message, Renderer> From for Element<'a, Message, Renderer> where Renderer: self::Renderer, Message: 'static, { - fn from(progressbar: Progressbar) -> Element<'a, Message, Renderer> { + fn from(progressbar: ProgressBar) -> Element<'a, Message, Renderer> { Element::new(progressbar) } } diff --git a/wgpu/src/renderer/widget.rs b/wgpu/src/renderer/widget.rs index 94ebd10e..32187c10 100644 --- a/wgpu/src/renderer/widget.rs +++ b/wgpu/src/renderer/widget.rs @@ -2,7 +2,7 @@ mod button; mod checkbox; mod column; mod image; -mod progressbar; +mod progress_bar; mod radio; mod row; mod scrollable; diff --git a/wgpu/src/renderer/widget/progressbar.rs b/wgpu/src/renderer/widget/progress_bar.rs similarity index 88% rename from wgpu/src/renderer/widget/progressbar.rs rename to wgpu/src/renderer/widget/progress_bar.rs index f621343d..3550df23 100644 --- a/wgpu/src/renderer/widget/progressbar.rs +++ b/wgpu/src/renderer/widget/progress_bar.rs @@ -1,11 +1,7 @@ use crate::{Primitive, Renderer}; -use iced_native::{progressbar, Background, Color, MouseCursor, Rectangle}; - -impl progressbar::Renderer for Renderer { - fn height(&self) -> u32 { - 30 - } +use iced_native::{progress_bar, Background, Color, MouseCursor, Rectangle}; +impl progress_bar::Renderer for Renderer { fn draw( &self, bounds: Rectangle,