2015-04-23 20:19:00 -07:00
/ *
Copyright ( c ) 2014 , Kevin Pope
All rights reserved .
Redistribution and use in source and binary forms , with or without
modification , are permitted provided that the following conditions are met :
1. Redistributions of source code must retain the above copyright notice , this
list of conditions and the following disclaimer .
2. Redistributions in binary form must reproduce the above copyright notice ,
this list of conditions and the following disclaimer in the documentation
and / or other materials provided with the distribution .
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES
( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies ,
either expressed or implied , of the FreeBSD Project .
* /
using MatterHackers.Agg ;
using MatterHackers.Agg.UI ;
using MatterHackers.Localizations ;
using MatterHackers.MatterControl.PrinterCommunication ;
using MatterHackers.MatterControl.SlicerConfiguration ;
using System ;
namespace MatterHackers.MatterControl.PrinterControls
{
public class PowerControls : ControlWidgetBase
{
2016-12-29 06:55:12 -08:00
private EventHandler unregisterEvents ;
2015-04-23 20:19:00 -07:00
private CheckBox atxPowertoggleSwitch ;
2017-09-03 11:48:08 -07:00
PrinterConnection printerConnection ;
2015-04-23 20:19:00 -07:00
2017-09-03 11:48:08 -07:00
public PowerControls ( PrinterConnection printerConnection , int headingPointSize )
2015-04-23 20:19:00 -07:00
{
2017-09-03 11:48:08 -07:00
this . printerConnection = printerConnection ;
2017-08-06 18:17:46 -07:00
AltGroupBox fanControlsGroupBox = new AltGroupBox ( new TextWidget ( "ATX Power Control" . Localize ( ) , pointSize : headingPointSize , textColor : ActiveTheme . Instance . SecondaryAccentColor ) ) ;
2015-04-23 20:19:00 -07:00
fanControlsGroupBox . Margin = new BorderDouble ( 0 ) ;
fanControlsGroupBox . BorderColor = ActiveTheme . Instance . PrimaryTextColor ;
2017-08-07 15:47:27 -07:00
fanControlsGroupBox . HAnchor | = Agg . UI . HAnchor . Stretch ;
2015-04-23 20:19:00 -07:00
this . AddChild ( fanControlsGroupBox ) ;
atxPowertoggleSwitch = ImageButtonFactory . CreateToggleSwitch ( false ) ;
atxPowertoggleSwitch . Margin = new BorderDouble ( 6 , 0 , 6 , 6 ) ;
atxPowertoggleSwitch . CheckedStateChanged + = ( sender , e ) = >
{
2017-09-03 11:48:08 -07:00
printerConnection . AtxPowerEnabled = atxPowertoggleSwitch . Checked ;
2015-04-23 20:19:00 -07:00
} ;
FlowLayoutWidget paddingContainer = new FlowLayoutWidget ( ) ;
2016-05-06 17:56:27 -07:00
paddingContainer . Padding = new BorderDouble ( 3 , 5 , 3 , 0 ) ;
2015-04-23 20:19:00 -07:00
{
paddingContainer . AddChild ( atxPowertoggleSwitch ) ;
}
fanControlsGroupBox . AddChild ( paddingContainer ) ;
UpdateControlVisibility ( null , null ) ;
2016-11-30 13:31:19 -08:00
2017-09-03 11:48:08 -07:00
printerConnection . CommunicationStateChanged . RegisterEvent ( this . UpdateControlVisibility , ref unregisterEvents ) ;
printerConnection . AtxPowerStateChanged . RegisterEvent ( this . UpdatePowerSwitch , ref unregisterEvents ) ;
2016-11-30 13:31:19 -08:00
2017-08-07 15:47:27 -07:00
this . HAnchor = Agg . UI . HAnchor . Stretch ;
this . HAnchor = HAnchor . Stretch ;
this . VAnchor = VAnchor . Stretch ;
2016-11-30 13:31:19 -08:00
}
private void UpdateControlVisibility ( object sender , EventArgs args )
{
this . Visible = ActiveSliceSettings . Instance . GetValue < bool > ( SettingsKey . has_power_control ) ;
2017-09-03 11:48:08 -07:00
this . SetEnableLevel ( printerConnection . PrinterIsConnected ? EnableLevel . Enabled : EnableLevel . Disabled ) ;
2016-11-30 13:31:19 -08:00
}
private void UpdatePowerSwitch ( object sender , EventArgs args )
{
2017-09-03 11:48:08 -07:00
this . atxPowertoggleSwitch . Checked = printerConnection . AtxPowerEnabled ;
2015-04-23 20:19:00 -07:00
}
2017-02-03 13:06:08 -08:00
public override void OnClosed ( ClosedEventArgs e )
2015-04-23 20:19:00 -07:00
{
2017-08-03 18:30:44 -07:00
unregisterEvents ? . Invoke ( this , null ) ;
2015-04-23 20:19:00 -07:00
base . OnClosed ( e ) ;
}
}
}