2014-01-29 19:09:30 -08:00
/ *
2017-05-24 19:11:51 -07:00
Copyright ( c ) 2017 , Lars Brubaker , John Lewin
2014-01-29 19:09:30 -08:00
All rights reserved .
Redistribution and use in source and binary forms , with or without
2015-04-08 15:20:10 -07:00
modification , are permitted provided that the following conditions are met :
2014-01-29 19:09:30 -08:00
1. Redistributions of source code must retain the above copyright notice , this
2015-04-08 15:20:10 -07:00
list of conditions and the following disclaimer .
2014-01-29 19:09:30 -08:00
2. Redistributions in binary form must reproduce the above copyright notice ,
this list of conditions and the following disclaimer in the documentation
2015-04-08 15:20:10 -07:00
and / or other materials provided with the distribution .
2014-01-29 19:09:30 -08:00
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
2015-04-08 15:20:10 -07:00
of the authors and should not be interpreted as representing official policies ,
2014-01-29 19:09:30 -08:00
either expressed or implied , of the FreeBSD Project .
* /
2017-05-24 19:11:51 -07:00
using System ;
2014-01-29 19:09:30 -08:00
using MatterHackers.Agg ;
2014-07-01 18:32:39 -07:00
using MatterHackers.Agg.UI ;
2014-02-04 13:30:42 -08:00
using MatterHackers.Localizations ;
2014-04-15 18:13:27 -07:00
using MatterHackers.MatterControl.SlicerConfiguration ;
2014-01-29 19:09:30 -08:00
namespace MatterHackers.MatterControl.PartPreviewWindow
{
2017-06-24 13:17:43 -07:00
public class ViewGcodeBasic : GuiWidget
2015-04-08 15:20:10 -07:00
{
private EventHandler unregisterEvents ;
2017-09-15 16:49:21 -07:00
private BedConfig sceneContext ;
2017-10-17 13:37:04 -07:00
private TextWidget gcodeProcessingStateInfoText ;
2017-09-17 01:11:18 -07:00
private PrinterConfig printer ;
2017-06-24 13:17:43 -07:00
private ViewControls3D viewControls3D ;
2017-06-24 08:32:09 -07:00
2017-09-17 01:11:18 -07:00
public ViewGcodeBasic ( PrinterConfig printer , BedConfig sceneContext , ViewControls3D viewControls3D )
2015-04-08 15:20:10 -07:00
{
2017-09-17 01:11:18 -07:00
this . printer = printer ;
2017-09-15 16:49:21 -07:00
this . sceneContext = sceneContext ;
2017-06-24 13:17:43 -07:00
this . viewControls3D = viewControls3D ;
2015-04-08 15:20:10 -07:00
2017-09-17 01:11:18 -07:00
CreateAndAddChildren ( printer ) ;
2015-04-08 15:20:10 -07:00
2017-06-28 18:39:46 -07:00
ActiveSliceSettings . SettingChanged . RegisterEvent ( ( s , e ) = >
{
if ( e is StringEventArgs stringEvent )
2016-07-18 10:52:36 -07:00
{
2017-06-28 18:39:46 -07:00
if ( stringEvent . Data = = "extruder_offset" )
2017-06-28 18:16:26 -07:00
{
2017-09-17 01:11:18 -07:00
printer . Bed . GCodeRenderer ? . Clear3DGCode ( ) ;
2017-06-28 18:16:26 -07:00
}
2016-07-18 10:52:36 -07:00
}
2017-06-28 18:39:46 -07:00
} , ref unregisterEvents ) ;
2016-07-18 10:52:36 -07:00
2017-06-28 18:39:46 -07:00
// TODO: Why do we clear GCode on AdvancedControlsPanelReloading - assume some slice settings should invalidate. If so, code should be more specific and bound to slice settings changed
2017-10-17 13:37:04 -07:00
ApplicationController . Instance . AdvancedControlsPanelReloading . RegisterEvent ( ( s , e ) = >
{
printer ? . Bed . GCodeRenderer ? . Clear3DGCode ( ) ;
} , ref unregisterEvents ) ;
2017-03-15 16:17:06 -07:00
}
2017-09-17 01:11:18 -07:00
internal void CreateAndAddChildren ( PrinterConfig printer )
2015-04-08 15:20:10 -07:00
{
2017-10-17 13:37:04 -07:00
this . CloseAllChildren ( ) ;
2017-06-02 06:45:04 -07:00
2017-10-17 13:37:04 -07:00
this . AddChild ( gcodeProcessingStateInfoText = new TextWidget ( "" )
2017-02-01 16:39:24 -08:00
{
2017-10-17 13:37:04 -07:00
HAnchor = HAnchor . Center ,
VAnchor = VAnchor . Center ,
AutoExpandBoundsToText = true
} ) ;
2017-06-30 15:05:07 -07:00
2017-09-15 16:49:21 -07:00
if ( sceneContext . LoadedGCode ? . LineCount > 0 )
2017-06-30 15:05:07 -07:00
{
2017-10-17 13:37:04 -07:00
this . AddChild (
new ColorGradientWidget ( sceneContext . LoadedGCode )
{
Margin = new BorderDouble ( top : 55 , left : 11 ) ,
HAnchor = HAnchor . Fit | HAnchor . Left ,
VAnchor = VAnchor . Top ,
Visible = sceneContext . RendererOptions . RenderSpeeds
} ) ;
this . AddChild (
new GCodeDetailsView ( new GCodeDetails ( printer , printer . Bed . LoadedGCode ) )
{
Margin = new BorderDouble ( 0 , 0 , 35 , 5 ) ,
Padding = new BorderDouble ( 10 ) ,
BackgroundColor = new RGBA_Bytes ( 0 , 0 , 0 , ViewControlsBase . overlayAlpha ) ,
HAnchor = HAnchor . Right | HAnchor . Absolute ,
VAnchor = VAnchor . Top | VAnchor . Fit ,
Width = 150
} ) ;
2017-06-30 15:05:07 -07:00
}
}
2017-07-18 18:15:10 -07:00
internal void LoadProgress_Changed ( double progress0To1 , string processingState )
2017-06-20 14:56:36 -07:00
{
2017-10-17 13:37:04 -07:00
SetProcessingMessage ( string . Format ( "{0} {1:0}%..." , "Loading G-Code" . Localize ( ) , progress0To1 * 100 ) ) ;
2017-06-20 14:56:36 -07:00
}
2015-04-08 15:20:10 -07:00
private void SetProcessingMessage ( string message )
{
2017-10-17 13:37:04 -07:00
gcodeProcessingStateInfoText . BackgroundColor = ( message = = "" ) ? RGBA_Bytes . Transparent : RGBA_Bytes . White ;
2015-04-08 15:20:10 -07:00
gcodeProcessingStateInfoText . Text = message ;
}
2017-02-03 13:06:08 -08:00
public override void OnClosed ( ClosedEventArgs e )
2015-04-08 15:20:10 -07:00
{
2017-05-25 17:58:20 -07:00
unregisterEvents ? . Invoke ( this , null ) ;
2015-04-08 15:20:10 -07:00
base . OnClosed ( e ) ;
}
}
2016-06-27 12:05:14 -07:00
}