2121
2222namespace ZXBSInstaller . Controls ;
2323
24+ /// <summary>
25+ /// Main window
26+ /// </summary>
2427public partial class MainControl : UserControl
2528{
29+ /// <summary>
30+ /// List of ToolItemControl created items
31+ /// </summary>
2632 private List < ToolItemControl > toolItemControls = new List < ToolItemControl > ( ) ;
33+ /// <summary>
34+ /// Yellow color for labels
35+ /// </summary>
2736 private static Brush Yellow = new SolidColorBrush ( Colors . Yellow ) ;
2837
38+
39+ /// <summary>
40+ /// Main constructor
41+ /// </summary>
2942 public MainControl ( )
3043 {
3144 InitializeComponent ( ) ;
3245
46+ // Set events
3347 this . Loaded += MainControl_Loaded ;
3448 txtBasePath . TextChanged += TxtBasePath_TextChanged ;
3549 chkOnlyStableVersions . IsCheckedChanged += ChkOnlyStableVersions_IsCheckedChanged ;
3650 chkSetZXBSOptions . IsCheckedChanged += ChkSetZXBSOptions_IsCheckedChanged ;
3751 }
3852
53+
54+ /// <summary>
55+ /// Initialize in a new Thread when loaded
56+ /// </summary>
57+ /// <param name="sender"></param>
58+ /// <param name="e"></param>
3959 private void MainControl_Loaded ( object ? sender , RoutedEventArgs e )
4060 {
4161 new Thread ( Initialize ) . Start ( ) ;
4262 }
4363
4464
65+ /// <summary>
66+ /// Initialize
67+ /// </summary>
4568 private void Initialize ( )
4669 {
70+ // Initialize ServiceLayer
4771 ServiceLayer . Initialize ( ShowStatusPanel , UpdateStatus , HideStatusPanel , GetExternalTools , ShowMessage , ExitApp ) ;
4872
73+ // Set config fields in UIThread
4974 Dispatcher . UIThread . Post ( ( ) =>
5075 {
5176 txtBasePath . Text = ServiceLayer . GeneralConfig . BasePath ;
5277 chkOnlyStableVersions . IsChecked = ServiceLayer . GeneralConfig . OnlyStableVersions ;
5378 chkSetZXBSOptions . IsChecked = ServiceLayer . GeneralConfig . SetZXBSConfig ;
5479 } ) ;
5580
81+ // Get external tools list
5682 GetExternalTools ( ) ;
5783 }
5884
5985
86+ /// <summary>
87+ /// Show a message into a dialog box
88+ /// </summary>
89+ /// <param name="message">Message to display</param>
6090 private void ShowMessage ( string message )
6191 {
6292 Dispatcher . UIThread . Post ( ( ) =>
@@ -76,23 +106,28 @@ private void ShowMessage(string message)
76106 }
77107
78108
109+ /// <summary>
110+ /// Get list of external tools and local versions
111+ /// </summary>
79112 private void GetExternalTools ( )
80113 {
114+ // Set UI...
81115 Dispatcher . UIThread . Post ( ( ) =>
82116 {
83117 mainVersions . IsVisible = false ;
84118 mainTools . IsVisible = true ;
85-
86119 ShowStatusPanel ( "Working..." ) ;
87120 } ) ;
88121
122+ // Get tools
89123 var tools = ServiceLayer . GetExternalTools ( ) ;
90124
91125 Dispatcher . UIThread . Post ( ( ) =>
92126 {
93127 HideStatusPanel ( ) ;
94128 if ( tools == null )
95129 {
130+ // Error!
96131 var box = MessageBoxManager . GetMessageBoxStandard ( new MessageBoxStandardParams
97132 {
98133 ButtonDefinitions = ButtonEnum . Ok ,
@@ -107,12 +142,16 @@ private void GetExternalTools()
107142 }
108143 else
109144 {
145+ // Show tools
110146 ShowData ( ) ;
111147 }
112148 } ) ;
113149 }
114150
115151
152+ /// <summary>
153+ /// Show tools info
154+ /// </summary>
116155 private void ShowData ( )
117156 {
118157 toolItemControls . Clear ( ) ;
@@ -121,14 +160,21 @@ private void ShowData()
121160 pnlTools . Children . Clear ( ) ;
122161 foreach ( var tool in tools )
123162 {
163+ // Create on ToolItemControl foreach tool
124164 var control = new ToolItemControl ( tool , Command_Received ) ;
125165 toolItemControls . Add ( control ) ;
126166 pnlTools . Children . Add ( control ) ;
127167 }
168+ // Update summary area
128169 UpdateSummary ( ) ;
129170 }
130171
131172
173+ /// <summary>
174+ /// Command received from sub-controls
175+ /// </summary>
176+ /// <param name="id">Tool id</param>
177+ /// <param name="command">Command</param>
132178 private void Command_Received ( string id , string command )
133179 {
134180 switch ( command )
@@ -146,6 +192,9 @@ private void Command_Received(string id, string command)
146192 }
147193
148194
195+ /// <summary>
196+ /// Show Summary panel
197+ /// </summary>
149198 private void UpdateSummary ( )
150199 {
151200 Dispatcher . UIThread . Post ( ( ) =>
@@ -157,6 +206,7 @@ private void UpdateSummary()
157206 {
158207 if ( tool . IsSelected )
159208 {
209+ // Data for selected tools
160210 var tb = new TextBlock ( ) ;
161211 tb . TextWrapping = Avalonia . Media . TextWrapping . Wrap ;
162212 if ( tool . ExternalTool . InstalledVersion == null )
@@ -173,6 +223,7 @@ private void UpdateSummary()
173223 }
174224 if ( allUpToDate )
175225 {
226+ // Nothing to update
176227 var tb = new TextBlock ( ) ;
177228 tb . TextWrapping = Avalonia . Media . TextWrapping . Wrap ;
178229 tb . Text = "All tools are up to date." ;
@@ -188,7 +239,7 @@ private void UpdateSummary()
188239 pnlSummary . Children . Add ( separator ) ;
189240 }
190241
191- // Show tools tree
242+ // Show base path
192243 {
193244 pnlSummary . Children . Add ( new TextBlock ( )
194245 {
@@ -202,6 +253,7 @@ private void UpdateSummary()
202253 TextWrapping = TextWrapping . Wrap
203254 } ) ;
204255 }
256+ // Show tools installation paths
205257 foreach ( var tool in toolItemControls )
206258 {
207259 var tb = new TextBlock ( ) ;
@@ -227,6 +279,10 @@ private void UpdateSummary()
227279 }
228280
229281
282+ /// <summary>
283+ /// Show status panel
284+ /// </summary>
285+ /// <param name="message">Message to display</param>
230286 private void ShowStatusPanel ( string message )
231287 {
232288 Dispatcher . UIThread . Post ( ( ) =>
@@ -244,6 +300,9 @@ private void ShowStatusPanel(string message)
244300 }
245301
246302
303+ /// <summary>
304+ /// Hide status panel
305+ /// </summary>
247306 private void HideStatusPanel ( )
248307 {
249308 Dispatcher . UIThread . Post ( ( ) =>
@@ -278,6 +337,12 @@ private void UpdateStatus(string message, int progress)
278337 } ) ;
279338 }
280339
340+
341+ /// <summary>
342+ /// Button select path
343+ /// </summary>
344+ /// <param name="sender"></param>
345+ /// <param name="e"></param>
281346 private void btnSelectPath_Click ( object ? sender , RoutedEventArgs e )
282347 {
283348 var dlg = new OpenFolderDialog ( )
@@ -299,42 +364,69 @@ private void btnSelectPath_Click(object? sender, RoutedEventArgs e)
299364 }
300365
301366
367+
368+ /// <summary>
369+ /// Button install components
370+ /// </summary>
371+ /// <param name="sender"></param>
372+ /// <param name="e"></param>
302373 private void btnInstall_Click ( object ? sender , RoutedEventArgs e )
303374 {
304375 new Thread ( ServiceLayer . DownloadAndInstallTools ) . Start ( ) ;
305376 }
306377
307378
379+ /// <summary>
380+ /// chkSetZXBSOptions checked changed
381+ /// </summary>
382+ /// <param name="sender"></param>
383+ /// <param name="e"></param>
308384 private void ChkSetZXBSOptions_IsCheckedChanged ( object ? sender , RoutedEventArgs e )
309385 {
310386 ServiceLayer . GeneralConfig . SetZXBSConfig = chkSetZXBSOptions . IsChecked == true ;
311387 ServiceLayer . SaveConfig ( ServiceLayer . GeneralConfig ) ;
312388 }
313389
314390
391+ /// <summary>
392+ /// chkOnlyStableVersions checked changed
393+ /// </summary>
394+ /// <param name="sender"></param>
395+ /// <param name="e"></param>
315396 private void ChkOnlyStableVersions_IsCheckedChanged ( object ? sender , RoutedEventArgs e )
316397 {
317398 ServiceLayer . GeneralConfig . OnlyStableVersions = chkOnlyStableVersions . IsChecked == true ;
318399 ServiceLayer . SaveConfig ( ServiceLayer . GeneralConfig ) ;
319400 }
320401
321402
403+ /// <summary>
404+ /// Base path changed
405+ /// </summary>
406+ /// <param name="sender"></param>
407+ /// <param name="e"></param>
322408 private void TxtBasePath_TextChanged ( object ? sender , TextChangedEventArgs e )
323409 {
324410 ServiceLayer . GeneralConfig . BasePath = txtBasePath . Text ;
325411 ServiceLayer . SaveConfig ( ServiceLayer . GeneralConfig ) ;
326412 }
327413
328414
415+ /// <summary>
416+ /// Show version info for a tool
417+ /// </summary>
418+ /// <param name="id">Tool id</param>
329419 private void ShowVersions ( string id )
330420 {
331421 Dispatcher . UIThread . Post ( ( ) =>
332422 {
333423 mainTools . IsVisible = false ;
334424 mainVersions . IsVisible = true ;
335425 pnlVersions . Children . Clear ( ) ;
426+
336427 var tool = ServiceLayer . ExternalTools . FirstOrDefault ( d => d . Id == id ) ;
337428
429+ // Close button
338430 {
339431 var btn = new Button ( )
340432 {
@@ -346,10 +438,12 @@ private void ShowVersions(string id)
346438 pnlVersions . Children . Add ( btn ) ;
347439 }
348440
441+ // Header
349442 var versionControlHeader = new VersionControl ( null , null , Command_Received ) ;
350443 pnlVersions . Children . Add ( versionControlHeader ) ;
351444 foreach ( var version in tool . Versions )
352445 {
446+ // Version line
353447 if ( ServiceLayer . GeneralConfig . OnlyStableVersions && version . BetaNumber > 0 )
354448 {
355449 continue ;
@@ -358,6 +452,7 @@ private void ShowVersions(string id)
358452 pnlVersions . Children . Add ( versionControl ) ;
359453 }
360454
455+ // Anothe Close button at the bottom of the list
361456 {
362457 var btn = new Button ( )
363458 {
@@ -373,6 +468,11 @@ private void ShowVersions(string id)
373468 }
374469
375470
471+ /// <summary>
472+ /// Versions button
473+ /// </summary>
474+ /// <param name="sender"></param>
475+ /// <param name="e"></param>
376476 private void Versions_Close ( object ? sender , RoutedEventArgs e )
377477 {
378478 Dispatcher . UIThread . Post ( ( ) =>
@@ -382,13 +482,22 @@ private void Versions_Close(object? sender, RoutedEventArgs e)
382482 } ) ;
383483 }
384484
485+
486+ /// <summary>
487+ /// Run ZXBS button
488+ /// </summary>
489+ /// <param name="sender"></param>
490+ /// <param name="e"></param>
385491 private void btnPlayZXBS_Click ( object ? sender , RoutedEventArgs e )
386492 {
387493 ServiceLayer . RunZXBasicStudio ( ) ;
388494 ExitApp ( ) ;
389495 }
390496
391497
498+ /// <summary>
499+ /// Exit application
500+ /// </summary>
392501 private void ExitApp ( )
393502 {
394503 Dispatcher . UIThread . Post ( ( ) =>
@@ -402,11 +511,22 @@ private void ExitApp()
402511 }
403512
404513
514+ /// <summary>
515+ /// Refresh button
516+ /// </summary>
517+ /// <param name="sender"></param>
518+ /// <param name="e"></param>
405519 private void btnRefresh_Click ( object ? sender , RoutedEventArgs e )
406520 {
407521 new Thread ( GetExternalTools ) . Start ( ) ;
408522 }
409523
524+
525+ /// <summary>
526+ /// Cacel button
527+ /// </summary>
528+ /// <param name="sender"></param>
529+ /// <param name="e"></param>
410530 private void btnCancel_Click ( object ? sender , RoutedEventArgs e )
411531 {
412532 ServiceLayer . Cancel = true ;
0 commit comments