Debugger: Fixed memory type dropdowns not updating when changing game

This commit is contained in:
Sour 2018-03-30 18:57:07 -04:00
parent 37c633da14
commit bf731afc3c
4 changed files with 60 additions and 14 deletions

View File

@ -26,22 +26,39 @@ namespace Mesen.GUI.Debugger.Controls
bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
if(!designMode) {
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(AddressType.InternalRam));
if(InteropEmu.DebugGetMemorySize(DebugMemoryType.PrgRom) > 0) {
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(AddressType.PrgRom));
}
if(InteropEmu.DebugGetMemorySize(DebugMemoryType.WorkRam) > 0) {
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(AddressType.WorkRam));
}
if(InteropEmu.DebugGetMemorySize(DebugMemoryType.SaveRam) > 0) {
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(AddressType.SaveRam));
}
cboMemoryType.SelectedIndex = 0;
InitMemoryTypeDropdown();
cboSort.SelectedIndex = 0;
}
}
public void InitMemoryTypeDropdown()
{
cboMemoryType.SelectedIndexChanged -= cboMemoryType_SelectedIndexChanged;
AddressType originalValue = cboMemoryType.GetEnumValue<AddressType>();
cboMemoryType.BeginUpdate();
cboMemoryType.Items.Clear();
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(AddressType.InternalRam));
if(InteropEmu.DebugGetMemorySize(DebugMemoryType.PrgRom) > 0) {
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(AddressType.PrgRom));
}
if(InteropEmu.DebugGetMemorySize(DebugMemoryType.WorkRam) > 0) {
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(AddressType.WorkRam));
}
if(InteropEmu.DebugGetMemorySize(DebugMemoryType.SaveRam) > 0) {
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(AddressType.SaveRam));
}
cboMemoryType.SelectedIndex = 0;
cboMemoryType.SetEnumValue(originalValue);
cboMemoryType.SelectedIndexChanged += cboMemoryType_SelectedIndexChanged;
cboMemoryType.EndUpdate();
UpdateMemoryType();
}
public Font BaseFont { get { return ctrlScrollableTextbox.BaseFont; } set { ctrlScrollableTextbox.BaseFont = value; } }
public int TextZoom { get { return ctrlScrollableTextbox.TextZoom; } set { ctrlScrollableTextbox.TextZoom = value; } }
@ -124,6 +141,11 @@ namespace Mesen.GUI.Debugger.Controls
}
private void cboMemoryType_SelectedIndexChanged(object sender, EventArgs e)
{
UpdateMemoryType();
}
private void UpdateMemoryType()
{
_memoryType = cboMemoryType.GetEnumValue<AddressType>();
RefreshData();

View File

@ -161,7 +161,6 @@
this.cboMemoryType.Name = "cboMemoryType";
this.cboMemoryType.Size = new System.Drawing.Size(121, 21);
this.cboMemoryType.TabIndex = 1;
this.cboMemoryType.SelectedIndexChanged += new System.EventHandler(this.cboMemoryType_SelectedIndexChanged);
//
// menuStrip1
//

View File

@ -123,6 +123,13 @@ namespace Mesen.GUI.Debugger
private void InitMemoryTypeDropdown()
{
cboMemoryType.SelectedIndexChanged -= this.cboMemoryType_SelectedIndexChanged;
DebugMemoryType originalValue = cboMemoryType.GetEnumValue<DebugMemoryType>();
cboMemoryType.BeginUpdate();
cboMemoryType.Items.Clear();
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(DebugMemoryType.CpuMemory));
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(DebugMemoryType.PpuMemory));
cboMemoryType.Items.Add("-");
@ -153,7 +160,12 @@ namespace Mesen.GUI.Debugger
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(DebugMemoryType.SpriteMemory));
cboMemoryType.Items.Add(ResourceHelper.GetEnumText(DebugMemoryType.SecondarySpriteMemory));
this.cboMemoryType.SelectedIndex = 0;
cboMemoryType.SelectedIndex = 0;
cboMemoryType.SetEnumValue(originalValue);
cboMemoryType.SelectedIndexChanged += this.cboMemoryType_SelectedIndexChanged;
cboMemoryType.EndUpdate();
UpdateMemoryType();
}
private void UpdateFlags()
@ -199,6 +211,10 @@ namespace Mesen.GUI.Debugger
case InteropEmu.ConsoleNotificationType.GameReset:
case InteropEmu.ConsoleNotificationType.GameLoaded:
this.BeginInvoke((Action)(() => {
this.InitMemoryTypeDropdown();
ctrlMemoryAccessCounters.InitMemoryTypeDropdown();
}));
this.UpdateFlags();
break;
@ -228,6 +244,11 @@ namespace Mesen.GUI.Debugger
}
private void cboMemoryType_SelectedIndexChanged(object sender, EventArgs e)
{
UpdateMemoryType();
}
private void UpdateMemoryType()
{
this._memoryType = this.cboMemoryType.GetEnumValue<DebugMemoryType>();
this.UpdateImportButton();

View File

@ -160,6 +160,10 @@ namespace Mesen.GUI.Forms
public static T GetEnumValue<T>(this ComboBox cbo)
{
if(cbo.SelectedItem == null) {
return default(T);
}
foreach(Enum value in Enum.GetValues(typeof(T))) {
if(ResourceHelper.GetEnumText(value) == cbo.SelectedItem.ToString()) {
return (T)(object)value;