17
17
use crate :: debug_state:: DebugState ;
18
18
use crate :: kurbo:: Circle ;
19
19
use crate :: widget:: prelude:: * ;
20
- use crate :: widget:: { CrossAxisAlignment , Flex , Label , LabelText } ;
20
+ use crate :: widget:: { Axis , CrossAxisAlignment , Flex , Label , LabelText } ;
21
21
use crate :: { theme, Data , LinearGradient , UnitPoint } ;
22
22
use tracing:: { instrument, trace} ;
23
23
@@ -29,10 +29,28 @@ pub struct RadioGroup;
29
29
30
30
impl RadioGroup {
31
31
/// Given a vector of `(label_text, enum_variant)` tuples, create a group of Radio buttons
32
- pub fn new < T : Data + PartialEq > (
32
+ /// along the vertical axis.
33
+ pub fn column < T : Data + PartialEq > (
33
34
variants : impl IntoIterator < Item = ( impl Into < LabelText < T > > + ' static , T ) > ,
34
35
) -> impl Widget < T > {
35
- let mut col = Flex :: column ( ) . cross_axis_alignment ( CrossAxisAlignment :: Start ) ;
36
+ RadioGroup :: for_axis ( Axis :: Vertical , variants)
37
+ }
38
+
39
+ /// Given a vector of `(label_text, enum_variant)` tuples, create a group of Radio buttons
40
+ /// along the horizontal axis.
41
+ pub fn row < T : Data + PartialEq > (
42
+ variants : impl IntoIterator < Item = ( impl Into < LabelText < T > > + ' static , T ) > ,
43
+ ) -> impl Widget < T > {
44
+ RadioGroup :: for_axis ( Axis :: Horizontal , variants)
45
+ }
46
+
47
+ /// Given a vector of `(label_text, enum_variant)` tuples, create a group of Radio buttons
48
+ /// along the specified axis.
49
+ pub fn for_axis < T : Data + PartialEq > (
50
+ axis : Axis ,
51
+ variants : impl IntoIterator < Item = ( impl Into < LabelText < T > > + ' static , T ) > ,
52
+ ) -> impl Widget < T > {
53
+ let mut col = Flex :: for_axis ( axis) . cross_axis_alignment ( CrossAxisAlignment :: Start ) ;
36
54
let mut is_first = true ;
37
55
for ( label, variant) in variants. into_iter ( ) {
38
56
if !is_first {
0 commit comments