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 .
* /
2017-09-17 01:11:18 -07:00
using System ;
2015-04-23 20:19:00 -07:00
using MatterHackers.Agg ;
using MatterHackers.Agg.UI ;
using MatterHackers.Localizations ;
using MatterHackers.MatterControl.SlicerConfiguration ;
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-17 01:11:18 -07:00
private PrinterConfig printer ;
2015-04-23 20:19:00 -07:00
2017-09-17 01:11:18 -07:00
public PowerControls ( PrinterConfig printer , int headingPointSize )
2015-04-23 20:19:00 -07:00
{
2017-09-17 01:11:18 -07:00
this . printer = printer ;
var 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-09-17 01:11:18 -07:00
fanControlsGroupBox . HAnchor | = 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-17 01:11:18 -07:00
printer . Connection . 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 ) ;
2017-09-17 01:11:18 -07:00
printer . Connection . CommunicationStateChanged . RegisterEvent ( ( s , e ) = >
{
this . Visible = printer . Settings . GetValue < bool > ( SettingsKey . has_power_control ) ;
this . SetEnableLevel ( printer . Connection . PrinterIsConnected ? EnableLevel . Enabled : EnableLevel . Disabled ) ;
} , ref unregisterEvents ) ;
2016-11-30 13:31:19 -08:00
2017-09-17 01:11:18 -07:00
printer . Connection . AtxPowerStateChanged . RegisterEvent ( ( s , e ) = >
{
this . atxPowertoggleSwitch . Checked = printer . Connection . AtxPowerEnabled ;
} , ref unregisterEvents ) ;
this . Visible = printer . Settings . GetValue < bool > ( SettingsKey . has_power_control ) ;
this . SetEnableLevel ( printer . Connection . PrinterIsConnected ? EnableLevel . Enabled : EnableLevel . Disabled ) ;
2016-11-30 13:31:19 -08:00
2017-09-17 01:11:18 -07:00
this . HAnchor = HAnchor . Stretch ;
2017-08-07 15:47:27 -07:00
this . HAnchor = HAnchor . Stretch ;
this . VAnchor = VAnchor . Stretch ;
2016-11-30 13:31:19 -08: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 ) ;
}
}
}