Merge pull request #2861 from larsbrubaker/design_tools

Design tools
This commit is contained in:
johnlewin 2018-01-09 15:50:15 -08:00 committed by GitHub
commit 2498b48e6b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 60 additions and 94 deletions

View file

@ -43,7 +43,6 @@ namespace MatterHackers.MatterControl.ActionBar
{
internal class TemperatureWidgetBed : TemperatureWidgetBase
{
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 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();
@ -62,12 +61,6 @@ namespace MatterHackers.MatterControl.ActionBar
protected override int ActualTemperature => (int)printer.Connection.ActualBedTemperature;
protected override int TargetTemperature => (int)printer.Connection.TargetBedTemperature;
public override void OnClosed(ClosedEventArgs e)
{
ActiveSliceSettings.MaterialPresetChanged -= ActiveSliceSettings_MaterialPresetChanged;
base.OnClosed(e);
}
protected override GuiWidget GetPopupContent()
{
var widget = new IgnoredPopupWidget()
@ -101,7 +94,7 @@ namespace MatterHackers.MatterControl.ActionBar
if (itemChecked)
{
SetTargetTemperature(settingsTemperature.Value);
SetTargetTemperature(goalTemp);
}
else
{
@ -111,28 +104,15 @@ namespace MatterHackers.MatterControl.ActionBar
},
enforceGutter: false));
heatToggle = hotendRow.ChildrenRecursive<CheckBox>().FirstOrDefault();
heatToggle = hotendRow.Decendants<CheckBox>().FirstOrDefault();
heatToggle.Name = "Toggle Heater";
// put in the temp control
settingsTemperature = new EditableNumberDisplay(printer.Settings.GetValue<double>(SettingsKey.bed_temperature), "000")
{
TextColor = Color.Black,
BorderColor = Color.Black,
Name = "Temperature Input"
};
settingsTemperature.ValueChanged += (s, e) =>
{
if (heatToggle.Checked)
{
SetTargetTemperature(settingsTemperature.Value);
}
};
int tabIndex = 0;
var settingsContext = new SettingsContext(printer, null, NamedSettingsLayers.All);
container.AddChild(new SettingsItem(
"Temperature".Localize(),
settingsTemperature,
enforceGutter: false));
var settingsData = SliceSettingsOrganizer.Instance.GetSettingsData(SettingsKey.bed_temperature);
var row = SliceSettingsWidget.CreateItemRow(settingsData, settingsContext, printer, Color.Black, ref tabIndex);
container.AddChild(row);
// add in the temp graph
Action fillGraph = null;
@ -142,16 +122,13 @@ namespace MatterHackers.MatterControl.ActionBar
MinValue = 0,
ShowGoal = true,
GoalColor = ActiveTheme.Instance.PrimaryAccentColor,
GoalValue = settingsTemperature.Value,
GoalValue = printer.Settings.GetValue<double>(SettingsKey.bed_temperature),
MaxValue = 150, // 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
Margin = new BorderDouble(0, 5, 0, 0),
};
settingsTemperature.ValueChanged += (s, e) =>
{
graph.GoalValue = settingsTemperature.Value;
};
fillGraph = () =>
{
graph.AddData(this.ActualTemperature);
@ -161,11 +138,28 @@ namespace MatterHackers.MatterControl.ActionBar
}
};
var valueField = row.Decendants<MHNumberEdit>().FirstOrDefault();
var settingsRow = row.Decendants<SliceSettingsRow>().FirstOrDefault();
ActiveSliceSettings.SettingChanged.RegisterEvent((s, e) =>
{
if (e is StringEventArgs stringEvent)
{
var temp = printer.Settings.GetValue<double>(SettingsKey.bed_temperature);
valueField.Value = temp;
graph.GoalValue = temp;
settingsRow.UpdateStyle();
if (stringEvent.Data == SettingsKey.bed_temperature
&& heatToggle.Checked)
{
SetTargetTemperature(temp);
}
};
}, ref unregisterEvents);
UiThread.RunOnIdle(fillGraph);
container.AddChild(graph);
ActiveSliceSettings.MaterialPresetChanged += ActiveSliceSettings_MaterialPresetChanged;
return widget;
}
@ -194,13 +188,5 @@ namespace MatterHackers.MatterControl.ActionBar
printer.Connection.TargetBedTemperature = (int)(targetTemp + .5);
}
}
private void ActiveSliceSettings_MaterialPresetChanged(object sender, EventArgs e)
{
if (settingsTemperature != null && printer.Settings != null)
{
settingsTemperature.Text = printer.Settings.GetValue(SettingsKey.bed_temperature);
}
}
}
}

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
{
@ -238,26 +231,16 @@ namespace MatterHackers.MatterControl.ActionBar
},
enforceGutter: false));
heatToggle = hotendRow.ChildrenRecursive<CheckBox>().FirstOrDefault();
heatToggle = hotendRow.Decendants<CheckBox>().FirstOrDefault();
heatToggle.Name = "Toggle Heater";
// put in the temp control
settingsTemperature = new EditableNumberDisplay(printer.Settings.GetValue<double>(SettingsKey.temperature), "000")
{
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));
int tabIndex = 0;
var settingsContext = new SettingsContext(printer, null, NamedSettingsLayers.All);
// TODO: make this be for the correct extruder
var settingsData = SliceSettingsOrganizer.Instance.GetSettingsData(SettingsKey.temperature);
var row = SliceSettingsWidget.CreateItemRow(settingsData, settingsContext, printer, Color.Black, ref tabIndex);
container.AddChild(row);
// add in the temp graph
Action fillGraph = null;
@ -267,15 +250,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 +264,25 @@ namespace MatterHackers.MatterControl.ActionBar
}
};
var valueField = row.Decendants<MHNumberEdit>().FirstOrDefault();
valueField.Name = "Temperature Input";
var settingsRow = row.Decendants<SliceSettingsRow>().FirstOrDefault();
ActiveSliceSettings.SettingChanged.RegisterEvent((s, e) =>
{
if (e is StringEventArgs stringEvent)
{
var temp = printer.Settings.Helpers.ExtruderTemperature(hotendIndex);
valueField.Value = temp;
graph.GoalValue = temp;
settingsRow.UpdateStyle();
if (stringEvent.Data == SettingsKey.temperature
&& heatToggle.Checked)
{
SetTargetTemperature(temp);
}
};
}, ref unregisterEvents);
UiThread.RunOnIdle(fillGraph);
container.AddChild(graph);
@ -299,15 +297,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 +343,6 @@ namespace MatterHackers.MatterControl.ActionBar
container.AddChild(new ControlContentExtruder(printer, hotendIndex, buttonFactory));
}
ActiveSliceSettings.MaterialPresetChanged += ActiveSliceSettings_MaterialPresetChanged;
return widget;
}
@ -384,13 +371,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);
}
}
}
}

@ -1 +1 @@
Subproject commit bad43f38ef713d6b5b953cc674bfd600edfe5082
Subproject commit 6151fbf50c3e657dc1e6c5059f8a9c12c1745d03

View file

@ -174,7 +174,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
testRunner.ClickByName("Hotend 0");
// assert the temp is set when we first open (it comes from the material)
EditableNumberDisplay tempWidget = testRunner.GetWidgetByName("Temperature Input", out _) as EditableNumberDisplay;
MHNumberEdit tempWidget = testRunner.GetWidgetByName("Temperature Input", out _) as MHNumberEdit;
Assert.AreEqual(240, (int)tempWidget.Value);
// change material
@ -237,6 +237,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
// type in 0 and have the heater turn off
testRunner.ClickByName("Temperature Input");
testRunner.Type("^a");
testRunner.Type("0");
testRunner.Type("{Enter}");
testRunner.Delay();