Skip to content

Commit c9d44f9

Browse files
committed
Added enum management.
1 parent b364fcd commit c9d44f9

File tree

7 files changed

+221
-78
lines changed

7 files changed

+221
-78
lines changed

ReClass.NET/Forms/EnumEditorForm.Designer.cs

Lines changed: 20 additions & 27 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ReClass.NET/Forms/EnumEditorForm.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,27 @@
44
using System.Linq;
55
using System.Windows.Forms;
66
using ReClassNET.Project;
7+
using ReClassNET.UI;
78

89
namespace ReClassNET.Forms
910
{
1011
public partial class EnumEditorForm : IconForm
1112
{
12-
private readonly EnumMetaData enumMetaData;
13+
private readonly EnumMetaData @enum;
1314

14-
public EnumEditorForm(EnumMetaData enumMetaData)
15+
public EnumEditorForm(EnumMetaData @enum)
1516
{
16-
Contract.Requires(enumMetaData != null);
17+
Contract.Requires(@enum != null);
1718

1819
InitializeComponent();
1920

20-
this.enumMetaData = enumMetaData;
21+
this.@enum = @enum;
2122

22-
enumNameTextBox.Text = enumMetaData.Name;
23-
enumFlagCheckBox.Checked = enumMetaData.UseFlagsMode;
23+
enumNameTextBox.Text = @enum.Name;
24+
enumUnderlyingTypeSizeComboBox.SelectedValue = @enum.Size;
25+
enumFlagCheckBox.Checked = @enum.UseFlagsMode;
2426

25-
foreach (var kv in enumMetaData.Values)
27+
foreach (var kv in @enum.Values)
2628
{
2729
enumDataGridView.Rows.Add(kv.Key, kv.Value);
2830
}
@@ -41,7 +43,7 @@ private void enumDataGridView_DefaultValuesNeeded(object sender, DataGridViewRow
4143

4244
private void saveButton_Click(object sender, EventArgs e)
4345
{
44-
enumMetaData.Name = enumNameTextBox.Text;
46+
@enum.Name = enumNameTextBox.Text;
4547

4648
var values = new Dictionary<long, string>();
4749

@@ -57,7 +59,7 @@ private void saveButton_Click(object sender, EventArgs e)
5759
values.Add(valueKey, valueName);
5860
}
5961

60-
enumMetaData.SetData(enumFlagCheckBox.Checked, 4, values);
62+
@enum.SetData(enumFlagCheckBox.Checked, enumUnderlyingTypeSizeComboBox.SelectedValue, values);
6163
}
6264

6365
private void enumDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
@@ -81,4 +83,6 @@ void SetErrorText(string text)
8183
}
8284
}
8385
}
86+
87+
internal class UnderlyingSizeComboBox : EnumComboBox<EnumMetaData.UnderlyingTypeSize> { }
8488
}

ReClass.NET/Forms/EnumSelectionForm.Designer.cs

Lines changed: 49 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ReClass.NET/Forms/EnumSelectionForm.cs

