1717use crate :: debug_state:: DebugState ;
1818use crate :: kurbo:: Circle ;
1919use crate :: widget:: prelude:: * ;
20- use crate :: widget:: { CrossAxisAlignment , Flex , Label , LabelText } ;
20+ use crate :: widget:: { Axis , CrossAxisAlignment , Flex , Label , LabelText } ;
2121use crate :: { theme, Data , LinearGradient , UnitPoint } ;
2222use tracing:: { instrument, trace} ;
2323
@@ -29,10 +29,28 @@ pub struct RadioGroup;
2929
3030impl RadioGroup {
3131 /// 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 > (
3334 variants : impl IntoIterator < Item = ( impl Into < LabelText < T > > + ' static , T ) > ,
3435 ) -> 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 ) ;
3654 let mut is_first = true ;
3755 for ( label, variant) in variants. into_iter ( ) {
3856 if !is_first {
0 commit comments