Allow editing of existing tree items

This commit is contained in:
Cj 2024-06-14 20:52:16 -04:00
parent 867b218063
commit 845c0a84ac
3 changed files with 144 additions and 18 deletions

View File

@ -33,6 +33,7 @@ partial class ReCodeItForm
TabPageRemapper = new TabPage();
RemapTreeView = new TreeView();
groupBox1 = new GroupBox();
EditRemapButton = new Button();
ConstuctorCountUpDown = new NumericUpDown();
ConstructorCountEnabled = new CheckBox();
LoadMappingFileButton = new Button();
@ -93,7 +94,7 @@ partial class ReCodeItForm
HasGenericParametersUpDown = new DomainUpDown();
IsEnumUpDown = new DomainUpDown();
NestedTypeCountUpDown = new NumericUpDown();
AddRemapButton = new Button();
SaveRemapButton = new Button();
IsDerivedUpDown = new DomainUpDown();
IsNestedUpDown = new DomainUpDown();
HasAttributeUpDown = new DomainUpDown();
@ -157,7 +158,7 @@ partial class ReCodeItForm
TabPageRemapper.Padding = new Padding(3);
TabPageRemapper.Size = new Size(1336, 953);
TabPageRemapper.TabIndex = 1;
TabPageRemapper.Text = "ReCodeItRemapper";
TabPageRemapper.Text = "Remapper";
//
// RemapTreeView
//
@ -168,6 +169,7 @@ partial class ReCodeItForm
//
// groupBox1
//
groupBox1.Controls.Add(EditRemapButton);
groupBox1.Controls.Add(ConstuctorCountUpDown);
groupBox1.Controls.Add(ConstructorCountEnabled);
groupBox1.Controls.Add(LoadMappingFileButton);
@ -192,7 +194,7 @@ partial class ReCodeItForm
groupBox1.Controls.Add(HasGenericParametersUpDown);
groupBox1.Controls.Add(IsEnumUpDown);
groupBox1.Controls.Add(NestedTypeCountUpDown);
groupBox1.Controls.Add(AddRemapButton);
groupBox1.Controls.Add(SaveRemapButton);
groupBox1.Controls.Add(IsDerivedUpDown);
groupBox1.Controls.Add(IsNestedUpDown);
groupBox1.Controls.Add(HasAttributeUpDown);
@ -206,6 +208,16 @@ partial class ReCodeItForm
groupBox1.TabStop = false;
groupBox1.Text = "Remap Editor";
//
// EditRemapButton
//
EditRemapButton.Location = new Point(580, 145);
EditRemapButton.Name = "EditRemapButton";
EditRemapButton.Size = new Size(168, 34);
EditRemapButton.TabIndex = 21;
EditRemapButton.Text = "Edit Remap";
EditRemapButton.UseVisualStyleBackColor = true;
EditRemapButton.Click += EditRemapButton_Click;
//
// ConstuctorCountUpDown
//
ConstuctorCountUpDown.Location = new Point(224, 178);
@ -245,7 +257,7 @@ partial class ReCodeItForm
//
// RunRemapButton
//
RunRemapButton.Location = new Point(580, 145);
RunRemapButton.Location = new Point(580, 185);
RunRemapButton.Name = "RunRemapButton";
RunRemapButton.Size = new Size(168, 34);
RunRemapButton.TabIndex = 16;
@ -789,15 +801,15 @@ partial class ReCodeItForm
NestedTypeCountUpDown.Size = new Size(55, 31);
NestedTypeCountUpDown.TabIndex = 4;
//
// AddRemapButton
// SaveRemapButton
//
AddRemapButton.Location = new Point(580, 64);
AddRemapButton.Name = "AddRemapButton";
AddRemapButton.Size = new Size(168, 34);
AddRemapButton.TabIndex = 4;
AddRemapButton.Text = "Add Remap";
AddRemapButton.UseVisualStyleBackColor = true;
AddRemapButton.Click += AddRemapButton_Click;
SaveRemapButton.Location = new Point(580, 64);
SaveRemapButton.Name = "SaveRemapButton";
SaveRemapButton.Size = new Size(168, 34);
SaveRemapButton.TabIndex = 4;
SaveRemapButton.Text = "Save Remap";
SaveRemapButton.UseVisualStyleBackColor = true;
SaveRemapButton.Click += AddRemapButton_Click;
//
// IsDerivedUpDown
//
@ -1188,7 +1200,7 @@ partial class ReCodeItForm
private TextBox OriginalTypeName;
private TextBox NewTypeName;
private Button RemoveRemapButton;
private Button AddRemapButton;
private Button SaveRemapButton;
private ListView RemapListView;
private TabControl TabControlMain;
private DomainUpDown IsPublicUpDown;
@ -1234,4 +1246,5 @@ partial class ReCodeItForm
private NumericUpDown AutoMapperRequiredMatchesUpDown;
private Label label1;
private Label label2;
private Button EditRemapButton;
}

