@@ -9,17 +9,19 @@ use super::Show;
9
9
10
10
pub struct WrappingExample {
11
11
value : Value ,
12
- state : JsonTreeWrapping ,
12
+ wrap : JsonTreeWrapping ,
13
+ use_maximum_max_rows : bool ,
13
14
}
14
15
15
16
impl WrappingExample {
16
17
pub fn new ( value : Value ) -> Self {
17
18
Self {
18
19
value,
19
- state : JsonTreeWrapping {
20
+ wrap : JsonTreeWrapping {
20
21
max_rows : 1 ,
21
22
max_width : JsonTreeMaxWidth :: UiAvailableWidth ,
22
23
} ,
24
+ use_maximum_max_rows : false ,
23
25
}
24
26
}
25
27
}
@@ -34,43 +36,62 @@ impl Show for WrappingExample {
34
36
ui. add_space ( 10.0 ) ;
35
37
36
38
ui. label ( egui:: RichText :: new ( "Max Rows:" ) . monospace ( ) ) ;
37
- ui. add (
38
- DragValue :: new ( & mut self . state . max_rows )
39
- . speed ( 0.1 )
40
- . range ( 1 ..=5 ) ,
41
- ) ;
39
+ ui. horizontal ( |ui| {
40
+ if ui
41
+ . radio_value ( & mut self . use_maximum_max_rows , false , "Custom" )
42
+ . changed ( )
43
+ {
44
+ self . wrap . max_rows = 1 ;
45
+ }
46
+
47
+ if !self . use_maximum_max_rows {
48
+ ui. add (
49
+ DragValue :: new ( & mut self . wrap . max_rows )
50
+ . speed ( 0.1 )
51
+ . range ( 1 ..=10 ) ,
52
+ ) ;
53
+ }
54
+ } ) ;
55
+
56
+ if ui
57
+ . radio_value ( & mut self . use_maximum_max_rows , true , "usize::MAX" )
58
+ . clicked ( )
59
+ {
60
+ self . wrap . max_rows = usize:: MAX ;
61
+ }
42
62
43
63
ui. label ( egui:: RichText :: new ( "Max Width:" ) . monospace ( ) ) ;
44
64
ui. horizontal ( |ui| {
45
65
if ui
46
66
. radio (
47
- matches ! ( self . state . max_width, JsonTreeMaxWidth :: Pt ( _) ) ,
67
+ matches ! ( self . wrap . max_width, JsonTreeMaxWidth :: Pt ( _) ) ,
48
68
"Points" ,
49
69
)
50
70
. clicked ( )
71
+ && !matches ! ( self . wrap. max_width, JsonTreeMaxWidth :: Pt ( _) )
51
72
{
52
- self . state . max_width = JsonTreeMaxWidth :: Pt ( 100.0 ) ;
73
+ self . wrap . max_width = JsonTreeMaxWidth :: Pt ( 100.0 ) ;
53
74
}
54
- if let JsonTreeMaxWidth :: Pt ( ref mut pts) = & mut self . state . max_width {
75
+ if let JsonTreeMaxWidth :: Pt ( ref mut pts) = & mut self . wrap . max_width {
55
76
ui. add ( DragValue :: new ( pts) . speed ( 10.0 ) . range ( 100.0 ..=10000.0 ) ) ;
56
77
}
57
78
} ) ;
58
79
59
80
if ui
60
81
. radio (
61
- matches ! ( self . state . max_width, JsonTreeMaxWidth :: UiAvailableWidth ) ,
82
+ matches ! ( self . wrap . max_width, JsonTreeMaxWidth :: UiAvailableWidth ) ,
62
83
"Available Width" ,
63
84
)
64
85
. clicked ( )
65
86
{
66
- self . state . max_width = JsonTreeMaxWidth :: UiAvailableWidth ;
87
+ self . wrap . max_width = JsonTreeMaxWidth :: UiAvailableWidth ;
67
88
}
68
89
69
90
JsonTree :: new ( self . title ( ) , & self . value )
70
91
. style ( JsonTreeStyle :: new ( ) . wrap ( JsonTreeWrappingParams {
71
- value_no_parent : self . state ,
72
- value_expanded_parent : self . state ,
73
- value_collapsed_root : self . state ,
92
+ value_no_parent : self . wrap ,
93
+ value_expanded_parent : self . wrap ,
94
+ value_collapsed_root : self . wrap ,
74
95
} ) )
75
96
. default_expand ( DefaultExpand :: All )
76
97
. show ( ui) ;
0 commit comments