Revise temperature widgets
This commit is contained in:
parent
8564ba8969
commit
bd10edc2aa
19 changed files with 382 additions and 1198 deletions
|
|
@ -86,7 +86,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
{
|
||||
var temperatureWidgets = new FlowLayoutWidget();
|
||||
{
|
||||
extruderTemperatureWidget = new TemperatureWidgetExtruder();
|
||||
extruderTemperatureWidget = new TemperatureWidgetExtruder(ApplicationController.Instance.Theme.MenuButtonFactory);
|
||||
temperatureWidgets.AddChild(extruderTemperatureWidget);
|
||||
|
||||
bedTemperatureWidget = new TemperatureWidgetBed();
|
||||
|
|
|
|||
|
|
@ -29,76 +29,108 @@ either expressed or implied, of the FreeBSD Project.
|
|||
|
||||
using System;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.PlatformAbstract;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Agg.VertexSource;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.PrinterCommunication;
|
||||
using MatterHackers.MatterControl.PartPreviewWindow;
|
||||
|
||||
namespace MatterHackers.MatterControl.ActionBar
|
||||
{
|
||||
internal class TemperatureWidgetBase : GuiWidget
|
||||
internal class TemperatureWidgetBase : PopupButton
|
||||
{
|
||||
private TextWidget currentTempIndicator;
|
||||
protected TextWidget temperatureTypeName;
|
||||
protected TextWidget CurrentTempIndicator;
|
||||
private TextWidget goalTempIndicator;
|
||||
protected TextWidget DirectionIndicator;
|
||||
|
||||
protected TextImageButtonFactory whiteButtonFactory = new TextImageButtonFactory()
|
||||
protected ImageWidget ImageWidget = new ImageWidget(StaticData.Instance.LoadIcon("Hotend.png"))
|
||||
{
|
||||
FixedHeight = 18 * GuiWidget.DeviceScale,
|
||||
fontSize = 7,
|
||||
normalFillColor = ApplicationController.Instance.Theme.TabBodyBackground,
|
||||
normalTextColor = ActiveTheme.Instance.PrimaryTextColor,
|
||||
VAnchor = VAnchor.ParentCenter,
|
||||
Margin = new BorderDouble(right: 5)
|
||||
};
|
||||
|
||||
private static RGBA_Bytes borderColor = new RGBA_Bytes(255, 255, 255);
|
||||
protected EventHandler unregisterEvents;
|
||||
|
||||
public string IndicatorValue
|
||||
{
|
||||
get
|
||||
{
|
||||
return currentTempIndicator.Text;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (currentTempIndicator.Text != value)
|
||||
{
|
||||
currentTempIndicator.Text = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
protected virtual int ActualTemperature { get; }
|
||||
protected virtual int TargetTemperature { get; }
|
||||
|
||||
public TemperatureWidgetBase(string textValue)
|
||||
: base(52 * GuiWidget.DeviceScale, 52 * GuiWidget.DeviceScale)
|
||||
{
|
||||
this.BackgroundColor = ApplicationController.Instance.Theme.SlightShade;
|
||||
this.Margin = new BorderDouble(0, 2) * GuiWidget.DeviceScale;
|
||||
this.HAnchor = HAnchor.FitToChildren;
|
||||
this.VAnchor = VAnchor.FitToChildren;
|
||||
this.Cursor = Cursors.Hand;
|
||||
|
||||
temperatureTypeName = new TextWidget("", pointSize: 8)
|
||||
this.AlignToRightEdge = true;
|
||||
|
||||
var container = new FlowLayoutWidget()
|
||||
{
|
||||
AutoExpandBoundsToText = true,
|
||||
HAnchor = HAnchor.ParentCenter,
|
||||
VAnchor = VAnchor.ParentTop,
|
||||
Margin = new BorderDouble(0, 3),
|
||||
TextColor = ActiveTheme.Instance.PrimaryTextColor,
|
||||
HAnchor = HAnchor.FitToChildren,
|
||||
VAnchor = VAnchor.FitToChildren,
|
||||
Padding = new BorderDouble(5)
|
||||
};
|
||||
this.AddChild(temperatureTypeName);
|
||||
this.AddChild(container);
|
||||
|
||||
currentTempIndicator = new TextWidget(textValue, pointSize: 11)
|
||||
container.AddChild(this.ImageWidget);
|
||||
|
||||
CurrentTempIndicator = new TextWidget(textValue, pointSize: 11)
|
||||
{
|
||||
TextColor = ActiveTheme.Instance.PrimaryTextColor,
|
||||
HAnchor = HAnchor.ParentCenter,
|
||||
VAnchor = VAnchor.ParentCenter,
|
||||
AutoExpandBoundsToText = true
|
||||
};
|
||||
this.AddChild(currentTempIndicator);
|
||||
container.AddChild(CurrentTempIndicator);
|
||||
|
||||
var buttonContainer = new GuiWidget()
|
||||
container.AddChild(new TextWidget("/") { TextColor = ActiveTheme.Instance.PrimaryTextColor });
|
||||
|
||||
goalTempIndicator = new TextWidget(textValue, pointSize: 11)
|
||||
{
|
||||
HAnchor = Agg.UI.HAnchor.ParentLeftRight,
|
||||
Height = 18 * GuiWidget.DeviceScale
|
||||
TextColor = ActiveTheme.Instance.PrimaryTextColor,
|
||||
VAnchor = VAnchor.ParentCenter,
|
||||
AutoExpandBoundsToText = true
|
||||
};
|
||||
this.AddChild(buttonContainer);
|
||||
container.AddChild(goalTempIndicator);
|
||||
|
||||
DirectionIndicator = new TextWidget(textValue, pointSize: 11)
|
||||
{
|
||||
TextColor = ActiveTheme.Instance.PrimaryTextColor,
|
||||
VAnchor = VAnchor.ParentCenter,
|
||||
AutoExpandBoundsToText = true,
|
||||
Margin = new BorderDouble(left: 5)
|
||||
};
|
||||
container.AddChild(DirectionIndicator);
|
||||
}
|
||||
|
||||
protected void DisplayCurrentTemperature()
|
||||
{
|
||||
int actualTemperature = this.ActualTemperature;
|
||||
int targetTemperature = this.TargetTemperature;
|
||||
|
||||
if (targetTemperature > 0)
|
||||
{
|
||||
int targetTemp = (int)(targetTemperature + 0.5);
|
||||
int actualTemp = (int)(actualTemperature + 0.5);
|
||||
|
||||
this.goalTempIndicator.Text = $"{targetTemperature:0.#}°";
|
||||
this.DirectionIndicator.Text = (targetTemp < actualTemp) ? "↓" : "↑";
|
||||
}
|
||||
else
|
||||
{
|
||||
this.DirectionIndicator.Text = "";
|
||||
}
|
||||
|
||||
|
||||
this.CurrentTempIndicator.Text = $"{actualTemperature:0.#}";
|
||||
}
|
||||
|
||||
|
||||
protected virtual void SetTargetTemperature() { }
|
||||
|
||||
protected virtual GuiWidget GetPopupContent() { return null; }
|
||||
|
||||
public override void OnClosed(ClosedEventArgs e)
|
||||
{
|
||||
unregisterEvents?.Invoke(this, null);
|
||||
base.OnClosed(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,9 +27,11 @@ of the authors and should not be interpreted as representing official policies,
|
|||
either expressed or implied, of the FreeBSD Project.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.PlatformAbstract;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.ConfigurationPage;
|
||||
using MatterHackers.MatterControl.PrinterCommunication;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
|
||||
|
|
@ -37,41 +39,25 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
{
|
||||
internal class TemperatureWidgetBed : TemperatureWidgetBase
|
||||
{
|
||||
private EventHandler unregisterEvents;
|
||||
|
||||
private string sliceSettingsNote = "Note: Slice Settings are applied before the print actually starts. Changes while printing will not effect the active print.".Localize();
|
||||
private string waitingForBedToHeatMessage = "The bed is currently heating and its target temperature cannot be changed until it reaches {0}°C.\n\nYou can set the starting bed temperature in SETTINGS -> Filament -> Temperatures.\n\n{1}".Localize();
|
||||
private string waitingForBedToHeatTitle = "Waiting For Bed To Heat".Localize();
|
||||
|
||||
//Not currently hooked up to anything
|
||||
public TemperatureWidgetBed()
|
||||
: base("150.3°")
|
||||
{
|
||||
temperatureTypeName.Text = "Print Bed";
|
||||
DisplayCurrentTemperature();
|
||||
ToolTipText = "Current bed temperature".Localize();
|
||||
this.DisplayCurrentTemperature();
|
||||
this.ToolTipText = "Current bed temperature".Localize();
|
||||
this.ImageWidget.Image = StaticData.Instance.LoadIcon("Bed.png");
|
||||
|
||||
this.PopupContent = this.GetPopupContent();
|
||||
|
||||
PrinterConnection.Instance.BedTemperatureRead.RegisterEvent((s, e) => DisplayCurrentTemperature(), ref unregisterEvents);
|
||||
}
|
||||
|
||||
private void DisplayCurrentTemperature()
|
||||
{
|
||||
string tempDirectionIndicator = "";
|
||||
protected override int TargetTemperature => (int)PrinterConnection.Instance.TargetBedTemperature;
|
||||
|
||||
if (PrinterConnection.Instance.TargetBedTemperature > 0)
|
||||
{
|
||||
if ((int)(PrinterConnection.Instance.TargetBedTemperature + 0.5) < (int)(PrinterConnection.Instance.ActualBedTemperature + 0.5))
|
||||
{
|
||||
tempDirectionIndicator = "↓";
|
||||
}
|
||||
else if ((int)(PrinterConnection.Instance.TargetBedTemperature + 0.5) > (int)(PrinterConnection.Instance.ActualBedTemperature + 0.5))
|
||||
{
|
||||
tempDirectionIndicator = "↑";
|
||||
}
|
||||
}
|
||||
|
||||
this.IndicatorValue = string.Format(" {0:0.#}°{1}", PrinterConnection.Instance.ActualBedTemperature, tempDirectionIndicator);
|
||||
}
|
||||
protected override int ActualTemperature => (int)PrinterConnection.Instance.ActualBedTemperature;
|
||||
|
||||
protected override void SetTargetTemperature()
|
||||
{
|
||||
|
|
@ -93,10 +79,65 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
}
|
||||
}
|
||||
|
||||
public override void OnClosed(ClosedEventArgs e)
|
||||
protected override GuiWidget GetPopupContent()
|
||||
{
|
||||
unregisterEvents?.Invoke(this, null);
|
||||
base.OnClosed(e);
|
||||
var widget = new IgnoredPopupWidget()
|
||||
{
|
||||
Width = 300,
|
||||
HAnchor = HAnchor.AbsolutePosition,
|
||||
VAnchor = VAnchor.FitToChildren,
|
||||
BackgroundColor = RGBA_Bytes.White,
|
||||
Padding = new BorderDouble(12, 0)
|
||||
};
|
||||
|
||||
var container = new FlowLayoutWidget(FlowDirection.TopToBottom)
|
||||
{
|
||||
HAnchor = HAnchor.ParentLeftRight,
|
||||
VAnchor = VAnchor.FitToChildren | VAnchor.ParentTop,
|
||||
BackgroundColor = RGBA_Bytes.White
|
||||
};
|
||||
widget.AddChild(container);
|
||||
|
||||
container.AddChild(new SettingsItem(
|
||||
"Heated Bed".Localize(),
|
||||
new SettingsItem.ToggleSwitchConfig()
|
||||
{
|
||||
Checked = false,
|
||||
ToggleAction = (itemChecked) =>
|
||||
{
|
||||
var goalTemp = itemChecked ? ActiveSliceSettings.Instance.GetValue<double>(SettingsKey.bed_temperature) : 0;
|
||||
|
||||
if (PrinterConnection.Instance.PrinterIsPrinting
|
||||
&& PrinterConnection.Instance.PrintingState == DetailedPrintingState.HeatingBed
|
||||
&& goalTemp != PrinterConnection.Instance.TargetBedTemperature)
|
||||
{
|
||||
string sliceSettingsNote = "Note: Slice Settings are applied before the print actually starts. Changes while printing will not effect the active print.";
|
||||
string message = string.Format(
|
||||
"The bed is currently heating and its target temperature cannot be changed until it reaches {0}°C.\n\nYou can set the starting bed temperature in 'Slice Settings' -> 'Filament'.\n\n{1}",
|
||||
PrinterConnection.Instance.TargetBedTemperature,
|
||||
sliceSettingsNote);
|
||||
|
||||
StyledMessageBox.ShowMessageBox(null, message, "Waiting For Bed To Heat");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (itemChecked)
|
||||
{
|
||||
SetTargetTemperature();
|
||||
}
|
||||
else
|
||||
{
|
||||
PrinterConnection.Instance.TargetBedTemperature = 0;
|
||||
|
||||
//string displayString = string.Format("{0:0.0}°C", PrinterConnectionAndCommunication.Instance.TargetBedTemperature);
|
||||
//targetTemperatureDisplay.SetDisplayString(displayString);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
enforceGutter: false));
|
||||
|
||||
return widget;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -27,11 +27,14 @@ of the authors and should not be interpreted as representing official policies,
|
|||
either expressed or implied, of the FreeBSD Project.
|
||||
*/
|
||||
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.PrinterCommunication;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.ConfigurationPage;
|
||||
using MatterHackers.MatterControl.PrinterCommunication;
|
||||
using MatterHackers.MatterControl.PrinterControls;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
|
||||
namespace MatterHackers.MatterControl.ActionBar
|
||||
{
|
||||
|
|
@ -39,38 +42,28 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
{
|
||||
// Extruder widget is hard-wired to extruder 0
|
||||
private const int extruderIndex = 0;
|
||||
private EventHandler unregisterEvents;
|
||||
private int moveAmount = 1;
|
||||
|
||||
private string sliceSettingsNote = "Note: Slice Settings are applied before the print actually starts. Changes while printing will not effect the active print.".Localize();
|
||||
private string waitingForExtruderToHeatMessage = "The extruder is currently heating and its target temperature cannot be changed until it reaches {0}°C.\n\nYou can set the starting extruder temperature in 'Slice Settings' -> 'Filament'.\n\n{1}".Localize();
|
||||
|
||||
public TemperatureWidgetExtruder()
|
||||
private TextImageButtonFactory buttonFactory;
|
||||
|
||||
public TemperatureWidgetExtruder(TextImageButtonFactory buttonFactory)
|
||||
: base("150.3°")
|
||||
{
|
||||
temperatureTypeName.Text = "Extruder";
|
||||
DisplayCurrentTemperature();
|
||||
this.buttonFactory = buttonFactory;
|
||||
this.DisplayCurrentTemperature();
|
||||
this.ToolTipText = "Current extruder temperature".Localize();
|
||||
|
||||
ToolTipText = "Current extruder temperature".Localize();
|
||||
this.PopupContent = this.GetPopupContent();
|
||||
|
||||
PrinterConnection.Instance.ExtruderTemperatureRead.RegisterEvent((s, e) => DisplayCurrentTemperature(), ref unregisterEvents);
|
||||
}
|
||||
|
||||
private void DisplayCurrentTemperature()
|
||||
{
|
||||
string tempDirectionIndicator = "";
|
||||
if (PrinterConnection.Instance.GetTargetExtruderTemperature(extruderIndex) > 0)
|
||||
{
|
||||
if ((int)(PrinterConnection.Instance.GetTargetExtruderTemperature(extruderIndex) + 0.5) < (int)(PrinterConnection.Instance.GetActualExtruderTemperature(extruderIndex) + 0.5))
|
||||
{
|
||||
tempDirectionIndicator = "↓";
|
||||
}
|
||||
else if ((int)(PrinterConnection.Instance.GetTargetExtruderTemperature(extruderIndex) + 0.5) > (int)(PrinterConnection.Instance.GetActualExtruderTemperature(extruderIndex) + 0.5))
|
||||
{
|
||||
tempDirectionIndicator = "↑";
|
||||
}
|
||||
}
|
||||
this.IndicatorValue = string.Format(" {0:0.#}°{1}", PrinterConnection.Instance.GetActualExtruderTemperature(extruderIndex), tempDirectionIndicator);
|
||||
}
|
||||
protected override int TargetTemperature => (int)PrinterConnection.Instance.GetTargetExtruderTemperature(extruderIndex);
|
||||
|
||||
protected override int ActualTemperature => (int)PrinterConnection.Instance.GetActualExtruderTemperature(extruderIndex);
|
||||
|
||||
protected override void SetTargetTemperature()
|
||||
{
|
||||
|
|
@ -92,10 +85,173 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
}
|
||||
}
|
||||
|
||||
public override void OnClosed(ClosedEventArgs e)
|
||||
protected override GuiWidget GetPopupContent()
|
||||
{
|
||||
unregisterEvents?.Invoke(this, null);
|
||||
base.OnClosed(e);
|
||||
var widget = new IgnoredPopupWidget()
|
||||
{
|
||||
Width = 300,
|
||||
HAnchor = HAnchor.AbsolutePosition,
|
||||
VAnchor = VAnchor.FitToChildren,
|
||||
BackgroundColor = RGBA_Bytes.White,
|
||||
Padding = new BorderDouble(12, 0)
|
||||
};
|
||||
|
||||
var container = new FlowLayoutWidget(FlowDirection.TopToBottom)
|
||||
{
|
||||
HAnchor = HAnchor.ParentLeftRight,
|
||||
VAnchor = VAnchor.FitToChildren | VAnchor.ParentTop,
|
||||
BackgroundColor = RGBA_Bytes.White
|
||||
};
|
||||
|
||||
container.AddChild(new SettingsItem(
|
||||
string.Format("{0} {1}", "HotEnd".Localize(), extruderIndex + 1),
|
||||
new SettingsItem.ToggleSwitchConfig()
|
||||
{
|
||||
Checked = false,
|
||||
ToggleAction = (itemChecked) =>
|
||||
{
|
||||
if (itemChecked)
|
||||
{
|
||||
// Set to goal temp
|
||||
SetTargetTemperature();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Turn off extruder
|
||||
PrinterConnection.Instance.SetTargetExtruderTemperature(extruderIndex, 0);
|
||||
}
|
||||
}
|
||||
},
|
||||
enforceGutter: false));
|
||||
|
||||
var presetsSelector = new PresetSelectorWidget(string.Format($"{"Material".Localize()} {extruderIndex + 1}"), RGBA_Bytes.Transparent, NamedSettingsLayers.Material, extruderIndex)
|
||||
{
|
||||
Margin = 0,
|
||||
BackgroundColor = RGBA_Bytes.Transparent,
|
||||
HAnchor = HAnchor.AbsolutePosition,
|
||||
Width = 150
|
||||
};
|
||||
|
||||
this.Width = 150;
|
||||
|
||||
// HACK: remove undesired item
|
||||
var label = presetsSelector.Children<TextWidget>().FirstOrDefault();
|
||||
label.Close();
|
||||
|
||||
var pulldownContainer = presetsSelector.FindNamedChildRecursive("Preset Pulldown Container");
|
||||
if (pulldownContainer != null)
|
||||
{
|
||||
pulldownContainer.Padding = 0;
|
||||
}
|
||||
|
||||
var dropList = presetsSelector.FindNamedChildRecursive("Material") as DropDownList;
|
||||
if (dropList != null)
|
||||
{
|
||||
dropList.TextColor = buttonFactory.normalTextColor;
|
||||
}
|
||||
|
||||
container.AddChild(new SettingsItem("Material".Localize(), presetsSelector, enforceGutter: false));
|
||||
|
||||
widget.AddChild(container);
|
||||
|
||||
// Extrude buttons {{
|
||||
|
||||
var moveButtonFactory = new TextImageButtonFactory()
|
||||
{
|
||||
FixedHeight = 20 * GuiWidget.DeviceScale,
|
||||
FixedWidth = 30 * GuiWidget.DeviceScale,
|
||||
fontSize = 8,
|
||||
Margin = new BorderDouble(2, 0),
|
||||
checkedBorderColor = buttonFactory.normalTextColor,
|
||||
normalTextColor = buttonFactory.normalTextColor,
|
||||
normalFillColor = buttonFactory.normalFillColor,
|
||||
hoverFillColor = buttonFactory.hoverFillColor,
|
||||
pressedFillColor = buttonFactory.pressedFillColor,
|
||||
pressedTextColor = buttonFactory.pressedTextColor
|
||||
};
|
||||
|
||||
var buttonContainer = new FlowLayoutWidget()
|
||||
{
|
||||
HAnchor = HAnchor.FitToChildren,
|
||||
VAnchor = VAnchor.FitToChildren
|
||||
};
|
||||
|
||||
var retractButton = buttonFactory.Generate("Retract".Localize());
|
||||
retractButton.ToolTipText = "Retract filament".Localize();
|
||||
retractButton.Margin = new BorderDouble(8, 0);
|
||||
retractButton.Click += (s, e) =>
|
||||
{
|
||||
PrinterConnection.Instance.MoveExtruderRelative(moveAmount * -1, MovementControls.EFeedRate(extruderIndex), extruderIndex);
|
||||
};
|
||||
buttonContainer.AddChild(retractButton);
|
||||
|
||||
var extrudeButton = buttonFactory.Generate("Extrude".Localize());
|
||||
extrudeButton.ToolTipText = "Extrude filament".Localize();
|
||||
extrudeButton.Margin = 0;
|
||||
extrudeButton.Click += (s, e) =>
|
||||
{
|
||||
PrinterConnection.Instance.MoveExtruderRelative(moveAmount, MovementControls.EFeedRate(extruderIndex), extruderIndex);
|
||||
};
|
||||
buttonContainer.AddChild(extrudeButton);
|
||||
|
||||
container.AddChild(new SettingsItem(
|
||||
string.Format("{0} {1}", "Extruder".Localize(), extruderIndex + 1),
|
||||
buttonContainer,
|
||||
enforceGutter: false));
|
||||
|
||||
var moveButtonsContainer = new FlowLayoutWidget()
|
||||
{
|
||||
VAnchor = VAnchor.FitToChildren,
|
||||
HAnchor = HAnchor.FitToChildren,
|
||||
Margin = new BorderDouble(0, 3)
|
||||
};
|
||||
|
||||
RadioButton oneButton = moveButtonFactory.GenerateRadioButton("1");
|
||||
oneButton.VAnchor = VAnchor.ParentCenter;
|
||||
oneButton.CheckedStateChanged += (s, e) =>
|
||||
{
|
||||
if (oneButton.Checked)
|
||||
{
|
||||
moveAmount = 1;
|
||||
}
|
||||
};
|
||||
moveButtonsContainer.AddChild(oneButton);
|
||||
|
||||
RadioButton tenButton = moveButtonFactory.GenerateRadioButton("10");
|
||||
tenButton.VAnchor = VAnchor.ParentCenter;
|
||||
tenButton.CheckedStateChanged += (s, e) =>
|
||||
{
|
||||
if (tenButton.Checked)
|
||||
{
|
||||
moveAmount = 10;
|
||||
}
|
||||
};
|
||||
moveButtonsContainer.AddChild(tenButton);
|
||||
|
||||
RadioButton oneHundredButton = moveButtonFactory.GenerateRadioButton("100");
|
||||
oneHundredButton.VAnchor = VAnchor.ParentCenter;
|
||||
oneHundredButton.CheckedStateChanged += (s, e) =>
|
||||
{
|
||||
if (oneHundredButton.Checked)
|
||||
{
|
||||
moveAmount = 100;
|
||||
}
|
||||
};
|
||||
moveButtonsContainer.AddChild(oneHundredButton);
|
||||
|
||||
tenButton.Checked = true;
|
||||
|
||||
moveButtonsContainer.AddChild(new TextWidget("mm", textColor: buttonFactory.normalTextColor, pointSize: 8)
|
||||
{
|
||||
VAnchor = VAnchor.ParentCenter,
|
||||
Margin = new BorderDouble(3, 0)
|
||||
});
|
||||
|
||||
container.AddChild(new SettingsItem("Distance".Localize(), moveButtonsContainer, enforceGutter: false));
|
||||
|
||||
// Extrude buttons }}
|
||||
|
||||
return widget;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -114,7 +114,7 @@ namespace MatterHackers.MatterControl.ActionBar
|
|||
|
||||
tempWidgets.Width = 120;
|
||||
|
||||
extruderTemperatureWidget = new TemperatureWidgetExtruder();
|
||||
extruderTemperatureWidget = new TemperatureWidgetExtruder(ApplicationController.Instance.Theme.MenuButtonFactory);
|
||||
//extruderTemperatureWidget.Margin = new BorderDouble(right: 6);
|
||||
extruderTemperatureWidget.VAnchor = VAnchor.ParentTop;
|
||||
|
||||
|
|
|
|||
|
|
@ -187,6 +187,7 @@ namespace MatterHackers.MatterControl
|
|||
pressedTextColor = RGBA_Bytes.Black,
|
||||
disabledTextColor = theme.TertiaryBackgroundColor,
|
||||
normalFillColor = RGBA_Bytes.LightGray,
|
||||
pressedFillColor = RGBA_Bytes.LightGray,
|
||||
Margin = new BorderDouble(8, 0),
|
||||
borderWidth = 0,
|
||||
FixedHeight = 32,
|
||||
|
|
|
|||
|
|
@ -18,9 +18,10 @@ namespace MatterHackers.MatterControl.ConfigurationPage
|
|||
|
||||
private RGBA_Bytes menuTextColor = RGBA_Bytes.Black;
|
||||
|
||||
public SettingsItem(string text, ToggleSwitchConfig toggleSwitchConfig = null, GuiWidget optionalControls = null, ImageBuffer iconImage = null)
|
||||
public SettingsItem(string text, ToggleSwitchConfig toggleSwitchConfig = null, GuiWidget optionalControls = null, ImageBuffer iconImage = null, bool enforceGutter = true)
|
||||
: base(FlowDirection.LeftToRight)
|
||||
{
|
||||
this.HAnchor = HAnchor.ParentLeftRight;
|
||||
var switchContainer = new FlowLayoutWidget()
|
||||
{
|
||||
VAnchor = VAnchor.ParentCenter,
|
||||
|
|
@ -40,16 +41,16 @@ namespace MatterHackers.MatterControl.ConfigurationPage
|
|||
switchContainer.SetBoundsToEncloseChildren();
|
||||
}
|
||||
|
||||
CreateChildControls(text, switchContainer, optionalControls, iconImage);
|
||||
CreateChildControls(text, switchContainer, optionalControls, enforceGutter, iconImage);
|
||||
}
|
||||
|
||||
public SettingsItem (string text, GuiWidget settingsControls, GuiWidget optionalControls = null, ImageBuffer iconImage = null)
|
||||
public SettingsItem (string text, GuiWidget settingsControls, GuiWidget optionalControls = null, ImageBuffer iconImage = null, bool enforceGutter = true)
|
||||
: base (FlowDirection.LeftToRight)
|
||||
{
|
||||
CreateChildControls(text, settingsControls, optionalControls, iconImage);
|
||||
CreateChildControls(text, settingsControls, optionalControls, enforceGutter, iconImage);
|
||||
}
|
||||
|
||||
private void CreateChildControls(string text, GuiWidget settingsControls, GuiWidget optionalControls, ImageBuffer imageBuffer = null)
|
||||
private void CreateChildControls(string text, GuiWidget settingsControls, GuiWidget optionalControls, bool enforceGutter, ImageBuffer imageBuffer = null)
|
||||
{
|
||||
this.HAnchor = HAnchor.ParentLeftRight;
|
||||
this.MinimumSize = new Vector2(0, 40);
|
||||
|
|
@ -61,13 +62,6 @@ namespace MatterHackers.MatterControl.ConfigurationPage
|
|||
optionalControls.VAnchor |= VAnchor.ParentCenter;
|
||||
}
|
||||
|
||||
var sectionLabel = new TextWidget(text)
|
||||
{
|
||||
AutoExpandBoundsToText = true,
|
||||
TextColor = menuTextColor,
|
||||
VAnchor = VAnchor.ParentCenter
|
||||
};
|
||||
|
||||
if (imageBuffer != null)
|
||||
{
|
||||
if (!ActiveTheme.Instance.IsDarkTheme)
|
||||
|
|
@ -81,7 +75,7 @@ namespace MatterHackers.MatterControl.ConfigurationPage
|
|||
VAnchor = VAnchor.ParentCenter
|
||||
});
|
||||
}
|
||||
else
|
||||
else if (enforceGutter)
|
||||
{
|
||||
// Add an icon place holder to get consistent label indenting on items lacking icons
|
||||
this.AddChild(new GuiWidget()
|
||||
|
|
@ -92,13 +86,20 @@ namespace MatterHackers.MatterControl.ConfigurationPage
|
|||
});
|
||||
}
|
||||
|
||||
// Add flag to align all labels - fill empty space if sectionIconPath is empty
|
||||
this.AddChild(sectionLabel, -1);
|
||||
this.AddChild(new TextWidget(text)
|
||||
{
|
||||
AutoExpandBoundsToText = true,
|
||||
TextColor = menuTextColor,
|
||||
VAnchor = VAnchor.ParentCenter,
|
||||
});
|
||||
|
||||
this.AddChild(new HorizontalSpacer());
|
||||
|
||||
if (optionalControls != null)
|
||||
{
|
||||
this.AddChild(optionalControls);
|
||||
}
|
||||
|
||||
this.AddChild(settingsControls);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -266,9 +266,6 @@
|
|||
<Compile Include="PrinterControls\ControlWidgets\FanControls.cs" />
|
||||
<Compile Include="PrinterControls\ControlWidgets\MovementControls.cs" />
|
||||
<Compile Include="PrinterControls\ControlWidgets\PowerControls.cs" />
|
||||
<Compile Include="PrinterControls\ControlWidgets\TemperatureControls.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PrinterControls\PrinterConnections\ShowAuthPanel.cs" />
|
||||
<Compile Include="PrinterControls\TerminalWindow\PrinterOutputCache.cs" />
|
||||
<Compile Include="PrinterControls\TerminalWindow\TextScrolBar.cs" />
|
||||
|
|
@ -319,9 +316,6 @@
|
|||
<Compile Include="PartPreviewWindow\CreateDiscreteMeshes.cs" />
|
||||
<Compile Include="CustomWidgets\EditableNumberDisplay.cs" />
|
||||
<Compile Include="PartPreviewWindow\PlatingHelper.cs" />
|
||||
<Compile Include="PrinterControls\EditTemperaturePresetsWindow.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PrinterControls\ControlWidgets\MacroControls.cs" />
|
||||
<Compile Include="PrinterControls\EditManualMovementSpeedsWindow.cs" />
|
||||
<Compile Include="PrinterControls\EditMacrosWindow.cs" />
|
||||
|
|
@ -372,7 +366,6 @@
|
|||
<Compile Include="PrinterControls\PrinterConnections\BaseConnectionWidget.cs" />
|
||||
<Compile Include="PrinterControls\PrinterConnections\PrinterChooser.cs" />
|
||||
<Compile Include="PrinterControls\PrinterConnections\ConnectionWizardPage.cs" />
|
||||
<Compile Include="PrinterControls\TemperatureIndicator.cs" />
|
||||
<Compile Include="PrinterControls\XYZJogControls.cs" />
|
||||
<Compile Include="Library\Widgets\PrintLibraryWidget.cs" />
|
||||
<Compile Include="Queue\OptionsMenu\ExportToFolderProcess.cs" />
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
protected bool autoRotating = false;
|
||||
protected bool allowAutoRotate = false;
|
||||
|
||||
protected GuiWidget buttonRightPanelDisabledCover;
|
||||
|
||||
public MeshViewerWidget meshViewerWidget;
|
||||
|
||||
private EventHandler unregisterEvents;
|
||||
|
|
|
|||
|
|
@ -109,7 +109,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
private bool menuVisible = false;
|
||||
private PopupWidget popupWidget;
|
||||
|
||||
//private GuiWidget buttonView;
|
||||
public PopupButton()
|
||||
{
|
||||
}
|
||||
|
||||
public PopupButton(GuiWidget buttonView)
|
||||
{
|
||||
this.Margin = 3;
|
||||
|
|
@ -139,8 +142,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
public override void OnMouseUp(MouseEventArgs mouseEvent)
|
||||
{
|
||||
// HACK: Child controls seem to be interfering with this.MouseCaptured - this short term workaround ensure we get clicks but likely mean mouse down outside of the control will fire the popup
|
||||
bool mouseUpInBounds = this.PositionWithinLocalBounds(mouseEvent.X, mouseEvent.Y);
|
||||
|
||||
// Only show the popup if the menu was hidden as the mouse events started
|
||||
if ((buttonView.MouseCaptured || this.MouseCaptured)
|
||||
if ((mouseUpInBounds || buttonView?.MouseCaptured == true)
|
||||
&& !menuVisibileAtMouseDown)
|
||||
{
|
||||
ShowPopup();
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ of the authors and should not be interpreted as representing official policies,
|
|||
either expressed or implied, of the FreeBSD Project.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
|
|
@ -46,6 +45,7 @@ using MatterHackers.Agg.UI;
|
|||
using MatterHackers.Agg.VertexSource;
|
||||
using MatterHackers.DataConverters3D;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.ActionBar;
|
||||
using MatterHackers.MatterControl.CustomWidgets;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.MatterControl.Library;
|
||||
|
|
@ -57,8 +57,6 @@ using MatterHackers.PolygonMesh;
|
|||
using MatterHackers.RayTracer;
|
||||
using MatterHackers.RenderOpenGl;
|
||||
using MatterHackers.VectorMath;
|
||||
using MatterHackers.RayTracer.Traceable;
|
||||
using MatterHackers.MatterControl.ActionBar;
|
||||
|
||||
namespace MatterHackers.MatterControl.PartPreviewWindow
|
||||
{
|
||||
|
|
@ -273,8 +271,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
GuiWidget viewArea = new GuiWidget();
|
||||
viewArea.AnchorAll();
|
||||
{
|
||||
//viewControls3D.RegisterViewer(meshViewerWidget);
|
||||
|
||||
PutOemImageOnBed();
|
||||
|
||||
meshViewerWidget.AnchorAll();
|
||||
|
|
@ -447,64 +443,32 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
editToolBar.AddChild(doEdittingButtonsContainer);
|
||||
buttonBottomPanel.AddChild(editToolBar);
|
||||
|
||||
var extruderTemperatureWidget = new TemperatureWidgetExtruder()
|
||||
{
|
||||
VAnchor = VAnchor.ParentTop | VAnchor.FitToChildren | VAnchor.AbsolutePosition,
|
||||
HAnchor = HAnchor.ParentRight | HAnchor.FitToChildren,
|
||||
Visible = true,
|
||||
Margin = new BorderDouble(0, 0, 210, 5)
|
||||
};
|
||||
this.AddChild(extruderTemperatureWidget);
|
||||
|
||||
if (ActiveSliceSettings.Instance.GetValue<bool>(SettingsKey.has_heated_bed))
|
||||
{
|
||||
var bedTemperatureWidget = new TemperatureWidgetBed()
|
||||
{
|
||||
VAnchor = VAnchor.ParentTop | VAnchor.FitToChildren | VAnchor.AbsolutePosition,
|
||||
HAnchor = HAnchor.ParentRight | HAnchor.FitToChildren,
|
||||
Visible = true,
|
||||
Margin = new BorderDouble(0, 0, 150, 5)
|
||||
};
|
||||
this.AddChild(bedTemperatureWidget);
|
||||
}
|
||||
}
|
||||
|
||||
GuiWidget buttonRightPanelHolder = new GuiWidget()
|
||||
{
|
||||
HAnchor = HAnchor.FitToChildren,
|
||||
VAnchor = VAnchor.ParentBottomTop
|
||||
};
|
||||
buttonRightPanelHolder.Name = "buttonRightPanelHolder";
|
||||
centerPartPreviewAndControls.AddChild(buttonRightPanelHolder);
|
||||
|
||||
buttonRightPanelDisabledCover = new GuiWidget()
|
||||
{
|
||||
HAnchor = HAnchor.ParentLeftRight,
|
||||
VAnchor = VAnchor.ParentBottomTop
|
||||
};
|
||||
buttonRightPanelDisabledCover.BackgroundColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryBackgroundColor, 150);
|
||||
buttonRightPanelHolder.AddChild(buttonRightPanelDisabledCover);
|
||||
|
||||
LockEditControls();
|
||||
|
||||
GuiWidget leftRightSpacer = new GuiWidget();
|
||||
leftRightSpacer.HAnchor = HAnchor.ParentLeftRight;
|
||||
buttonBottomPanel.AddChild(leftRightSpacer);
|
||||
|
||||
if (windowType == WindowMode.StandAlone)
|
||||
{
|
||||
Button closeButton = smallMarginButtonFactory.Generate("Close".Localize());
|
||||
buttonBottomPanel.AddChild(closeButton);
|
||||
closeButton.Click += (sender, e) =>
|
||||
{
|
||||
CloseOnIdle();
|
||||
};
|
||||
}
|
||||
|
||||
mainContainerTopToBottom.AddChild(buttonBottomPanel);
|
||||
|
||||
this.AddChild(mainContainerTopToBottom);
|
||||
|
||||
var temperatureBar = new FlowLayoutWidget()
|
||||
{
|
||||
VAnchor = VAnchor.ParentTop | VAnchor.FitToChildren,
|
||||
HAnchor = HAnchor.ParentRight | HAnchor.FitToChildren,
|
||||
Margin = new BorderDouble(right: 165, top: 5)
|
||||
};
|
||||
|
||||
temperatureBar.AddChild(new TemperatureWidgetExtruder(ApplicationController.Instance.Theme.MenuButtonFactory)
|
||||
{
|
||||
Margin = new BorderDouble(right: 10)
|
||||
});
|
||||
|
||||
if (ActiveSliceSettings.Instance.GetValue<bool>(SettingsKey.has_heated_bed))
|
||||
{
|
||||
temperatureBar.AddChild(new TemperatureWidgetBed());
|
||||
}
|
||||
this.AddChild(temperatureBar);
|
||||
|
||||
this.AnchorAll();
|
||||
|
||||
meshViewerWidget.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Rotation;
|
||||
|
|
@ -2004,7 +1968,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
{
|
||||
viewIsInEditModePreLock = doEdittingButtonsContainer.Visible;
|
||||
doEdittingButtonsContainer.Visible = false;
|
||||
buttonRightPanelDisabledCover.Visible = true;
|
||||
if (viewControls3D.PartSelectVisible == true)
|
||||
{
|
||||
viewControls3D.PartSelectVisible = false;
|
||||
|
|
@ -2403,7 +2366,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
public void UnlockEditControls()
|
||||
{
|
||||
buttonRightPanelDisabledCover.Visible = false;
|
||||
processingProgressControl.Visible = false;
|
||||
|
||||
if (viewIsInEditModePreLock)
|
||||
|
|
|
|||
|
|
@ -1,59 +0,0 @@
|
|||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.CustomWidgets;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace MatterHackers.MatterControl.PrinterControls
|
||||
{
|
||||
public class TemperatureControls : ControlWidgetBase
|
||||
{
|
||||
public List<DisableableWidget> ExtruderWidgetContainers = new List<DisableableWidget>();
|
||||
public DisableableWidget BedTemperatureControlWidget;
|
||||
|
||||
public TemperatureControls()
|
||||
{
|
||||
AltGroupBox temperatureGroupBox = new AltGroupBox(new TextWidget("Temperature".Localize(), pointSize: 18, textColor: ActiveTheme.Instance.SecondaryAccentColor));
|
||||
temperatureGroupBox.Margin = new BorderDouble(0);
|
||||
|
||||
FlowLayoutWidget mainContainer = new FlowLayoutWidget(Agg.UI.FlowDirection.TopToBottom);
|
||||
mainContainer.HAnchor = HAnchor.ParentLeftRight;
|
||||
mainContainer.Margin = new BorderDouble(left: 0);
|
||||
|
||||
temperatureGroupBox.AddChild(mainContainer);
|
||||
RGBA_Bytes separatorLineColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryTextColor, 100);
|
||||
|
||||
int numberOfHeatedExtruders = ActiveSliceSettings.Instance.Helpers.NumberOfHotEnds();
|
||||
if (numberOfHeatedExtruders > 1)
|
||||
{
|
||||
for (int i = 0; i < numberOfHeatedExtruders; i++)
|
||||
{
|
||||
DisableableWidget extruderTemperatureControlWidget = new DisableableWidget();
|
||||
extruderTemperatureControlWidget.AddChild(new ExtruderTemperatureControlWidget(i));
|
||||
mainContainer.AddChild(extruderTemperatureControlWidget);
|
||||
mainContainer.AddChild(new HorizontalLine(50));
|
||||
ExtruderWidgetContainers.Add(extruderTemperatureControlWidget);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DisableableWidget extruderTemperatureControlWidget = new DisableableWidget();
|
||||
extruderTemperatureControlWidget.AddChild(new ExtruderTemperatureControlWidget());
|
||||
mainContainer.AddChild(extruderTemperatureControlWidget);
|
||||
mainContainer.AddChild(new HorizontalLine(50));
|
||||
ExtruderWidgetContainers.Add(extruderTemperatureControlWidget);
|
||||
}
|
||||
|
||||
BedTemperatureControlWidget = new DisableableWidget();
|
||||
BedTemperatureControlWidget.AddChild(new BedTemperatureControlWidget());
|
||||
|
||||
if (ActiveSliceSettings.Instance.GetValue<bool>(SettingsKey.has_heated_bed))
|
||||
{
|
||||
mainContainer.AddChild(BedTemperatureControlWidget);
|
||||
}
|
||||
|
||||
this.AddChild(temperatureGroupBox);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,238 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 2014, Lars Brubaker
|
||||
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.CustomWidgets;
|
||||
using MatterHackers.VectorMath;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MatterHackers.MatterControl
|
||||
{
|
||||
public class EditTemperaturePresetsWindow : SystemWindow
|
||||
{
|
||||
protected TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
|
||||
private EventHandler functionToCallOnSave;
|
||||
private List<GuiWidget> listWithValues = new List<GuiWidget>();
|
||||
|
||||
public EditTemperaturePresetsWindow(string windowTitle, string temperatureSettings, EventHandler functionToCallOnSave)
|
||||
: base(360, 300)
|
||||
{
|
||||
AlwaysOnTopOfMain = true;
|
||||
Title = LocalizedString.Get(windowTitle);
|
||||
|
||||
FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
topToBottom.AnchorAll();
|
||||
topToBottom.Padding = new BorderDouble(3, 0, 3, 5);
|
||||
|
||||
FlowLayoutWidget headerRow = new FlowLayoutWidget(FlowDirection.LeftToRight);
|
||||
headerRow.HAnchor = HAnchor.ParentLeftRight;
|
||||
headerRow.Margin = new BorderDouble(0, 3, 0, 0);
|
||||
headerRow.Padding = new BorderDouble(0, 3, 0, 3);
|
||||
|
||||
{
|
||||
string tempShortcutPresetLabel = "Temperature Shortcut Presets".Localize();
|
||||
string tempShortcutPresetLabelFull = string.Format("{0}:", tempShortcutPresetLabel);
|
||||
TextWidget elementHeader = new TextWidget(tempShortcutPresetLabelFull, pointSize: 14);
|
||||
elementHeader.TextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
elementHeader.HAnchor = HAnchor.ParentLeftRight;
|
||||
elementHeader.VAnchor = Agg.UI.VAnchor.ParentBottom;
|
||||
|
||||
headerRow.AddChild(elementHeader);
|
||||
}
|
||||
|
||||
topToBottom.AddChild(headerRow);
|
||||
|
||||
FlowLayoutWidget presetsFormContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
//ListBox printerListContainer = new ListBox();
|
||||
{
|
||||
presetsFormContainer.HAnchor = HAnchor.ParentLeftRight;
|
||||
presetsFormContainer.VAnchor = VAnchor.ParentBottomTop;
|
||||
presetsFormContainer.Padding = new BorderDouble(3);
|
||||
presetsFormContainer.BackgroundColor = ActiveTheme.Instance.SecondaryBackgroundColor;
|
||||
}
|
||||
|
||||
topToBottom.AddChild(presetsFormContainer);
|
||||
|
||||
this.functionToCallOnSave = functionToCallOnSave;
|
||||
BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
|
||||
|
||||
double oldHeight = textImageButtonFactory.FixedHeight;
|
||||
textImageButtonFactory.FixedHeight = 30 * GuiWidget.DeviceScale;
|
||||
|
||||
TextWidget tempTypeLabel = new TextWidget(windowTitle, textColor: ActiveTheme.Instance.PrimaryTextColor, pointSize: 10);
|
||||
tempTypeLabel.Margin = new BorderDouble(3);
|
||||
tempTypeLabel.HAnchor = HAnchor.ParentLeft;
|
||||
presetsFormContainer.AddChild(tempTypeLabel);
|
||||
|
||||
FlowLayoutWidget leftRightLabels = new FlowLayoutWidget();
|
||||
leftRightLabels.Padding = new BorderDouble(3, 6);
|
||||
leftRightLabels.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
|
||||
|
||||
GuiWidget hLabelSpacer = new GuiWidget();
|
||||
hLabelSpacer.HAnchor = HAnchor.ParentLeftRight;
|
||||
|
||||
GuiWidget labelLabelContainer = new GuiWidget();
|
||||
labelLabelContainer.Width = 66;
|
||||
labelLabelContainer.Height = 16;
|
||||
labelLabelContainer.Margin = new BorderDouble(3, 0);
|
||||
|
||||
string labelLabelTxt = "Label".Localize();
|
||||
TextWidget labelLabel = new TextWidget(string.Format(labelLabelTxt), textColor: ActiveTheme.Instance.PrimaryTextColor, pointSize: 10);
|
||||
labelLabel.HAnchor = HAnchor.ParentLeft;
|
||||
labelLabel.VAnchor = VAnchor.ParentCenter;
|
||||
|
||||
labelLabelContainer.AddChild(labelLabel);
|
||||
|
||||
GuiWidget tempLabelContainer = new GuiWidget();
|
||||
tempLabelContainer.Width = 66;
|
||||
tempLabelContainer.Height = 16;
|
||||
tempLabelContainer.Margin = new BorderDouble(3, 0);
|
||||
|
||||
TextWidget tempLabel = new TextWidget(string.Format("Temp (C)"), textColor: ActiveTheme.Instance.PrimaryTextColor, pointSize: 10);
|
||||
tempLabel.HAnchor = HAnchor.ParentLeft;
|
||||
tempLabel.VAnchor = VAnchor.ParentCenter;
|
||||
|
||||
tempLabelContainer.AddChild(tempLabel);
|
||||
|
||||
leftRightLabels.AddChild(hLabelSpacer);
|
||||
leftRightLabels.AddChild(labelLabelContainer);
|
||||
leftRightLabels.AddChild(tempLabelContainer);
|
||||
|
||||
presetsFormContainer.AddChild(leftRightLabels);
|
||||
|
||||
// put in the temperature edit controls
|
||||
string[] settingsArray = temperatureSettings.Split(',');
|
||||
int preset_count = 1;
|
||||
int tab_index = 0;
|
||||
for (int i = 0; i < settingsArray.Count() - 1; i += 2)
|
||||
{
|
||||
FlowLayoutWidget leftRightEdit = new FlowLayoutWidget();
|
||||
leftRightEdit.Padding = new BorderDouble(3);
|
||||
leftRightEdit.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
|
||||
string presetLabelTxt = "Preset".Localize();
|
||||
TextWidget label = new TextWidget(string.Format("{1} {0}", preset_count, presetLabelTxt), textColor: ActiveTheme.Instance.PrimaryTextColor);
|
||||
label.VAnchor = VAnchor.ParentCenter;
|
||||
leftRightEdit.AddChild(label);
|
||||
|
||||
leftRightEdit.AddChild(new HorizontalSpacer());
|
||||
|
||||
MHTextEditWidget typeEdit = new MHTextEditWidget(settingsArray[i], pixelWidth: 60, tabIndex: tab_index++);
|
||||
|
||||
typeEdit.Margin = new BorderDouble(3);
|
||||
leftRightEdit.AddChild(typeEdit);
|
||||
listWithValues.Add(typeEdit);
|
||||
|
||||
double temperatureValue = 0;
|
||||
double.TryParse(settingsArray[i + 1], out temperatureValue);
|
||||
MHNumberEdit valueEdit = new MHNumberEdit(temperatureValue, minValue: 0, pixelWidth: 60, tabIndex: tab_index++);
|
||||
valueEdit.Margin = new BorderDouble(3);
|
||||
leftRightEdit.AddChild(valueEdit);
|
||||
listWithValues.Add(valueEdit);
|
||||
|
||||
//leftRightEdit.AddChild(textImageButtonFactory.Generate("Delete".Localize()));
|
||||
presetsFormContainer.AddChild(leftRightEdit);
|
||||
preset_count += 1;
|
||||
}
|
||||
|
||||
{
|
||||
FlowLayoutWidget leftRightEdit = new FlowLayoutWidget();
|
||||
leftRightEdit.Padding = new BorderDouble(3);
|
||||
leftRightEdit.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
|
||||
|
||||
TextWidget maxWidgetLabel = new TextWidget("Max Temp".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
|
||||
maxWidgetLabel.VAnchor = VAnchor.ParentCenter;
|
||||
leftRightEdit.AddChild(maxWidgetLabel);
|
||||
leftRightEdit.AddChild(new HorizontalSpacer());
|
||||
|
||||
double maxTemperature = 0;
|
||||
double.TryParse(settingsArray[settingsArray.Count() - 1], out maxTemperature);
|
||||
MHNumberEdit valueEdit = new MHNumberEdit(maxTemperature, minValue: 0, pixelWidth: 60, tabIndex: tab_index);
|
||||
valueEdit.Margin = new BorderDouble(3);
|
||||
leftRightEdit.AddChild(valueEdit);
|
||||
listWithValues.Add(valueEdit);
|
||||
|
||||
presetsFormContainer.AddChild(leftRightEdit);
|
||||
}
|
||||
|
||||
textImageButtonFactory.FixedHeight = oldHeight;
|
||||
|
||||
ShowAsSystemWindow();
|
||||
MinimumSize = new Vector2(360, 300);
|
||||
|
||||
Button savePresetsButton = textImageButtonFactory.Generate("Save".Localize());
|
||||
savePresetsButton.Click += save_Click;
|
||||
|
||||
Button cancelPresetsButton = textImageButtonFactory.Generate("Cancel".Localize());
|
||||
cancelPresetsButton.Click += (sender, e) => { CloseOnIdle(); };
|
||||
|
||||
FlowLayoutWidget buttonRow = new FlowLayoutWidget();
|
||||
buttonRow.HAnchor = HAnchor.ParentLeftRight;
|
||||
buttonRow.Padding = new BorderDouble(0, 3);
|
||||
|
||||
GuiWidget hButtonSpacer = new GuiWidget();
|
||||
hButtonSpacer.HAnchor = HAnchor.ParentLeftRight;
|
||||
|
||||
buttonRow.AddChild(savePresetsButton);
|
||||
buttonRow.AddChild(hButtonSpacer);
|
||||
buttonRow.AddChild(cancelPresetsButton);
|
||||
|
||||
topToBottom.AddChild(buttonRow);
|
||||
|
||||
AddChild(topToBottom);
|
||||
}
|
||||
|
||||
private void save_Click(object sender, EventArgs mouseEvent)
|
||||
{
|
||||
UiThread.RunOnIdle(save_OnIdle);
|
||||
}
|
||||
|
||||
private void save_OnIdle()
|
||||
{
|
||||
bool first = true;
|
||||
StringBuilder settingString = new StringBuilder();
|
||||
foreach (GuiWidget valueToAdd in listWithValues)
|
||||
{
|
||||
if (!first)
|
||||
{
|
||||
settingString.Append(",");
|
||||
}
|
||||
|
||||
settingString.Append(valueToAdd.Text);
|
||||
first = false;
|
||||
}
|
||||
functionToCallOnSave(this, new StringEventArgs(settingString.ToString()));
|
||||
CloseOnIdle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -81,8 +81,6 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
private MovementControls movementControlsContainer;
|
||||
|
||||
private TemperatureControls temperatureControlsContainer;
|
||||
|
||||
private TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
|
||||
|
||||
private DisableableWidget tuningAdjustmentControlsContainer;
|
||||
|
|
@ -107,7 +105,6 @@ namespace MatterHackers.MatterControl
|
|||
};
|
||||
AddActionControls(controlsTopToBottomLayout);
|
||||
|
||||
AddTemperatureControls(controlsTopToBottomLayout);
|
||||
AddMovementControls(controlsTopToBottomLayout);
|
||||
|
||||
if (!ActiveSliceSettings.Instance.GetValue<bool>(SettingsKey.has_hardware_leveling))
|
||||
|
|
@ -185,12 +182,6 @@ namespace MatterHackers.MatterControl
|
|||
controlsTopToBottomLayout.AddChild(movementControlsContainer);
|
||||
}
|
||||
|
||||
private void AddTemperatureControls(FlowLayoutWidget controlsTopToBottomLayout)
|
||||
{
|
||||
temperatureControlsContainer = new TemperatureControls();
|
||||
controlsTopToBottomLayout.AddChild(temperatureControlsContainer);
|
||||
}
|
||||
|
||||
private void onPrinterStatusChanged(object sender, EventArgs e)
|
||||
{
|
||||
SetVisibleControls();
|
||||
|
|
@ -201,12 +192,6 @@ namespace MatterHackers.MatterControl
|
|||
{
|
||||
if (!ActiveSliceSettings.Instance.PrinterSelected)
|
||||
{
|
||||
// no printer selected
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
macroControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
|
|
@ -222,11 +207,6 @@ namespace MatterHackers.MatterControl
|
|||
case CommunicationStates.Disconnected:
|
||||
case CommunicationStates.AttemptingToConnect:
|
||||
case CommunicationStates.FailedToConnect:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
macroControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
|
|
@ -243,11 +223,6 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
case CommunicationStates.FinishedPrint:
|
||||
case CommunicationStates.Connected:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
macroControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
|
|
@ -262,11 +237,6 @@ namespace MatterHackers.MatterControl
|
|||
break;
|
||||
|
||||
case CommunicationStates.PrintingFromSd:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
macroControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
|
|
@ -282,11 +252,6 @@ namespace MatterHackers.MatterControl
|
|||
case DetailedPrintingState.HeatingBed:
|
||||
case DetailedPrintingState.HeatingExtruder:
|
||||
case DetailedPrintingState.Printing:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
macroControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
actionControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
|
|
@ -306,11 +271,6 @@ namespace MatterHackers.MatterControl
|
|||
break;
|
||||
|
||||
case CommunicationStates.Paused:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
macroControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
|
|
@ -336,7 +296,6 @@ namespace MatterHackers.MatterControl
|
|||
{
|
||||
event EventHandler unregisterEvents;
|
||||
|
||||
TemperatureControls temperatureControlsContainer;
|
||||
MovementControls movementControlsContainer;
|
||||
DisableableWidget fanControlsContainer;
|
||||
DisableableWidget tuningAdjustmentControlsContainer;
|
||||
|
|
@ -385,22 +344,6 @@ namespace MatterHackers.MatterControl
|
|||
}
|
||||
}
|
||||
|
||||
// add temperature tab
|
||||
{
|
||||
GuiWidget temperatureContainerContainer = new GuiWidget();
|
||||
temperatureContainerContainer.Padding = new BorderDouble(6);
|
||||
temperatureContainerContainer.AnchorAll();
|
||||
|
||||
temperatureControlsContainer = new TemperatureControls();
|
||||
temperatureControlsContainer.VAnchor |= VAnchor.ParentTop;
|
||||
|
||||
temperatureContainerContainer.AddChild(temperatureControlsContainer);
|
||||
|
||||
TabPage temperatureTabPage = new TabPage(temperatureContainerContainer, "Temperature".Localize().ToUpper());
|
||||
this.AddTab(new SimpleTextTabWidget(temperatureTabPage, "Temperature Tab", TabTextSize,
|
||||
ActiveTheme.Instance.SecondaryAccentColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
|
||||
}
|
||||
|
||||
// add movement tab
|
||||
{
|
||||
GuiWidget movementContainerContainer = new GuiWidget();
|
||||
|
|
@ -499,12 +442,6 @@ namespace MatterHackers.MatterControl
|
|||
{
|
||||
if (ActiveSliceSettings.Instance == null)
|
||||
{
|
||||
// no printer selected
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
tuningAdjustmentControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
|
|
@ -521,11 +458,6 @@ namespace MatterHackers.MatterControl
|
|||
case CommunicationStates.Disconnected:
|
||||
case CommunicationStates.AttemptingToConnect:
|
||||
case CommunicationStates.FailedToConnect:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
tuningAdjustmentControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
|
||||
|
|
@ -542,11 +474,6 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
case CommunicationStates.FinishedPrint:
|
||||
case CommunicationStates.Connected:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
macroControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
|
|
@ -562,11 +489,6 @@ namespace MatterHackers.MatterControl
|
|||
break;
|
||||
|
||||
case CommunicationStates.PrintingFromSd:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
macroControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
|
|
@ -582,11 +504,6 @@ namespace MatterHackers.MatterControl
|
|||
case DetailedPrintingState.HeatingBed:
|
||||
case DetailedPrintingState.HeatingExtruder:
|
||||
case DetailedPrintingState.Printing:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
tuningAdjustmentControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
macroControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
|
||||
|
|
@ -608,11 +525,6 @@ namespace MatterHackers.MatterControl
|
|||
break;
|
||||
|
||||
case CommunicationStates.Paused:
|
||||
foreach (DisableableWidget extruderTemperatureControlWidget in temperatureControlsContainer.ExtruderWidgetContainers)
|
||||
{
|
||||
extruderTemperatureControlWidget?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
}
|
||||
temperatureControlsContainer?.BedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
movementControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
fanControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
tuningAdjustmentControlsContainer?.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
|
||||
|
|
|
|||
|
|
@ -1,617 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 2014, Lars Brubaker
|
||||
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.Font;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.CustomWidgets;
|
||||
using MatterHackers.MatterControl.PrinterCommunication;
|
||||
using MatterHackers.MatterControl.SlicerConfiguration;
|
||||
using MatterHackers.VectorMath;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace MatterHackers.MatterControl
|
||||
{
|
||||
public abstract class TemperatureControlBase : FlowLayoutWidget
|
||||
{
|
||||
protected TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
|
||||
protected TextWidget actualTempIndicator;
|
||||
protected FlowLayoutWidget presetButtonsContainer;
|
||||
|
||||
protected EditableNumberDisplay targetTemperatureDisplay;
|
||||
|
||||
protected string label;
|
||||
protected string editWindowLabel;
|
||||
protected int extruderIndex0Based = 0;
|
||||
|
||||
protected TemperatureControlBase(int extruderIndex0Based, string label, string editWindowLabel)
|
||||
: base(FlowDirection.TopToBottom)
|
||||
{
|
||||
this.extruderIndex0Based = extruderIndex0Based;
|
||||
this.label = label;
|
||||
this.editWindowLabel = editWindowLabel;
|
||||
SetDisplayAttributes();
|
||||
}
|
||||
|
||||
protected abstract double GetActualTemperature();
|
||||
|
||||
protected abstract double GetTargetTemperature();
|
||||
|
||||
protected abstract void SetTargetTemperature(double targetTemp);
|
||||
|
||||
protected abstract string GetTemperaturePresets();
|
||||
|
||||
protected abstract double GetPreheatTemperature();
|
||||
|
||||
protected abstract void SetTemperaturePresets(object sender, EventArgs stringEvent);
|
||||
|
||||
protected abstract string HelpText { get; }
|
||||
|
||||
private void SetDisplayAttributes()
|
||||
{
|
||||
this.textImageButtonFactory.normalFillColor = RGBA_Bytes.Transparent;
|
||||
|
||||
this.textImageButtonFactory.FixedWidth = 38 * GuiWidget.DeviceScale;
|
||||
this.textImageButtonFactory.FixedHeight = 20 * GuiWidget.DeviceScale;
|
||||
this.textImageButtonFactory.fontSize = 10;
|
||||
this.textImageButtonFactory.borderWidth = 1;
|
||||
this.textImageButtonFactory.normalBorderColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryTextColor, 200);
|
||||
this.textImageButtonFactory.hoverBorderColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryTextColor, 200);
|
||||
|
||||
this.textImageButtonFactory.disabledTextColor = RGBA_Bytes.Gray;
|
||||
this.textImageButtonFactory.hoverTextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
this.textImageButtonFactory.normalTextColor = ActiveTheme.Instance.SecondaryTextColor;
|
||||
this.textImageButtonFactory.pressedTextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
|
||||
this.HAnchor = HAnchor.ParentLeftRight;
|
||||
}
|
||||
|
||||
public override RectangleDouble LocalBounds
|
||||
{
|
||||
get
|
||||
{
|
||||
return base.LocalBounds;
|
||||
}
|
||||
set
|
||||
{
|
||||
base.LocalBounds = value;
|
||||
}
|
||||
}
|
||||
|
||||
protected FlowLayoutWidget tempEditContainer;
|
||||
private EditTemperaturePresetsWindow editSettingsWindow;
|
||||
|
||||
protected void AddChildElements()
|
||||
{
|
||||
Button editButton;
|
||||
AltGroupBox groupBox = new AltGroupBox(textImageButtonFactory.GenerateGroupBoxLabelWithEdit(label, out editButton));
|
||||
editButton.Click += (sender, e) =>
|
||||
{
|
||||
if (editSettingsWindow == null)
|
||||
{
|
||||
editSettingsWindow = new EditTemperaturePresetsWindow(editWindowLabel, GetTemperaturePresets(), SetTemperaturePresets);
|
||||
editSettingsWindow.Closed += (popupWindowSender, popupWindowSenderE) => { editSettingsWindow = null; };
|
||||
}
|
||||
else
|
||||
{
|
||||
editSettingsWindow.BringToFront();
|
||||
}
|
||||
};
|
||||
|
||||
groupBox.TextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
groupBox.BorderColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
groupBox.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
|
||||
// make sure the client area will get smaller when the contents get smaller
|
||||
groupBox.ClientArea.VAnchor = Agg.UI.VAnchor.FitToChildren;
|
||||
|
||||
FlowLayoutWidget controlRow = new FlowLayoutWidget(Agg.UI.FlowDirection.TopToBottom);
|
||||
controlRow.Margin = new BorderDouble(top: 2);
|
||||
controlRow.HAnchor |= HAnchor.ParentLeftRight;
|
||||
{
|
||||
// put in the temperature slider and preset buttons
|
||||
|
||||
tempEditContainer = new FlowLayoutWidget(Agg.UI.FlowDirection.TopToBottom);
|
||||
|
||||
{
|
||||
GuiWidget sliderLabels = GetSliderLabels();
|
||||
|
||||
tempEditContainer.HAnchor = HAnchor.ParentLeftRight;
|
||||
tempEditContainer.AddChild(sliderLabels);
|
||||
tempEditContainer.Visible = false;
|
||||
}
|
||||
GuiWidget spacer = new GuiWidget(0, 10);
|
||||
spacer.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
|
||||
|
||||
// put in the temperature indicators
|
||||
{
|
||||
FlowLayoutWidget temperatureIndicator = new FlowLayoutWidget();
|
||||
temperatureIndicator.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
|
||||
temperatureIndicator.Margin = new BorderDouble(bottom: 0);
|
||||
temperatureIndicator.Padding = new BorderDouble(0, 3);
|
||||
|
||||
// put in the actual temperature controls
|
||||
{
|
||||
var extruderActualIndicator = new FlowLayoutWidget(Agg.UI.FlowDirection.LeftToRight);
|
||||
|
||||
extruderActualIndicator.Margin = new BorderDouble(3, 0);
|
||||
TextWidget extruderActualLabel = new TextWidget("Actual".Localize() + ": ", pointSize: 10);
|
||||
extruderActualLabel.TextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
extruderActualLabel.VAnchor = VAnchor.ParentCenter;
|
||||
|
||||
actualTempIndicator = new TextWidget(string.Format("{0:0.0}°C", GetActualTemperature()), pointSize: 12);
|
||||
actualTempIndicator.AutoExpandBoundsToText = true;
|
||||
actualTempIndicator.TextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
actualTempIndicator.VAnchor = VAnchor.ParentCenter;
|
||||
|
||||
extruderActualIndicator.AddChild(extruderActualLabel);
|
||||
extruderActualIndicator.AddChild(actualTempIndicator);
|
||||
|
||||
var extruderTargetLabel = new TextWidget("Target".Localize() + ": ", pointSize: 10);
|
||||
extruderTargetLabel.Margin = new BorderDouble(left: 10);
|
||||
extruderTargetLabel.TextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
extruderTargetLabel.VAnchor = VAnchor.ParentCenter;
|
||||
|
||||
extruderActualIndicator.AddChild(extruderTargetLabel);
|
||||
temperatureIndicator.AddChild(extruderActualIndicator);
|
||||
}
|
||||
|
||||
// put in the target temperature controls
|
||||
temperatureIndicator.AddChild(GetTargetTemperatureDisplay());
|
||||
|
||||
FlowLayoutWidget helperTextWidget = GetHelpTextWidget();
|
||||
|
||||
LinkButtonFactory linkFactory = new LinkButtonFactory();
|
||||
linkFactory.textColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
linkFactory.fontSize = 10;
|
||||
|
||||
Button helpTextLink = linkFactory.Generate("?");
|
||||
|
||||
helpTextLink.Click += (sender, e) =>
|
||||
{
|
||||
helperTextWidget.Visible = !helperTextWidget.Visible;
|
||||
};
|
||||
|
||||
this.presetButtonsContainer = GetPresetsContainer();
|
||||
temperatureIndicator.AddChild(new HorizontalSpacer());
|
||||
temperatureIndicator.AddChild(presetButtonsContainer);
|
||||
|
||||
controlRow.AddChild(temperatureIndicator);
|
||||
}
|
||||
}
|
||||
|
||||
groupBox.AddChild(controlRow);
|
||||
|
||||
this.AddChild(groupBox);
|
||||
}
|
||||
|
||||
private FlowLayoutWidget GetPresetsContainer()
|
||||
{
|
||||
FlowLayoutWidget presetsContainer = new FlowLayoutWidget();
|
||||
presetsContainer.Margin = new BorderDouble(3, 0);
|
||||
|
||||
string presetsLabelTxt = "Presets".Localize();
|
||||
string presetsLabelTxtFull = string.Format("{0}: ", presetsLabelTxt);
|
||||
|
||||
TextWidget presetsLabel = new TextWidget(presetsLabelTxtFull, pointSize: 10);
|
||||
presetsLabel.Margin = new BorderDouble(right: 5);
|
||||
presetsLabel.TextColor = ActiveTheme.Instance.PrimaryTextColor;
|
||||
presetsLabel.VAnchor = VAnchor.ParentCenter;
|
||||
//presetsContainer.AddChild(presetsLabel);
|
||||
|
||||
SortedDictionary<double, string> labels = GetTemperaturePresetLabels();
|
||||
|
||||
foreach (KeyValuePair<double, string> keyValue in labels)
|
||||
{
|
||||
Button tempButton = textImageButtonFactory.Generate(keyValue.Value);
|
||||
tempButton.Margin = new BorderDouble(right: 5);
|
||||
presetsContainer.AddChild(tempButton);
|
||||
|
||||
// We push the value into a temp double so that the function will not point to a shared keyValue instance.
|
||||
double temp = keyValue.Key;
|
||||
tempButton.Click += (sender, e) =>
|
||||
{
|
||||
UiThread.RunOnIdle(() =>
|
||||
{
|
||||
SetTargetTemperature(temp);
|
||||
tempEditContainer.Visible = false;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
this.textImageButtonFactory.FixedWidth = 76 * GuiWidget.DeviceScale;
|
||||
{
|
||||
Button tempButton = textImageButtonFactory.Generate("Preheat".Localize().ToUpper());
|
||||
tempButton.Margin = new BorderDouble(right: 5);
|
||||
presetsContainer.AddChild(tempButton);
|
||||
|
||||
// We push the value into a temp double so that the function will not point to a shared keyValue instance.
|
||||
tempButton.Click += (sender, e) =>
|
||||
{
|
||||
UiThread.RunOnIdle(() =>
|
||||
{
|
||||
SetTargetTemperature(GetPreheatTemperature());
|
||||
tempEditContainer.Visible = false;
|
||||
});
|
||||
};
|
||||
}
|
||||
this.textImageButtonFactory.FixedWidth = 38 * GuiWidget.DeviceScale;
|
||||
|
||||
return presetsContainer;
|
||||
}
|
||||
|
||||
private EditableNumberDisplay GetTargetTemperatureDisplay()
|
||||
{
|
||||
targetTemperatureDisplay = new EditableNumberDisplay(textImageButtonFactory, string.Format("{0:0.0}°C", GetTargetTemperature()), string.Format("{0:0.0}°C", 240.2));
|
||||
targetTemperatureDisplay.EditEnabled += (sender, e) =>
|
||||
{
|
||||
tempEditContainer.Visible = true;
|
||||
};
|
||||
|
||||
targetTemperatureDisplay.EditComplete += (sender, e) =>
|
||||
{
|
||||
SetTargetTemperature(targetTemperatureDisplay.GetValue());
|
||||
};
|
||||
return targetTemperatureDisplay;
|
||||
}
|
||||
|
||||
private FlowLayoutWidget GetHelpTextWidget()
|
||||
{
|
||||
FlowLayoutWidget allText = new FlowLayoutWidget(FlowDirection.TopToBottom);
|
||||
double textRegionWidth = 260 * GuiWidget.DeviceScale;
|
||||
allText.Margin = new BorderDouble(3);
|
||||
allText.Padding = new BorderDouble(3);
|
||||
allText.HAnchor = HAnchor.ParentLeftRight;
|
||||
allText.BackgroundColor = ActiveTheme.Instance.TransparentDarkOverlay;
|
||||
|
||||
double helpPointSize = 10;
|
||||
EnglishTextWrapping wrapper = new EnglishTextWrapping(helpPointSize);
|
||||
List<string> wrappedText = wrapper.WrapText(HelpText, textRegionWidth - allText.Padding.Width);
|
||||
foreach (string line in wrappedText)
|
||||
{
|
||||
GuiWidget helpWidget = new TextWidget(line, pointSize: helpPointSize, textColor: RGBA_Bytes.White);
|
||||
allText.AddChild(helpWidget);
|
||||
}
|
||||
|
||||
allText.MinimumSize = new Vector2(textRegionWidth, allText.MinimumSize.y);
|
||||
allText.Visible = false;
|
||||
return allText;
|
||||
}
|
||||
|
||||
protected SortedDictionary<double, string> GetTemperaturePresetLabels()
|
||||
{
|
||||
string sliderLabelDefinitions = GetTemperaturePresets();
|
||||
|
||||
SortedDictionary<double, string> labels = new SortedDictionary<double, string>() { };
|
||||
labels.Add(0.0, "OFF");
|
||||
|
||||
string[] labelItems = sliderLabelDefinitions.Split(',');
|
||||
for (int i = 0; i < labelItems.Length / 2; i++)
|
||||
{
|
||||
string name = labelItems[i * 2];
|
||||
double temp;
|
||||
double.TryParse(labelItems[i * 2 + 1], out temp);
|
||||
|
||||
//Ignore temp values that already exits
|
||||
if (temp > 0 && !labels.ContainsKey(temp))
|
||||
{
|
||||
labels.Add(temp, name);
|
||||
}
|
||||
}
|
||||
|
||||
return labels;
|
||||
}
|
||||
|
||||
protected GuiWidget GetSliderLabels()
|
||||
{
|
||||
GuiWidget sliderLabels = new GuiWidget();
|
||||
sliderLabels.HAnchor = HAnchor.ParentLeftRight;
|
||||
sliderLabels.Height = 20 * GuiWidget.DeviceScale;
|
||||
{
|
||||
double buttonOffset = -10 * GuiWidget.DeviceScale;
|
||||
var offPosition = buttonOffset;
|
||||
|
||||
SortedDictionary<double, string> labels = GetTemperaturePresetLabels();
|
||||
|
||||
bool firstElement = true;
|
||||
double minButtonPosition = 0;
|
||||
foreach (KeyValuePair<double, string> keyValue in labels)
|
||||
{
|
||||
if (firstElement)
|
||||
{
|
||||
minButtonPosition = buttonOffset;
|
||||
firstElement = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
double wantedButtonPosition = buttonOffset;
|
||||
minButtonPosition = Math.Max(minButtonPosition + textImageButtonFactory.FixedWidth + 3, wantedButtonPosition);
|
||||
}
|
||||
Button tempButton = textImageButtonFactory.Generate(keyValue.Value);
|
||||
tempButton.OriginRelativeParent = new Vector2(minButtonPosition, 0);
|
||||
|
||||
sliderLabels.AddChild(tempButton);
|
||||
|
||||
// We push the value into a temp double so that the function will not point to a shared keyValue instance.
|
||||
double temp = keyValue.Key;
|
||||
tempButton.Click += (sender, e) =>
|
||||
{
|
||||
SetTargetTemperature(temp);
|
||||
tempEditContainer.Visible = false;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
sliderLabels.HAnchor = HAnchor.FitToChildren;
|
||||
sliderLabels.VAnchor = VAnchor.FitToChildren;
|
||||
sliderLabels.MinimumSize = new Vector2(sliderLabels.Width, sliderLabels.Height);
|
||||
return sliderLabels;
|
||||
}
|
||||
|
||||
private double MaxTemp
|
||||
{
|
||||
get
|
||||
{
|
||||
string presets = GetTemperaturePresets();
|
||||
string[] list = presets.Split(',');
|
||||
double max = 0;
|
||||
foreach (string item in list)
|
||||
{
|
||||
double value = 0;
|
||||
double.TryParse(item, out value);
|
||||
max = Math.Max(max, value);
|
||||
}
|
||||
return max;
|
||||
}
|
||||
}
|
||||
|
||||
protected void onTemperatureRead(Object sender, EventArgs e)
|
||||
{
|
||||
TemperatureEventArgs tempArgs = e as TemperatureEventArgs;
|
||||
if (tempArgs != null && tempArgs.Index0Based == extruderIndex0Based)
|
||||
{
|
||||
actualTempIndicator.Text = string.Format("{0:0.0}°C", tempArgs.Temperature);
|
||||
}
|
||||
}
|
||||
|
||||
protected void ExtruderTemperatureSet(Object sender, EventArgs e)
|
||||
{
|
||||
TemperatureEventArgs tempArgs = e as TemperatureEventArgs;
|
||||
if (tempArgs != null && tempArgs.Index0Based == extruderIndex0Based)
|
||||
{
|
||||
string displayString = string.Format("{0:0.0}°C", tempArgs.Temperature);
|
||||
targetTemperatureDisplay.SetDisplayString(displayString);
|
||||
}
|
||||
}
|
||||
|
||||
protected void BedTemperatureSet(Object sender, EventArgs e)
|
||||
{
|
||||
TemperatureEventArgs tempArgs = e as TemperatureEventArgs;
|
||||
if (tempArgs != null)
|
||||
{
|
||||
string displayString = string.Format("{0:0.0}°C", tempArgs.Temperature);
|
||||
targetTemperatureDisplay.SetDisplayString(displayString);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ExtruderTemperatureControlWidget : TemperatureControlBase
|
||||
{
|
||||
public ExtruderTemperatureControlWidget()
|
||||
: base(0, "Extruder Temperature".Localize(), "Extruder Temperature Settings".Localize())
|
||||
{
|
||||
AddChildElements();
|
||||
AddHandlers();
|
||||
}
|
||||
|
||||
public ExtruderTemperatureControlWidget(int extruderIndex0Based)
|
||||
: base(extruderIndex0Based, string.Format("{0} {1}", "Extruder Temperature".Localize(), extruderIndex0Based + 1), "Extruder Temperature Settings".Localize())
|
||||
{
|
||||
AddChildElements();
|
||||
AddHandlers();
|
||||
}
|
||||
|
||||
override protected string HelpText
|
||||
{
|
||||
get { return "Override the current extruder temperature. While printing, the extruder temperature is normally determined by the 'Slice Settings'."; }
|
||||
}
|
||||
|
||||
private EventHandler unregisterEvents;
|
||||
|
||||
private void AddHandlers()
|
||||
{
|
||||
PrinterConnection.Instance.ExtruderTemperatureRead.RegisterEvent(onTemperatureRead, ref unregisterEvents);
|
||||
PrinterConnection.Instance.ExtruderTemperatureSet.RegisterEvent(ExtruderTemperatureSet, ref unregisterEvents);
|
||||
}
|
||||
|
||||
public override void OnClosed(ClosedEventArgs e)
|
||||
{
|
||||
unregisterEvents.Invoke(this, null);
|
||||
base.OnClosed(e);
|
||||
}
|
||||
|
||||
protected override string GetTemperaturePresets()
|
||||
{
|
||||
string default_presets = ",0,,0,,0,250";
|
||||
|
||||
string presets;
|
||||
string presetKey = string.Format("Extruder{0}PresetTemps", extruderIndex0Based + 1);
|
||||
if (UserSettings.Instance.get(presetKey) == null)
|
||||
{
|
||||
UserSettings.Instance.set(presetKey, default_presets);
|
||||
}
|
||||
presets = UserSettings.Instance.get(presetKey);
|
||||
return presets;
|
||||
}
|
||||
|
||||
protected override void SetTemperaturePresets(object seder, EventArgs e)
|
||||
{
|
||||
StringEventArgs stringEvent = e as StringEventArgs;
|
||||
if (stringEvent != null && stringEvent.Data != null)
|
||||
{
|
||||
UserSettings.Instance.set(string.Format("Extruder{0}PresetTemps", extruderIndex0Based + 1), stringEvent.Data);
|
||||
ApplicationController.Instance.ReloadAdvancedControlsPanel();
|
||||
}
|
||||
}
|
||||
|
||||
protected override double GetPreheatTemperature()
|
||||
{
|
||||
return ActiveSliceSettings.Instance.Helpers.ExtruderTemperature(extruderIndex0Based);
|
||||
}
|
||||
|
||||
protected override double GetTargetTemperature()
|
||||
{
|
||||
return PrinterConnection.Instance.GetTargetExtruderTemperature(extruderIndex0Based);
|
||||
}
|
||||
|
||||
protected override double GetActualTemperature()
|
||||
{
|
||||
return PrinterConnection.Instance.GetActualExtruderTemperature(extruderIndex0Based);
|
||||
}
|
||||
|
||||
protected override void SetTargetTemperature(double targetTemp)
|
||||
{
|
||||
UiThread.RunOnIdle(() =>
|
||||
{
|
||||
double goalTemp = (int)(targetTemp + .5);
|
||||
if (PrinterConnection.Instance.PrinterIsPrinting
|
||||
&& PrinterConnection.Instance.PrintingState == DetailedPrintingState.HeatingExtruder
|
||||
&& goalTemp != PrinterConnection.Instance.GetTargetExtruderTemperature(extruderIndex0Based))
|
||||
{
|
||||
string sliceSettingsNote = "Note: Slice Settings are applied before the print actually starts. Changes while printing will not effect the active print.";
|
||||
string message = string.Format("The extruder is currently heating and its target temperature cannot be changed until it reaches {0}°C.\n\nYou can set the starting extruder temperature in 'Slice Settings' -> 'Filament'.\n\n{1}", PrinterConnection.Instance.GetTargetExtruderTemperature(extruderIndex0Based), sliceSettingsNote);
|
||||
StyledMessageBox.ShowMessageBox(null, message, "Waiting For Extruder To Heat");
|
||||
}
|
||||
else
|
||||
{
|
||||
PrinterConnection.Instance.SetTargetExtruderTemperature(extruderIndex0Based, (int)(targetTemp + .5));
|
||||
string displayString = string.Format("{0:0.0}°C", PrinterConnection.Instance.GetTargetExtruderTemperature(extruderIndex0Based));
|
||||
targetTemperatureDisplay.SetDisplayString(displayString);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public class BedTemperatureControlWidget : TemperatureControlBase
|
||||
{
|
||||
public BedTemperatureControlWidget()
|
||||
: base(0, "Bed Temperature".Localize(), "Bed Temperature Settings".Localize())
|
||||
{
|
||||
AddChildElements();
|
||||
AddHandlers();
|
||||
this.Name = "Bed Temperature Controls Widget";
|
||||
}
|
||||
|
||||
override protected string HelpText
|
||||
{
|
||||
get { return "Override the current bed temperature. While printing, the bed temperature is normally determined by the 'Slice Settings'."; }
|
||||
}
|
||||
|
||||
private EventHandler unregisterEvents;
|
||||
|
||||
private void AddHandlers()
|
||||
{
|
||||
PrinterConnection.Instance.BedTemperatureRead.RegisterEvent(onTemperatureRead, ref unregisterEvents);
|
||||
PrinterConnection.Instance.BedTemperatureSet.RegisterEvent(BedTemperatureSet, ref unregisterEvents);
|
||||
}
|
||||
|
||||
public override void OnClosed(ClosedEventArgs e)
|
||||
{
|
||||
if (unregisterEvents != null)
|
||||
{
|
||||
unregisterEvents(this, null);
|
||||
}
|
||||
base.OnClosed(e);
|
||||
}
|
||||
|
||||
private void onOffButtonClicked(object sender, EventArgs e)
|
||||
{
|
||||
SetTargetTemperature(0);
|
||||
}
|
||||
|
||||
protected override string GetTemperaturePresets()
|
||||
{
|
||||
string default_presets = ",0,,0,,0,150";
|
||||
string presets;
|
||||
|
||||
if (UserSettings.Instance.get("BedPresetTemps") == null)
|
||||
{
|
||||
UserSettings.Instance.set("BedPresetTemps", default_presets);
|
||||
}
|
||||
presets = UserSettings.Instance.get("BedPresetTemps");
|
||||
|
||||
return presets;
|
||||
}
|
||||
|
||||
protected override void SetTemperaturePresets(object seder, EventArgs e)
|
||||
{
|
||||
StringEventArgs stringEvent = e as StringEventArgs;
|
||||
if (stringEvent != null && stringEvent.Data != null)
|
||||
{
|
||||
UserSettings.Instance.set("BedPresetTemps", stringEvent.Data);
|
||||
ApplicationController.Instance.ReloadAdvancedControlsPanel();
|
||||
}
|
||||
}
|
||||
|
||||
protected override double GetPreheatTemperature()
|
||||
{
|
||||
return ActiveSliceSettings.Instance.GetValue<double>(SettingsKey.bed_temperature);
|
||||
}
|
||||
|
||||
protected override double GetActualTemperature()
|
||||
{
|
||||
return PrinterConnection.Instance.ActualBedTemperature;
|
||||
}
|
||||
|
||||
protected override double GetTargetTemperature()
|
||||
{
|
||||
return PrinterConnection.Instance.TargetBedTemperature;
|
||||
}
|
||||
|
||||
protected override void SetTargetTemperature(double targetTemp)
|
||||
{
|
||||
double goalTemp = (int)(targetTemp + .5);
|
||||
if (PrinterConnection.Instance.PrinterIsPrinting
|
||||
&& PrinterConnection.Instance.PrintingState == DetailedPrintingState.HeatingBed
|
||||
&& goalTemp != PrinterConnection.Instance.TargetBedTemperature)
|
||||
{
|
||||
string sliceSettingsNote = "Note: Slice Settings are applied before the print actually starts. Changes while printing will not effect the active print.";
|
||||
string message = string.Format("The bed is currently heating and its target temperature cannot be changed until it reaches {0}°C.\n\nYou can set the starting bed temperature in 'Slice Settings' -> 'Filament'.\n\n{1}", PrinterConnection.Instance.TargetBedTemperature, sliceSettingsNote);
|
||||
StyledMessageBox.ShowMessageBox(null, message, "Waiting For Bed To Heat");
|
||||
}
|
||||
else
|
||||
{
|
||||
PrinterConnection.Instance.TargetBedTemperature = goalTemp;
|
||||
string displayString = string.Format("{0:0.0}°C", PrinterConnection.Instance.TargetBedTemperature);
|
||||
targetTemperatureDisplay.SetDisplayString(displayString);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -28,20 +28,15 @@ either expressed or implied, of the FreeBSD Project.
|
|||
*/
|
||||
//#define DO_IN_PLACE_EDIT
|
||||
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.Image;
|
||||
using MatterHackers.Agg.ImageProcessing;
|
||||
using MatterHackers.Agg.PlatformAbstract;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.ImageProcessing;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.CustomWidgets;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.VectorMath;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.PlatformAbstract;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.Localizations;
|
||||
using MatterHackers.MatterControl.CustomWidgets;
|
||||
using MatterHackers.VectorMath;
|
||||
|
||||
namespace MatterHackers.MatterControl.SlicerConfiguration
|
||||
{
|
||||
|
|
@ -108,7 +103,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
FlowLayoutWidget container = new FlowLayoutWidget()
|
||||
{
|
||||
HAnchor = HAnchor.ParentLeftRight,
|
||||
Padding = new BorderDouble(12, 0)
|
||||
Padding = new BorderDouble(12, 0),
|
||||
Name = "Preset Pulldown Container"
|
||||
};
|
||||
|
||||
editButton = TextImageButtonFactory.GetThemedEditButton();
|
||||
|
|
|
|||
BIN
StaticData/Icons/bed.png
Normal file
BIN
StaticData/Icons/bed.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
BIN
StaticData/Icons/hotend.png
Normal file
BIN
StaticData/Icons/hotend.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -1 +1 @@
|
|||
Subproject commit 14e17874500a7b15a008c21228e5ee341bdbc30b
|
||||
Subproject commit 3d0d8dd95263063982b25a954fffb7559ee60924
|
||||
Loading…
Add table
Add a link
Reference in a new issue