Move radio example to Radio docs
This commit is contained in:
parent
4fdd76c07c
commit
b505b72035
4 changed files with 33 additions and 102 deletions
|
|
@ -1,10 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "radio"
|
|
||||||
version = "0.1.0"
|
|
||||||
authors = ["Aaron Honeycutt <aaronhoneycutt@proton.me>"]
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
iced = { path = "../.." }
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
||||||
use iced::widget::{column, container, radio};
|
|
||||||
use iced::{Element, Length, Sandbox, Settings};
|
|
||||||
|
|
||||||
pub fn main() -> iced::Result {
|
|
||||||
Example::run(Settings::default())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Default)]
|
|
||||||
struct Example {
|
|
||||||
radio: Option<Choice>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
|
||||||
enum Message {
|
|
||||||
RadioSelected(Choice),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Sandbox for Example {
|
|
||||||
type Message = Message;
|
|
||||||
|
|
||||||
fn new() -> Self {
|
|
||||||
Default::default()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn title(&self) -> String {
|
|
||||||
String::from("Radio - Iced")
|
|
||||||
}
|
|
||||||
|
|
||||||
fn update(&mut self, message: Message) {
|
|
||||||
match message {
|
|
||||||
Message::RadioSelected(value) => {
|
|
||||||
self.radio = Some(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn view(&self) -> Element<Message> {
|
|
||||||
let a_checkbox = radio(
|
|
||||||
"A",
|
|
||||||
Choice::A,
|
|
||||||
self.radio,
|
|
||||||
Message::RadioSelected,
|
|
||||||
);
|
|
||||||
|
|
||||||
let b_checkbox = radio(
|
|
||||||
"B",
|
|
||||||
Choice::B,
|
|
||||||
self.radio,
|
|
||||||
Message::RadioSelected,
|
|
||||||
);
|
|
||||||
|
|
||||||
let c_checkbox = radio(
|
|
||||||
"C",
|
|
||||||
Choice::C,
|
|
||||||
self.radio,
|
|
||||||
Message::RadioSelected,
|
|
||||||
);
|
|
||||||
|
|
||||||
let all_checkbox = radio("All of the above", Choice::All, self.radio, Message::RadioSelected);
|
|
||||||
|
|
||||||
let content = column![
|
|
||||||
a_checkbox,
|
|
||||||
b_checkbox,
|
|
||||||
c_checkbox,
|
|
||||||
all_checkbox,
|
|
||||||
]
|
|
||||||
.spacing(20)
|
|
||||||
.padding(20)
|
|
||||||
.max_width(600);
|
|
||||||
|
|
||||||
container(content)
|
|
||||||
.width(Length::Fill)
|
|
||||||
.height(Length::Fill)
|
|
||||||
.center_x()
|
|
||||||
.center_y()
|
|
||||||
.into()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
||||||
enum Choice {
|
|
||||||
A,
|
|
||||||
B,
|
|
||||||
C,
|
|
||||||
All,
|
|
||||||
}
|
|
||||||
|
|
@ -147,7 +147,7 @@ where
|
||||||
Renderer::Theme: widget::radio::StyleSheet,
|
Renderer::Theme: widget::radio::StyleSheet,
|
||||||
V: Copy + Eq,
|
V: Copy + Eq,
|
||||||
{
|
{
|
||||||
widget::Radio::new(value, label, selected, on_click)
|
widget::Radio::new(label, value, selected, on_click)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new [`Toggler`].
|
/// Creates a new [`Toggler`].
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,13 @@ pub use iced_style::radio::{Appearance, StyleSheet};
|
||||||
/// # type Radio<Message> =
|
/// # type Radio<Message> =
|
||||||
/// # iced_native::widget::Radio<Message, iced_native::renderer::Null>;
|
/// # iced_native::widget::Radio<Message, iced_native::renderer::Null>;
|
||||||
/// #
|
/// #
|
||||||
|
/// # use iced_native::column;
|
||||||
/// #[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
/// #[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
/// pub enum Choice {
|
/// pub enum Choice {
|
||||||
/// A,
|
/// A,
|
||||||
/// B,
|
/// B,
|
||||||
|
/// C,
|
||||||
|
/// All,
|
||||||
/// }
|
/// }
|
||||||
///
|
///
|
||||||
/// #[derive(Debug, Clone, Copy)]
|
/// #[derive(Debug, Clone, Copy)]
|
||||||
|
|
@ -34,12 +37,36 @@ pub use iced_style::radio::{Appearance, StyleSheet};
|
||||||
///
|
///
|
||||||
/// let selected_choice = Some(Choice::A);
|
/// let selected_choice = Some(Choice::A);
|
||||||
///
|
///
|
||||||
/// Radio::new(Choice::A, "This is A", selected_choice, Message::RadioSelected);
|
/// let a = Radio::new(
|
||||||
|
/// "A",
|
||||||
|
/// Choice::A,
|
||||||
|
/// selected_choice,
|
||||||
|
/// Message::RadioSelected,
|
||||||
|
/// );
|
||||||
///
|
///
|
||||||
/// Radio::new(Choice::B, "This is B", selected_choice, Message::RadioSelected);
|
/// let b = Radio::new(
|
||||||
|
/// "B",
|
||||||
|
/// Choice::B,
|
||||||
|
/// selected_choice,
|
||||||
|
/// Message::RadioSelected,
|
||||||
|
/// );
|
||||||
|
///
|
||||||
|
/// let c = Radio::new(
|
||||||
|
/// "C",
|
||||||
|
/// Choice::C,
|
||||||
|
/// selected_choice,
|
||||||
|
/// Message::RadioSelected,
|
||||||
|
/// );
|
||||||
|
///
|
||||||
|
/// let all = Radio::new(
|
||||||
|
/// "All of the above",
|
||||||
|
/// Choice::All,
|
||||||
|
/// selected_choice,
|
||||||
|
/// Message::RadioSelected
|
||||||
|
/// );
|
||||||
|
///
|
||||||
|
/// let content = column![a, b, c, all];
|
||||||
/// ```
|
/// ```
|
||||||
///
|
|
||||||
/// 
|
|
||||||
#[allow(missing_debug_implementations)]
|
#[allow(missing_debug_implementations)]
|
||||||
pub struct Radio<Message, Renderer>
|
pub struct Radio<Message, Renderer>
|
||||||
where
|
where
|
||||||
|
|
@ -78,8 +105,8 @@ where
|
||||||
/// * a function that will be called when the [`Radio`] is selected. It
|
/// * a function that will be called when the [`Radio`] is selected. It
|
||||||
/// receives the value of the radio and must produce a `Message`.
|
/// receives the value of the radio and must produce a `Message`.
|
||||||
pub fn new<F, V>(
|
pub fn new<F, V>(
|
||||||
value: V,
|
|
||||||
label: impl Into<String>,
|
label: impl Into<String>,
|
||||||
|
value: V,
|
||||||
selected: Option<V>,
|
selected: Option<V>,
|
||||||
f: F,
|
f: F,
|
||||||
) -> Self
|
) -> Self
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue