Draft nodes for missing widgets

This commit is contained in:
Héctor Ramón Jiménez 2019-09-15 18:53:13 +02:00
parent 8834772fa7
commit 655978f480
16 changed files with 191 additions and 36 deletions

View file

@ -38,9 +38,12 @@ use crate::{
///
/// ![Checkbox drawn by Coffee's renderer](https://github.com/hecrj/coffee/blob/bda9818f823dfcb8a7ad0ff4940b4d4b387b5208/images/ui/checkbox.png?raw=true)
pub struct Checkbox<Color, Message> {
is_checked: bool,
on_toggle: Box<dyn Fn(bool) -> Message>,
label: String,
/// Whether the checkbox is checked or not
pub is_checked: bool,
/// Toggle message to fire
pub on_toggle: Box<dyn Fn(bool) -> Message>,
/// The label of the checkbox
pub label: String,
label_color: Option<Color>,
}

View file

@ -24,9 +24,11 @@ use std::hash::Hash;
/// let image = Image::new(my_handle);
/// ```
pub struct Image<I> {
image: I,
/// The image handle
pub image: I,
source: Option<Rectangle<u16>>,
width: Option<u16>,
/// The width of the image
pub width: Option<u16>,
height: Option<u16>,
style: Style,
}

View file

@ -47,9 +47,12 @@ use std::hash::Hash;
///
/// ![Radio buttons drawn by Coffee's renderer](https://github.com/hecrj/coffee/blob/bda9818f823dfcb8a7ad0ff4940b4d4b387b5208/images/ui/radio.png?raw=true)
pub struct Radio<Color, Message> {
is_selected: bool,
on_click: Message,
label: String,
/// Whether the radio button is selected or not
pub is_selected: bool,
/// The message to produce when the radio button is clicked
pub on_click: Message,
/// The label of the radio button
pub label: String,
label_color: Option<Color>,
}

View file

@ -6,6 +6,7 @@
//! [`State`]: struct.State.html
use std::hash::Hash;
use std::ops::RangeInclusive;
use std::rc::Rc;
use crate::input::{mouse, ButtonState};
use crate::{
@ -42,9 +43,12 @@ use crate::{
/// ![Slider drawn by Coffee's renderer](https://github.com/hecrj/coffee/blob/bda9818f823dfcb8a7ad0ff4940b4d4b387b5208/images/ui/slider.png?raw=true)
pub struct Slider<'a, Message> {
state: &'a mut State,
range: RangeInclusive<f32>,
value: f32,
on_change: Box<dyn Fn(f32) -> Message>,
/// The range of the slider
pub range: RangeInclusive<f32>,
/// The current value of the slider
pub value: f32,
/// The function to produce messages on change
pub on_change: Rc<Box<dyn Fn(f32) -> Message>>,
style: Style,
}
@ -85,7 +89,7 @@ impl<'a, Message> Slider<'a, Message> {
state,
value: value.max(*range.start()).min(*range.end()),
range,
on_change: Box::new(on_change),
on_change: Rc::new(Box::new(on_change)),
style: Style::default().min_width(100).fill_width(),
}
}