View File

@ -9,6 +9,8 @@ public partial class ReCodeItForm : Form
{
public static ReCodeItRemapper Remapper { get; private set; } = new();
private RemapModel CurrentRemap { get; set; }
public ReCodeItForm()
{
InitializeComponent();
@ -35,7 +37,7 @@ public partial class ReCodeItForm : Form
return;
}
var remap = new RemapModel
var newRemap = new RemapModel
{
Succeeded = false,
FailureReason = EFailureReason.None,
@ -83,8 +85,31 @@ public partial class ReCodeItForm : Form
}
};
RemapTreeView.Nodes.Add(GUIHelpers.GenerateTreeNode(remap, this));
DataProvider.Remaps.Add(remap);
var existingRemap = DataProvider.Remaps
.Where(remap => remap.NewTypeName == NewTypeName.Text)
.FirstOrDefault();
// Handle overwriting an existing remap
if (existingRemap != null)
{
var index = DataProvider.Remaps.IndexOf(existingRemap);
DataProvider.Remaps.Remove(existingRemap);
RemapTreeView.Nodes.RemoveAt(index);
DataProvider.Remaps.Insert(index, newRemap);
RemapTreeView.Nodes.Insert(index, GUIHelpers.GenerateTreeNode(newRemap, this));
CurrentRemap = existingRemap;
ResetAll();
return;
}
CurrentRemap = newRemap;
RemapTreeView.Nodes.Add(GUIHelpers.GenerateTreeNode(newRemap, this));
DataProvider.Remaps.Add(newRemap);
ResetAll();
}
@ -94,6 +119,11 @@ public partial class ReCodeItForm : Form
RemapTreeView.SelectedNode?.Remove();
}
private void EditRemapButton_Click(object sender, EventArgs e)
{
EditSelectedRemap();
}
private void RunRemapButton_Click(object sender, EventArgs e)
{
if (ReCodeItRemapper.IsRunning) { return; }
@ -425,6 +455,7 @@ public partial class ReCodeItForm : Form
// Numeric UpDowns
ConstuctorCountUpDown.Value = 0;
MethodCountUpDown.Value = 0;
FieldCountUpDown.Value = 0;
PropertyCountUpDown.Value = 0;
@ -433,6 +464,7 @@ public partial class ReCodeItForm : Form
// Check boxes
ForceRenameCheckbox.Checked = false;
ConstructorCountEnabled.Checked = false;
MethodCountEnabled.Checked = false;
FieldCountEnabled.Checked = false;
PropertyCountEnabled.Checked = false;
@ -450,6 +482,82 @@ public partial class ReCodeItForm : Form
NestedTypesExcludeBox.Items.Clear();
}
private void EditSelectedRemap()
{
ResetAll();
var remap = DataProvider.Remaps.ElementAt(RemapTreeView.SelectedNode.Index);
NewTypeName.Text = remap.NewTypeName;
OriginalTypeName.Text = remap.OriginalTypeName;
ForceRenameCheckbox.Checked = remap.UseForceRename;
BaseClassIncludeTextFIeld.Text = remap.SearchParams.MatchBaseClass;
BaseClassExcludeTextField.Text = remap.SearchParams.IgnoreBaseClass;
NestedTypeParentName.Text = remap.SearchParams.ParentName;
ConstructorCountEnabled.Checked = remap.SearchParams.ConstructorParameterCount != null ? remap.SearchParams.ConstructorParameterCount > 0 : false;
MethodCountEnabled.Checked = remap.SearchParams.MethodCount != null ? remap.SearchParams.MethodCount > 0 : false;
FieldCountEnabled.Checked = remap.SearchParams.FieldCount != null ? remap.SearchParams.FieldCount > 0 : false;
PropertyCountEnabled.Checked = remap.SearchParams.PropertyCount != null ? remap.SearchParams.PropertyCount > 0 : false;
NestedTypeCountEnabled.Checked = remap.SearchParams.NestedTypeCount != null ? remap.SearchParams.NestedTypeCount > 0 : false;
ConstuctorCountUpDown.Value = (decimal)((remap.SearchParams.ConstructorParameterCount != null ? remap.SearchParams.ConstructorParameterCount : 0));
MethodCountUpDown.Value = (decimal)(remap.SearchParams.MethodCount != null ? remap.SearchParams.MethodCount : 0);
FieldCountUpDown.Value = (decimal)(remap.SearchParams.FieldCount != null ? remap.SearchParams.FieldCount : 0);
PropertyCountUpDown.Value = (decimal)(remap.SearchParams.PropertyCount != null ? remap.SearchParams.PropertyCount : 0);
NestedTypeCountUpDown.Value = (decimal)(remap.SearchParams.NestedTypeCount != null ? remap.SearchParams.NestedTypeCount : 0);
IsPublicUpDown.BuildStringList("IsPublic", remap.SearchParams.IsPublic);
IsAbstractUpDown.BuildStringList("IsAbstract", remap.SearchParams.IsAbstract);
IsInterfaceUpDown.BuildStringList("IsInterface", remap.SearchParams.IsInterface);
IsEnumUpDown.BuildStringList("IsEnum", remap.SearchParams.IsEnum);
IsNestedUpDown.BuildStringList("IsNested", remap.SearchParams.IsNested);
IsSealedUpDown.BuildStringList("IsSealed", remap.SearchParams.IsSealed);
HasAttributeUpDown.BuildStringList("HasAttribute", remap.SearchParams.HasAttribute);
IsDerivedUpDown.BuildStringList("IsDerived", remap.SearchParams.IsDerived);
HasGenericParametersUpDown.BuildStringList("HasGenericParams", remap.SearchParams.HasGenericParameters);
foreach (var method in remap.SearchParams.IncludeMethods)
{
MethodIncludeBox.Items.Add(method);
}
foreach (var method in remap.SearchParams.ExcludeMethods)
{
MethodExcludeBox.Items.Add(method);
}
foreach (var method in remap.SearchParams.IncludeFields)
{
FieldIncludeBox.Items.Add(method);
}
foreach (var method in remap.SearchParams.ExcludeFields)
{
FieldExcludeBox.Items.Add(method);
}
foreach (var method in remap.SearchParams.IncludeProperties)
{
PropertiesIncludeBox.Items.Add(method);
}
foreach (var method in remap.SearchParams.ExcludeProperties)
{
PropertiesExcludeBox.Items.Add(method);
}
foreach (var method in remap.SearchParams.IncludeNestedTypes)
{
NestedTypesIncludeBox.Items.Add(method);
}
foreach (var method in remap.SearchParams.ExcludeNestedTypes)
{
NestedTypesExcludeBox.Items.Add(method);
}
}
private void PopulateDomainUpDowns()
{
// Clear them all first just incase

View File

@ -38,7 +38,7 @@ internal static class GUIHelpers
/// </summary>
/// <param name="domainUpDown"></param>
/// <param name="name"></param>
public static void BuildStringList(this DomainUpDown domainUpDown, string name)
public static void BuildStringList(this DomainUpDown domainUpDown, string name, bool? update = null)
{
domainUpDown.Items.Clear();
domainUpDown.Text = name + " (Disabled)";
@ -51,6 +51,11 @@ internal static class GUIHelpers
"False",
};
if (update != null)
{
domainUpDown.Text = update.ToString();
}
domainUpDown.Items.AddRange(list);
}
@ -71,7 +76,7 @@ internal static class GUIHelpers
var IsDerived = model.SearchParams.IsDerived == null ? null : model.SearchParams.IsDerived;
var HasGenericParameters = model.SearchParams.HasGenericParameters == null ? null : model.SearchParams.HasGenericParameters;
var remapTreeItem = new TreeNode($"Remap: {model.NewTypeName}");
var remapTreeItem = new TreeNode($"{model.NewTypeName}");
var originalTypeName = new TreeNode($"Original Name: {model.OriginalTypeName}");