12
12
// See the License for the specific language governing permissions and
13
13
// limitations under the License.
14
14
15
- use druid:: widget:: { Flex , Switch , DynLabel , Label , Padding , Row , Stepper , Switch } ;
16
- use druid:: { AppLauncher , Data , Lens , LensWrap , Widget , WindowDesc } ;
15
+ use druid:: widget:: { Flex , Label , Padding , Parse , Stepper , Switch , TextBox } ;
16
+ use druid:: { AppLauncher , Data , Lens , LensExt , LensWrap , Widget , WindowDesc } ;
17
17
18
18
#[ derive( Clone , Data , Lens ) ]
19
19
struct DemoState {
@@ -30,22 +30,30 @@ fn build_widget() -> impl Widget<DemoState> {
30
30
row. add_child ( Padding :: new ( 5.0 , switch_label) , 0.0 ) ;
31
31
row. add_child ( Padding :: new ( 5.0 , switch) , 0.0 ) ;
32
32
33
- let label_stepper = LensWrap :: new (
33
+ let stepper = LensWrap :: new (
34
34
Stepper :: new ( 0.0 , 10.0 , 0.25 , true , |_ctx, _data, _env| { } ) ,
35
- lenses :: demo_state :: stepper_value,
35
+ DemoState :: stepper_value,
36
36
) ;
37
37
38
- let mut stepper_row = Row :: new ( ) ;
38
+ let mut textbox_row = Flex :: row ( ) ;
39
+ let textbox = LensWrap :: new (
40
+ Parse :: new ( TextBox :: new ( ) ) ,
41
+ DemoState :: stepper_value. map ( |x| Some ( * x) , |x, y| * x = y. unwrap_or ( 0.0 ) ) ,
42
+ ) ;
43
+ textbox_row. add_child ( Padding :: new ( 5.0 , textbox) , 0.0 ) ;
44
+ textbox_row. add_child ( Padding :: new ( 5.0 , stepper) , 0.0 ) ;
45
+
46
+ let mut label_row = Flex :: row ( ) ;
39
47
40
- let label = DynLabel :: new ( |data : & DemoState , _env| {
48
+ let label = Label :: new ( |data : & DemoState , _env : & _ | {
41
49
format ! ( "Stepper value: {0:.2}" , data. stepper_value)
42
50
} ) ;
43
51
44
- stepper_row. add_child ( Padding :: new ( 5.0 , label) , 0.0 ) ;
45
- stepper_row. add_child ( Padding :: new ( 5.0 , label_stepper) , 0.0 ) ;
52
+ label_row. add_child ( Padding :: new ( 5.0 , label) , 0.0 ) ;
46
53
47
54
col. add_child ( Padding :: new ( 5.0 , row) , 1.0 ) ;
48
- col. add_child ( Padding :: new ( 5.0 , stepper_row) , 1.0 ) ;
55
+ col. add_child ( Padding :: new ( 5.0 , textbox_row) , 1.0 ) ;
56
+ col. add_child ( Padding :: new ( 5.0 , label_row) , 1.0 ) ;
49
57
col
50
58
}
51
59
0 commit comments