tuix_widgets/buttons/
radio.rs1use crate::{CheckButton, common::*};
4
5pub struct Radio {
6 marker: Entity,
7 check: CheckButton,
8}
9
10impl Radio {
11 pub fn new() -> Self {
12 Self {
13 marker: Entity::null(),
14 check: CheckButton::new(),
15 }
16 }
17
18 pub fn set_checked(mut self, checked: bool) -> Self {
19 self.check = self.check.set_checked(checked);
20
21 self
22 }
23
24 pub fn on_checked<F>(mut self, callback: F) -> Self
25 where
26 F: 'static + Fn(&mut CheckButton, &mut State, Entity)
27 {
28 self.check = self.check.on_checked(callback);
29 self
30 }
31
32 pub fn on_unchecked<F>(mut self, callback: F) -> Self
33 where
34 F: 'static + Fn(&mut CheckButton, &mut State, Entity)
35 {
36 self.check = self.check.on_unchecked(callback);
37 self
38 }
39}
40
41impl Widget for Radio {
42 type Ret = Entity;
43 type Data = bool;
44 fn on_build(&mut self, state: &mut State, entity: Entity) -> Self::Ret {
45
46 self.check.on_build(state, entity);
47
48 self.marker = Element::new().build(state, entity, |builder| {
49 builder
50 .set_hoverable(false)
51 .class("marker")
52 .set_hoverable(false)
53 });
54
55 entity.set_element(state, "radio")
56 }
57
58 fn on_event(&mut self, state: &mut State, entity: Entity, event: &mut Event) {
59 self.check.on_event(state, entity, event);
60 }
61}