1313textField . Title = "Enter your name" ;
1414textField . BorderStyle = LineStyle . Single ;
1515
16- var textRunnable = textField . AsRunnable ( tf => tf . Text ) ;
16+ RunnableWrapper < TextField , string > textRunnable = textField . AsRunnable ( tf => tf . Text ) ;
1717app . Run ( textRunnable ) ;
1818
1919if ( textRunnable . Result is { } name )
2020{
21- MessageBox . Query ( "Result" , $ "You entered: { name } ", "OK" ) ;
21+ MessageBox . Query ( app , "Result" , $ "You entered: { name } ", "OK" ) ;
2222}
2323else
2424{
25- MessageBox . Query ( "Result" , "Canceled" , "OK" ) ;
25+ MessageBox . Query ( app , "Result" , "Canceled" , "OK" ) ;
2626}
27+
2728textRunnable . Dispose ( ) ;
2829
2930// Example 2: Use IApplication.RunView() for one-liner
30- var selectedColor = app . RunView (
31- new ColorPicker
32- {
33- Title = "Pick a Color" ,
34- BorderStyle = LineStyle . Single
35- } ,
36- cp => cp . SelectedColor ) ;
31+ Color selectedColor = app . RunView (
32+ new ColorPicker
33+ {
34+ Title = "Pick a Color" ,
35+ BorderStyle = LineStyle . Single
36+ } ,
37+ cp => cp . SelectedColor ) ;
3738
38- MessageBox . Query ( "Result" , $ "Selected color: { selectedColor } ", "OK" ) ;
39+ MessageBox . Query ( app , "Result" , $ "Selected color: { selectedColor } ", "OK" ) ;
3940
4041// Example 3: FlagSelector with typed enum result
41- var flagSelector = new FlagSelector < SelectorStyles >
42+ FlagSelector < SelectorStyles > flagSelector = new ( )
4243{
4344 Title = "Choose Styles" ,
4445 BorderStyle = LineStyle . Single
4546} ;
4647
47- var flagsRunnable = flagSelector . AsRunnable ( fs => fs . Value ) ;
48+ RunnableWrapper < FlagSelector < SelectorStyles > , SelectorStyles ? > flagsRunnable = flagSelector . AsRunnable ( fs => fs . Value ) ;
4849app . Run ( flagsRunnable ) ;
4950
50- MessageBox . Query ( "Result" , $ "Selected styles: { flagsRunnable . Result } ", "OK" ) ;
51+ MessageBox . Query ( app , "Result" , $ "Selected styles: { flagsRunnable . Result } ", "OK" ) ;
5152flagsRunnable . Dispose ( ) ;
5253
5354// Example 4: Any View without result extraction
5859 Y = Pos . Center ( )
5960} ;
6061
61- var labelRunnable = label . AsRunnable ( ) ;
62+ RunnableWrapper < Label , object > labelRunnable = label . AsRunnable ( ) ;
6263app . Run ( labelRunnable ) ;
6364
6465// Can still access the wrapped view
65- MessageBox . Query ( "Result" , $ "Label text was: { labelRunnable . WrappedView . Text } ", "OK" ) ;
66+ MessageBox . Query ( app , "Result" , $ "Label text was: { labelRunnable . WrappedView . Text } ", "OK" ) ;
6667labelRunnable . Dispose ( ) ;
6768
6869// Example 5: Complex custom View made runnable
69- var formView = CreateCustomForm ( ) ;
70- var formRunnable = formView . AsRunnable ( ExtractFormData ) ;
70+ View formView = CreateCustomForm ( ) ;
71+ RunnableWrapper < View , FormData > formRunnable = formView . AsRunnable ( ExtractFormData ) ;
7172
7273app . Run ( formRunnable ) ;
7374
7475if ( formRunnable . Result is { } formData )
7576{
7677 MessageBox . Query (
77- "Form Results" ,
78- $ "Name: { formData . Name } \n Age: { formData . Age } \n Agreed: { formData . Agreed } ",
79- "OK" ) ;
78+ app ,
79+ "Form Results" ,
80+ $ "Name: { formData . Name } \n Age: { formData . Age } \n Agreed: { formData . Agreed } ",
81+ "OK" ) ;
8082}
83+
8184formRunnable . Dispose ( ) ;
8285
8386app . Shutdown ( ) ;
@@ -126,10 +129,10 @@ View CreateCustomForm ()
126129 } ;
127130
128131 okButton . Accepting += ( s , e ) =>
129- {
130- form . App ? . RequestStop ( ) ;
131- e . Handled = true ;
132- } ;
132+ {
133+ form . App ? . RequestStop ( ) ;
134+ e . Handled = true ;
135+ } ;
133136
134137 form . Add ( new Label { Text = "Name:" , X = 2 , Y = 1 } ) ;
135138 form . Add ( nameField ) ;
@@ -148,7 +151,7 @@ FormData ExtractFormData (View form)
148151 var ageField = form . SubViews . FirstOrDefault ( v => v . Id == "ageField" ) as TextField ;
149152 var agreeCheckbox = form . SubViews . FirstOrDefault ( v => v . Id == "agreeCheckbox" ) as CheckBox ;
150153
151- return new FormData
154+ return new ( )
152155 {
153156 Name = nameField ? . Text ?? string . Empty ,
154157 Age = int . TryParse ( ageField ? . Text , out int age ) ? age : 0 ,
@@ -157,7 +160,7 @@ FormData ExtractFormData (View form)
157160}
158161
159162// Result type for custom form
160- record FormData
163+ internal record FormData
161164{
162165 public string Name { get ; init ; } = string . Empty ;
163166 public int Age { get ; init ; }
0 commit comments