Lines changed: 55 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.Diagnostics.Contracts;
43
using System.Linq;
54
using System.Windows.Forms;
@@ -10,19 +9,19 @@ namespace ReClassNET.Forms
109
{
1110
public partial class EnumSelectionForm : IconForm
1211
{
13-
private readonly IReadOnlyList<EnumMetaData> allEnums;
12+
private readonly ReClassNetProject project;
1413

1514
public EnumMetaData SelectedItem => itemListBox.SelectedItem as EnumMetaData;
1615

17-
public EnumSelectionForm(IEnumerable<EnumMetaData> classes)
16+
public EnumSelectionForm(ReClassNetProject project)
1817
{
19-
Contract.Requires(classes != null);
18+
Contract.Requires(project != null);
2019

21-
allEnums = classes.ToList();
20+
this.project = project;
2221

2322
InitializeComponent();
2423

25-
ShowFilteredClasses();
24+
ShowFilteredEnums();
2625
}
2726

2827
protected override void OnLoad(EventArgs e)
@@ -41,24 +40,69 @@ protected override void OnFormClosed(FormClosedEventArgs e)
4140

4241
private void filterNameTextBox_TextChanged(object sender, EventArgs e)
4342
{
44-
ShowFilteredClasses();
43+
ShowFilteredEnums();
4544
}
4645

4746
private void itemListBox_SelectedIndexChanged(object sender, EventArgs e)
4847
{
4948
selectButton.Enabled = SelectedItem != null;
5049
}
5150

52-
private void ShowFilteredClasses()
51+
private void editEnumIconButton_Click(object sender, EventArgs e)
5352
{
54-
IEnumerable<EnumMetaData> classes = allEnums;
53+
var @enum = SelectedItem;
54+
if (@enum == null)
55+
{
56+
return;
57+
}
58+
59+
using (var eef = new EnumEditorForm(@enum))
60+
{
61+
eef.ShowDialog();
62+
}
63+
}
64+
65+
private void addEnumIconButton_Click(object sender, EventArgs e)
66+
{
67+
var @enum = new EnumMetaData
68+
{
69+
Name = "Enum"
70+
};
71+
72+
using (var eef = new EnumEditorForm(@enum))
73+
{
74+
if (eef.ShowDialog() == DialogResult.OK)
75+
{
76+
project.AddEnum(@enum);
77+
78+
ShowFilteredEnums();
79+
}
80+
}
81+
}
82+
83+
private void removeEnumIconButton_Click(object sender, EventArgs e)
84+
{
85+
var @enum = SelectedItem;
86+
if (@enum == null)
87+
{
88+
return;
89+
}
90+
91+
project.RemoveEnum(@enum);
92+
93+
ShowFilteredEnums();
94+
}
95+
96+
private void ShowFilteredEnums()
97+
{
98+
var enums = project.Enums;
5599

56100
if (!string.IsNullOrEmpty(filterNameTextBox.Text))
57101
{
58-
classes = classes.Where(c => c.Name.IndexOf(filterNameTextBox.Text, StringComparison.OrdinalIgnoreCase) >= 0);
102+
enums = enums.Where(c => c.Name.IndexOf(filterNameTextBox.Text, StringComparison.OrdinalIgnoreCase) >= 0);
59103
}
60104

61-
itemListBox.DataSource = classes.ToList();
105+
itemListBox.DataSource = enums.ToList();
62106
}
63107
}
64108
}

ReClass.NET/Nodes/EnumNode.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace ReClassNET.Nodes
1212
{
1313
public class EnumNode : BaseNode
1414
{
15-
public override int MemorySize => MetaData.UnderlyingTypeSize;
15+
public override int MemorySize => (int)MetaData.Size;
1616

1717
public EnumMetaData MetaData { get; private set; } = EnumMetaData.Default;
1818

@@ -22,7 +22,7 @@ public EnumNode()
2222
{
2323
Name = "TestEnum"
2424
};
25-
MetaData.SetData(true, 4, new SortedDictionary<long, string>
25+
MetaData.SetData(true, EnumMetaData.UnderlyingTypeSize.FourBytes, new SortedDictionary<long, string>
2626
{
2727
{ 0, "Val0" },
2828
{ 1, "Val1" },
@@ -51,15 +51,15 @@ public override void GetUserInterfaceInfo(out string name, out Image icon)
5151
/// <returns></returns>
5252
public BaseNumericNode GetUnderlayingNode()
5353
{
54-
switch (MetaData.UnderlyingTypeSize)
54+
switch (MetaData.Size)
5555
{
56-
case 1:
56+
case EnumMetaData.UnderlyingTypeSize.OneByte:
5757
return new UInt8Node();
58-
case 2:
58+
case EnumMetaData.UnderlyingTypeSize.TwoBytes:
5959
return new UInt16Node();
60-
case 4:
60+
case EnumMetaData.UnderlyingTypeSize.FourBytes:
6161
return new UInt32Node();
62-
case 8:
62+
case EnumMetaData.UnderlyingTypeSize.EightBytes:
6363
return new UInt64Node();
6464
}
6565

@@ -68,15 +68,15 @@ public BaseNumericNode GetUnderlayingNode()
6868

6969
public long ReadValueFromMemory(MemoryBuffer memory)
7070
{
71-
switch (MetaData.UnderlyingTypeSize)
71+
switch (MetaData.Size)
7272
{
73-
case 1:
73+
case EnumMetaData.UnderlyingTypeSize.OneByte:
7474
return memory.ReadInt8(Offset);
75-
case 2:
75+
case EnumMetaData.UnderlyingTypeSize.TwoBytes:
7676
return memory.ReadInt16(Offset);
77-
case 4:
77+
case EnumMetaData.UnderlyingTypeSize.FourBytes:
7878
return memory.ReadInt32(Offset);
79-
case 8:
79+
case EnumMetaData.UnderlyingTypeSize.EightBytes:
8080
return memory.ReadInt64(Offset);
8181
}
8282

0 commit comments

Comments
 (0)