77using System . Threading ;
88using System . Threading . Tasks ;
99using System . Windows . Forms ;
10-
10+ using AForge . Video ;
1111using FiveMApi . api ;
1212using FlashForgeUI . manager ;
1313using FlashForgeUI . program . util ;
1414using FlashForgeUI . ui . main . manager ;
15+ using FlashForgeUI . ui . main . manager . camera ;
1516using FlashForgeUI . ui . main . util ;
1617using FlashForgeUI . webui ;
1718using Microsoft . VisualBasic ;
@@ -24,42 +25,41 @@ public partial class MainMenu : Form
2425 // and theme accordingly if we cannot get the scroll to bottom to work
2526 // it does look nicer though.
2627
27- // internal MJPEGStream mjpegStream ;
28+ internal MJPEGStream MjpegStream ;
2829
29- public FiveMClient printerClient ;
30+ public FiveMClient PrinterClient ;
3031
31- internal PrinterWebServer webServer ;
32+ internal PrinterWebServer WebServer ;
3233
33- internal WebhookHelper webhook ;
34+ internal WebhookHelper Webhook ;
3435
35- internal Config config ;
36+ internal Config Config ;
3637
3738
3839 // Managers
3940 private ConnectionManager _connectionManager ;
40- internal CameraStreamManager StreamManager ;
4141 private StatusTimerManager _statusTimerManager ;
42+
43+ internal MjpegStreamManager MjpegStreamManager ;
4244 internal ButtonManager ButtonManager ;
4345
4446 private UiHelper _uiHelper ;
4547
4648
47- public CameraStreamManager GetCameraStreamManager ( )
49+ public MjpegStreamManager GetCameraStreamManager ( )
4850 { // for WebhookHelper (sending preview image to discord)
49- return StreamManager ;
51+ return MjpegStreamManager ;
5052 }
5153
5254 internal bool IsConnected ;
53- internal bool WebcamOn ;
54-
55+
5556 public MainMenu ( )
5657 {
5758 InitializeComponent ( ) ;
5859
5960 // hook form events
6061 Shown += MainMenu_Shown ;
61- //Closing += MainMenu_Closing;
62- FormClosing += MainMenu_Closing ;
62+ FormClosed += MainMenu_Closed ;
6363
6464 // hook timer events
6565 timerStatusUpdate . Tick += timerStatusUpdate_Tick ;
@@ -70,12 +70,12 @@ public MainMenu()
7070
7171 private void InitWebhook ( )
7272 {
73- if ( string . IsNullOrEmpty ( config . WebhookUrl ) )
73+ if ( string . IsNullOrEmpty ( Config . WebhookUrl ) )
7474 {
7575 MessageBox . Show ( "Invalid (or missing) webhook url in config.json! Discord sync disabled" ) ;
7676 return ;
7777 }
78- webhook = new WebhookHelper ( config . WebhookUrl , this ) ;
78+ Webhook = new WebhookHelper ( Config . WebhookUrl , this ) ;
7979 }
8080
8181 private void StartTimers ( )
@@ -84,37 +84,33 @@ private void StartTimers()
8484 timerSyncInfo_Tick ( null , null ) ;
8585 timerStatusUpdate . Start ( ) ;
8686 timerSyncInfo . Start ( ) ;
87- if ( config . DiscordSync ) timerSyncDiscord . Start ( ) ;
88- if ( printerClient . IsPro || config . CustomCamera && ! string . IsNullOrEmpty ( config . CustomCameraUrl ) ) {
89- StreamManager . Start ( ) ;
90- WebcamOn = true ;
91- toggleWebcamButton . Text = "Preview off" ;
92- }
87+ if ( Config . DiscordSync ) timerSyncDiscord . Start ( ) ;
88+ if ( PrinterClient . IsPro || Config . CustomCamera && ! string . IsNullOrEmpty ( Config . CustomCameraUrl ) ) ButtonManager . PreviewOn ( ) ;
9389 }
9490
9591 private void StartWebUi ( )
9692 {
97- webServer = new PrinterWebServer ( this , config ) ;
98- webServer . Start ( ) ;
93+ WebServer = new PrinterWebServer ( this , Config ) ;
94+ WebServer . Start ( ) ;
9995 }
10096
10197 private void CheckFeatures ( )
10298 {
103- if ( ! Compat . Is313OrAbove ( printerClient . FirmVer ) )
99+ if ( ! Compat . Is313OrAbove ( PrinterClient . FirmVer ) )
104100 {
105101 AppendLog ( "This printer is running older firmware, some features may not be available, or work as intended. " +
106102 "Please update to the latest firmware when possible for better compatibility" ) ;
107103 clearPlatformButton . Visible = false ;
108104 }
109105
110- if ( ! printerClient . LedControl )
106+ if ( ! PrinterClient . LedControl )
111107 {
112108 AppendLog ( "LEDs are not equipped or properly configured on this printer." ) ;
113109 ledOffButton . Visible = false ;
114110 ledOnButton . Visible = false ;
115111 }
116112
117- if ( printerClient . FiltrationControl ) return ;
113+ if ( PrinterClient . FiltrationControl ) return ;
118114 AppendLog ( "Filtration control is not available for this printer." ) ;
119115 filtrationPanel . Visible = false ;
120116 setChamberFanButton . Visible = false ;
@@ -126,14 +122,14 @@ private void CheckFeatures()
126122 private async void timerSyncDiscord_Tick ( object sender , EventArgs e )
127123 {
128124 Debug . Write ( "Ticking SyncDiscord" ) ;
129- await webhook . SendStatus ( printerClient ) ; // todo handle result?
125+ await Webhook . SendStatus ( PrinterClient ) ; // todo handle result?
130126 }
131127
132128 private async void timerSyncInfo_Tick ( object sender , EventArgs e )
133129 {
134130 Debug . WriteLine ( "Ticking SyncInfo" ) ;
135- var info = await printerClient . Info . Get ( ) ;
136- printerClient . CacheDetails ( info ) ;
131+ var info = await PrinterClient . Info . Get ( ) ;
132+ PrinterClient . CacheDetails ( info ) ;
137133 }
138134
139135 private async void timerStatusUpdate_Tick ( object sender , EventArgs e )
@@ -146,14 +142,8 @@ internal void AppendLog(string message)
146142 {
147143 Debug . WriteLine ( $ "AppendLog called: { message } ") ;
148144
149- if ( logBox . InvokeRequired )
150- {
151- logBox . Invoke ( new Action ( ( ) => AddLogMessage ( message ) ) ) ;
152- }
153- else
154- {
155- AddLogMessage ( message ) ;
156- }
145+ if ( logBox . InvokeRequired ) logBox . Invoke ( new Action ( ( ) => AddLogMessage ( message ) ) ) ;
146+ else AddLogMessage ( message ) ;
157147 }
158148
159149 private void AddLogMessage ( string message )
@@ -174,8 +164,7 @@ private void AddLogMessage(string message)
174164
175165 private async Task < bool > CheckJobReady ( )
176166 {
177- var info = await printerClient . Info . Get ( ) ;
178- //if (info.DoorOpen) MessageBox.Show("Don't forget to close the printer door!", "Door ajar");
167+ var info = await PrinterClient . Info . Get ( ) ;
179168 switch ( info . Status )
180169 {
181170 case "ready" :
@@ -206,7 +195,7 @@ internal async Task UpdateModelPreview(string currentJobFileName)
206195 _lastJobFileName = currentJobFileName ;
207196
208197 // Fetch the thumbnail
209- var thumbnailBytes = await printerClient . Files . GetGCodeThumbnail ( currentJobFileName ) ;
198+ var thumbnailBytes = await PrinterClient . Files . GetGCodeThumbnail ( currentJobFileName ) ;
210199 if ( thumbnailBytes != null && thumbnailBytes . Length > 0 )
211200 {
212201 using ( var ms = new MemoryStream ( thumbnailBytes ) )
@@ -296,7 +285,7 @@ public dynamic GetPrinterStatus()
296285
297286 return new
298287 {
299- isPro = printerClient . IsPro ,
288+ isPro = PrinterClient . IsPro ,
300289 currentJob = currentJobLabel . Text ,
301290 eta = etaLabel . Text ,
302291 extruderTemp = extruderTempLabel . Text ,
@@ -323,20 +312,23 @@ public dynamic GetPrinterStatus()
323312 internal async void MainMenu_Shown ( object sender , EventArgs e )
324313 {
325314 // load config
326- config = new Config ( ) . Load ( ) ;
315+ Config = new Config ( ) . Load ( ) ;
327316
328317 _uiHelper = new UiHelper ( this ) ;
329- if ( config . AlwaysOnTop ) _uiHelper . SetOnTop ( ) ;
318+ if ( Config . AlwaysOnTop ) _uiHelper . SetOnTop ( ) ;
330319
331320 // init managers
332321 _connectionManager = new ConnectionManager ( this ) ;
333- StreamManager = new CameraStreamManager ( this ) ;
322+
334323 _statusTimerManager = new StatusTimerManager ( this , _uiHelper ) ;
324+
325+
335326 ButtonManager = new ButtonManager ( this ) ;
327+ MjpegStreamManager = new MjpegStreamManager ( this ) ;
336328
337329
338330 // only show console window if in debug mode
339- if ( config . DebugMode ) Program . AllocConsole ( ) ;
331+ if ( Config . DebugMode ) Program . AllocConsole ( ) ;
340332
341333 IsConnected = await Connect ( ) ;
342334 }
@@ -346,24 +338,25 @@ internal async Task<bool> Connect()
346338 var connected = await _connectionManager . FindPrinterAndConnect ( ) ;
347339 if ( connected )
348340 {
349- AppendLog ( $ "Connected to { printerClient . PrinterName } @ { printerClient . IpAddress } ") ;
350- AppendLog ( $ "Firmware version: { printerClient . FirmwareVersion } ") ;
341+ AppendLog ( $ "Connected to { PrinterClient . PrinterName } @ { PrinterClient . IpAddress } ") ;
342+ AppendLog ( $ "Firmware version: { PrinterClient . FirmwareVersion } ") ;
351343
352344 CheckFeatures ( ) ;
353345
354- if ( config . DiscordSync ) InitWebhook ( ) ; // only check/enable the webhook if the user actually enabled it.
346+ if ( Config . DiscordSync ) InitWebhook ( ) ; // only check/enable the webhook if the user actually enabled it.
355347 StartTimers ( ) ;
356- if ( config . WebUi ) StartWebUi ( ) ;
348+ if ( Config . WebUi ) StartWebUi ( ) ;
357349
358350 return true ;
359351 }
360352
361353 return false ;
362354 }
363355
364- internal void MainMenu_Closing ( object sender , CancelEventArgs cancelEventArgs )
356+
357+ internal void MainMenu_Closed ( object sender , FormClosedEventArgs e )
365358 {
366- Application . Exit ( ) ;
359+ MjpegStreamManager . Stop ( ) ;
367360 }
368361
369362 private async void ledOnButton_Click ( object sender , EventArgs e )
@@ -407,7 +400,7 @@ private async void homeAxesButton_Click(object sender, EventArgs e)
407400
408401 await CmdWait ( ) ;
409402 AppendLog ( "Homing axes" ) ;
410- var homed = await printerClient . Control . HomeAxes ( ) ;
403+ var homed = await PrinterClient . Control . HomeAxes ( ) ;
411404 AppendLog ( homed ? "Homed." : "Error homing axes." ) ;
412405 CmdRelease ( ) ;
413406 }
@@ -432,7 +425,7 @@ private async void startLocalJobButton_Click(object sender, EventArgs e)
432425
433426 private void sendCmdButton_Click ( object sender , EventArgs e )
434427 {
435- new SendCommandWindow ( printerClient . TcpClient ) . ShowDialog ( ) ;
428+ new SendCommandWindow ( PrinterClient . TcpClient , this ) . ShowDialog ( ) ;
436429 }
437430
438431 private void toggleWebcamButton_Click ( object sender , EventArgs e )
@@ -455,7 +448,7 @@ private async void setBedTempButton_Click(object sender, EventArgs e)
455448 else
456449 {
457450 await CmdWait ( ) ;
458- if ( await printerClient . TempControl . SetBedTemp ( temp ) ) AppendLog ( $ "Bed temp set to { temp } C") ;
451+ if ( await PrinterClient . TempControl . SetBedTemp ( temp ) ) AppendLog ( $ "Bed temp set to { temp } C") ;
459452 else AppendLog ( "Unable to set bed temp!!" ) ;
460453 CmdRelease ( ) ;
461454 }
@@ -475,7 +468,7 @@ private async void disableBedHeatButton_Click(object sender, EventArgs e)
475468 }
476469
477470 await CmdWait ( ) ;
478- if ( ! await printerClient . TempControl . CancelBedTemp ( ) ) AppendLog ( "Unable to turn off bed heating!!" ) ;
471+ if ( ! await PrinterClient . TempControl . CancelBedTemp ( ) ) AppendLog ( "Unable to turn off bed heating!!" ) ;
479472 else AppendLog ( "Bed heating disabled." ) ;
480473 CmdRelease ( ) ;
481474 }
@@ -495,7 +488,7 @@ private async void setExtruderTempButton_Click(object sender, EventArgs e)
495488 else
496489 {
497490 await CmdWait ( ) ;
498- if ( await printerClient . TempControl . SetExtruderTemp ( temp ) ) AppendLog ( $ "Extruder temp set to { temp } C") ;
491+ if ( await PrinterClient . TempControl . SetExtruderTemp ( temp ) ) AppendLog ( $ "Extruder temp set to { temp } C") ;
499492 else AppendLog ( "Unable to set extruder temp!!" ) ;
500493 CmdRelease ( ) ;
501494 }
@@ -515,7 +508,7 @@ private async void disableExtruderHeatButton_Click(object sender, EventArgs e)
515508 }
516509
517510 await CmdWait ( ) ;
518- if ( ! await printerClient . TempControl . CancelExtruderTemp ( ) ) AppendLog ( "Unable to turn off extruder heat!!" ) ;
511+ if ( ! await PrinterClient . TempControl . CancelExtruderTemp ( ) ) AppendLog ( "Unable to turn off extruder heat!!" ) ;
519512 else AppendLog ( "Extruder heating disabled." ) ;
520513 CmdRelease ( ) ;
521514 }
0 commit comments