Making the temp controls be hosted settings

This commit is contained in:
Lars Brubaker 2018-01-08 18:21:30 -08:00
parent 957d47f802
commit 6a3a09950e
3 changed files with 51 additions and 89 deletions

View file

@ -172,7 +172,6 @@ namespace MatterHackers.MatterControl.ActionBar
private TextImageButtonFactory buttonFactory;
private int hotendIndex = -1;
private EditableNumberDisplay settingsTemperature;
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();
@ -191,12 +190,6 @@ namespace MatterHackers.MatterControl.ActionBar
protected override int ActualTemperature => (int)printer.Connection.GetActualHotendTemperature(hotendIndex);
protected override int TargetTemperature => (int)printer.Connection.GetTargetHotendTemperature(hotendIndex);
public override void OnClosed(ClosedEventArgs e)
{
ActiveSliceSettings.MaterialPresetChanged -= ActiveSliceSettings_MaterialPresetChanged;
base.OnClosed(e);
}
protected override GuiWidget GetPopupContent()
{
var widget = new IgnoredPopupWidget()
@ -227,7 +220,7 @@ namespace MatterHackers.MatterControl.ActionBar
if (itemChecked)
{
// Set to goal temp
SetTargetTemperature(settingsTemperature.Value);
SetTargetTemperature(printer.Settings.Helpers.ExtruderTemperature(hotendIndex));
}
else
{
@ -241,23 +234,16 @@ namespace MatterHackers.MatterControl.ActionBar
heatToggle = hotendRow.ChildrenRecursive<CheckBox>().FirstOrDefault();
heatToggle.Name = "Toggle Heater";
// put in the temp control
settingsTemperature = new EditableNumberDisplay(printer.Settings.GetValue<double>(SettingsKey.temperature), "000")
int tabIndex = 0;
var settingsContext = new SettingsContext(printer, null, NamedSettingsLayers.All);
foreach (var key in new[] { SettingsKey.temperature })
{
TextColor = Color.Black,
BorderColor = Color.Black,
Name = "Temperature Input"
};
settingsTemperature.ValueChanged += (s, e) =>
{
if (heatToggle.Checked)
{
SetTargetTemperature(settingsTemperature.Value);
}
};
container.AddChild(new SettingsItem(
"Temperature".Localize(),
settingsTemperature, enforceGutter: false));
// TODO: make this be for the correct extruder
var settingsData = SliceSettingsOrganizer.Instance.GetSettingsData(key);
var row = SliceSettingsWidget.CreateItemRow(settingsData, settingsContext, printer, Color.Black, ref tabIndex);
container.AddChild(row);
}
// add in the temp graph
Action fillGraph = null;
@ -267,15 +253,11 @@ namespace MatterHackers.MatterControl.ActionBar
MinValue = 0,
ShowGoal = true,
GoalColor = ActiveTheme.Instance.PrimaryAccentColor,
GoalValue = settingsTemperature.Value,
GoalValue = printer.Settings.Helpers.ExtruderTemperature(hotendIndex),
MaxValue = 280, // could come from some profile value in the future
Width = widget.Width - 20,
Height = 35, // this works better if it is a common multiple of the Width
};
settingsTemperature.ValueChanged += (s, e) =>
{
graph.GoalValue = settingsTemperature.Value;
};
fillGraph = () =>
{
graph.AddData(this.ActualTemperature);
@ -285,6 +267,20 @@ namespace MatterHackers.MatterControl.ActionBar
}
};
ActiveSliceSettings.SettingChanged.RegisterEvent((s, e) =>
{
if (e is StringEventArgs stringEvent)
{
var temp = printer.Settings.Helpers.ExtruderTemperature(hotendIndex);
if (stringEvent.Data == SettingsKey.temperature
&& heatToggle.Checked)
{
SetTargetTemperature(temp);
}
graph.GoalValue = temp;
};
}, ref unregisterEvents);
UiThread.RunOnIdle(fillGraph);
container.AddChild(graph);
@ -299,15 +295,6 @@ namespace MatterHackers.MatterControl.ActionBar
presetsSelector.DropDownList.Name = "Hotend Preset Selector";
presetsSelector.DropDownList.SelectionChanged += (s, e) =>
{
// delay this for an update so the slice setting can get updated first
UiThread.RunOnIdle(() =>
{
settingsTemperature.Value = printer.Settings.GetValue<double>(SettingsKey.temperature);
});
};
this.Width = 150;
// HACK: remove undesired item
@ -354,8 +341,6 @@ namespace MatterHackers.MatterControl.ActionBar
container.AddChild(new ControlContentExtruder(printer, hotendIndex, buttonFactory));
}
ActiveSliceSettings.MaterialPresetChanged += ActiveSliceSettings_MaterialPresetChanged;
return widget;
}
@ -384,13 +369,5 @@ namespace MatterHackers.MatterControl.ActionBar
printer.Connection.SetTargetHotendTemperature(hotendIndex, (int)(targetTemp + .5));
}
}
private void ActiveSliceSettings_MaterialPresetChanged(object sender, EventArgs e)
{
if (settingsTemperature != null && printer.Settings != null)
{
settingsTemperature.Text = printer.Settings.GetValue(SettingsKey.temperature);
}
}
}
}