improving undo in property editor
issue: MatterHackers/MCCentral#5945 Undo on part properties panel does not undo back to initial value
This commit is contained in:
parent
889fcb756b
commit
e24550d054
6 changed files with 32 additions and 11 deletions
|
|
@ -350,6 +350,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
var field = new DoubleField(theme);
|
||||
field.Initialize(0);
|
||||
field.DoubleValue = doubleValue;
|
||||
field.ClearUndoHistory();
|
||||
RegisterValueChanged(field, (valueString) => { return double.Parse(valueString); });
|
||||
|
||||
void RefreshField(object s, InvalidateArgs e)
|
||||
|
|
@ -388,6 +389,8 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
var field = new Vector2Field(theme);
|
||||
field.Initialize(0);
|
||||
field.Vector2 = vector2;
|
||||
field.ClearUndoHistory();
|
||||
|
||||
RegisterValueChanged(field,
|
||||
(valueString) => Vector2.Parse(valueString),
|
||||
(value) =>
|
||||
|
|
@ -395,6 +398,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
var s = ((Vector2)value).ToString();
|
||||
return s.Substring(1, s.Length - 2);
|
||||
});
|
||||
|
||||
rowContainer = CreateSettingsColumn(property, field);
|
||||
}
|
||||
else if (propertyValue is Vector3 vector3)
|
||||
|
|
@ -402,6 +406,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
var field = new Vector3Field(theme);
|
||||
field.Initialize(0);
|
||||
field.Vector3 = vector3;
|
||||
field.ClearUndoHistory();
|
||||
|
||||
RegisterValueChanged(
|
||||
field,
|
||||
|
|
@ -419,6 +424,8 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
var field = new DirectionVectorField(theme);
|
||||
field.Initialize(0);
|
||||
field.SetValue(directionVector);
|
||||
field.ClearUndoHistory();
|
||||
|
||||
field.ValueChanged += (s, e) =>
|
||||
{
|
||||
property.SetValue(field.DirectionVector);
|
||||
|
|
@ -434,6 +441,8 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
|
||||
var field1 = new DirectionVectorField(theme);
|
||||
field1.Initialize(0);
|
||||
field1.ClearUndoHistory();
|
||||
|
||||
field1.SetValue(new DirectionVector()
|
||||
{
|
||||
Normal = directionAxis.Normal
|
||||
|
|
@ -447,6 +456,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
var field2 = new Vector3Field(theme);
|
||||
field2.Initialize(0);
|
||||
field2.Vector3 = directionAxis.Origin - property.Item.Children.First().GetAxisAlignedBoundingBox().Center;
|
||||
field2.ClearUndoHistory();
|
||||
|
||||
var row2 = CreateSettingsColumn("Offset".Localize(), field2);
|
||||
|
||||
|
|
@ -580,6 +590,8 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
var field = new IntField(theme);
|
||||
field.Initialize(0);
|
||||
field.IntValue = intValue;
|
||||
field.ClearUndoHistory();
|
||||
|
||||
RegisterValueChanged(field, (valueString) => { return int.Parse(valueString); });
|
||||
|
||||
void RefreshField(object s, InvalidateArgs e)
|
||||
|
|
@ -629,6 +641,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
var field = new TextField(theme);
|
||||
field.Initialize(0);
|
||||
field.SetValue(stringValue, false);
|
||||
field.ClearUndoHistory();
|
||||
field.Content.HAnchor = HAnchor.Stretch;
|
||||
RegisterValueChanged(field, (valueString) => valueString);
|
||||
rowContainer = CreateSettingsRow(property, field, theme);
|
||||
|
|
@ -649,6 +662,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
var field = new CharField(theme);
|
||||
field.Initialize(0);
|
||||
field.SetValue(charValue.ToString(), false);
|
||||
field.ClearUndoHistory();
|
||||
field.ValueChanged += (s, e) =>
|
||||
{
|
||||
property.SetValue(Convert.ToChar(field.Value));
|
||||
|
|
|
|||
|
|
@ -810,14 +810,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
uiField.Content.ToolTipText = "";
|
||||
|
||||
// make sure the undo data goes back to the initial value after a change
|
||||
if (uiField.Content is MHTextEditWidget textWidget)
|
||||
{
|
||||
textWidget.ActualTextEditWidget.InternalTextEditWidget.ClearUndoHistory();
|
||||
}
|
||||
else if (uiField.Content is MHNumberEdit numberWidget)
|
||||
{
|
||||
numberWidget.ActuallNumberEdit.InternalTextEditWidget.ClearUndoHistory();
|
||||
}
|
||||
uiField.ClearUndoHistory();
|
||||
|
||||
uiField.ValueChanged += (s, e) =>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,9 +34,10 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
public abstract class NumberField : UIField
|
||||
{
|
||||
protected MHNumberEdit numberEdit;
|
||||
private ThemeConfig theme;
|
||||
private readonly ThemeConfig theme;
|
||||
|
||||
protected bool AllowNegatives { get; set; } = true;
|
||||
|
||||
protected bool AllowDecimals { get; set; } = true;
|
||||
|
||||
public NumberField(ThemeConfig theme)
|
||||
|
|
|
|||
|
|
@ -77,5 +77,18 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
{
|
||||
ValueChanged?.Invoke(this, fieldChangedEventArgs);
|
||||
}
|
||||
|
||||
public void ClearUndoHistory()
|
||||
{
|
||||
foreach (var widget in this.Content.DescendantsAndSelf<MHTextEditWidget>())
|
||||
{
|
||||
widget.ActualTextEditWidget.InternalTextEditWidget.ClearUndoHistory();
|
||||
}
|
||||
|
||||
foreach (var widget in this.Content.DescendantsAndSelf<MHNumberEdit>())
|
||||
{
|
||||
widget.ActuallNumberEdit.InternalTextEditWidget.ClearUndoHistory();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit afb3857da3d30fe9957f8d4654ea2eb7218743b8
|
||||
Subproject commit 71e3ef9688101735b4c7b98f7f0c02c14b1af118
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 3623ff4084d7c3b09e7b5bd0e5f0b2c5c7e408d9
|
||||
Subproject commit 8e697d187f74cf35b10a2674606aa047973c8e91
|
||||
Loading…
Add table
Add a link
Reference in a new issue