Added UI registers change functionality.
This commit is contained in:
parent
7a75651541
commit
27c6df32c3
2 changed files with 48 additions and 9 deletions
|
@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Mesen.GUI.Controls;
|
using Mesen.GUI.Controls;
|
||||||
using Mesen.GUI.Forms;
|
using Mesen.GUI.Forms;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
namespace Mesen.GUI.Debugger.Controls
|
namespace Mesen.GUI.Debugger.Controls
|
||||||
{
|
{
|
||||||
|
@ -25,15 +26,15 @@ namespace Mesen.GUI.Debugger.Controls
|
||||||
}
|
}
|
||||||
|
|
||||||
_cpuBinder.Entity = new CpuState();
|
_cpuBinder.Entity = new CpuState();
|
||||||
_cpuBinder.AddBinding(nameof(CpuState.A), txtA);
|
_cpuBinder.AddBinding(nameof(CpuState.A), txtA, onEditHandler: (s, e) => { DebugApi.SetCpuRegister(CpuRegister.CpuRegA, UInt16.Parse(txtA.Text, NumberStyles.HexNumber)); });
|
||||||
_cpuBinder.AddBinding(nameof(CpuState.X), txtX);
|
_cpuBinder.AddBinding(nameof(CpuState.X), txtX, onEditHandler: (s, e) => { DebugApi.SetCpuRegister(CpuRegister.CpuRegX, UInt16.Parse(txtX.Text, NumberStyles.HexNumber)); });
|
||||||
_cpuBinder.AddBinding(nameof(CpuState.Y), txtY);
|
_cpuBinder.AddBinding(nameof(CpuState.Y), txtY, onEditHandler: (s, e) => { DebugApi.SetCpuRegister(CpuRegister.CpuRegY, UInt16.Parse(txtY.Text, NumberStyles.HexNumber)); });
|
||||||
_cpuBinder.AddBinding(nameof(CpuState.D), txtD);
|
_cpuBinder.AddBinding(nameof(CpuState.D), txtD, onEditHandler: (s, e) => { DebugApi.SetCpuRegister(CpuRegister.CpuRegD, UInt16.Parse(txtD.Text, NumberStyles.HexNumber)); });
|
||||||
_cpuBinder.AddBinding(nameof(CpuState.DBR), txtDB);
|
_cpuBinder.AddBinding(nameof(CpuState.DBR), txtDB, onEditHandler: (s, e) => { DebugApi.SetCpuRegister(CpuRegister.CpuRegDBR, UInt16.Parse(txtDB.Text, NumberStyles.HexNumber)); });
|
||||||
_cpuBinder.AddBinding(nameof(CpuState.SP), txtS);
|
_cpuBinder.AddBinding(nameof(CpuState.SP), txtS, onEditHandler: (s, e) => { DebugApi.SetCpuRegister(CpuRegister.CpuRegSP, UInt16.Parse(txtS.Text, NumberStyles.HexNumber)); });
|
||||||
_cpuBinder.AddBinding(nameof(CpuState.PS), txtP);
|
_cpuBinder.AddBinding(nameof(CpuState.PS), txtP, onEditHandler: (s, e) => { DebugApi.SetCpuRegister(CpuRegister.CpuRegPS, UInt16.Parse(txtP.Text, NumberStyles.HexNumber)); });
|
||||||
|
|
||||||
_cpuBinder.AddBinding(nameof(CpuState.NmiFlag), chkNmi);
|
_cpuBinder.AddBinding(nameof(CpuState.NmiFlag), chkNmi, onEditHandler: (s, e) => { DebugApi.SetCpuRegister(CpuRegister.CpuRegNmiFlag, (UInt16)(chkNmi.Checked ? 1 : 0)); });
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateStatus(CpuState state)
|
public void UpdateStatus(CpuState state)
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace Mesen.GUI.Forms
|
||||||
public class EntityBinder
|
public class EntityBinder
|
||||||
{
|
{
|
||||||
private Dictionary<string, object> _bindings = new Dictionary<string, object>();
|
private Dictionary<string, object> _bindings = new Dictionary<string, object>();
|
||||||
|
private Dictionary<string, EventHandler> _bindedHandlers = new Dictionary<string, EventHandler>();
|
||||||
private Dictionary<string, eNumberFormat> _fieldFormat = new Dictionary<string, eNumberFormat>();
|
private Dictionary<string, eNumberFormat> _fieldFormat = new Dictionary<string, eNumberFormat>();
|
||||||
private Dictionary<string, FieldInfoWrapper> _fieldInfo = null;
|
private Dictionary<string, FieldInfoWrapper> _fieldInfo = null;
|
||||||
|
|
||||||
|
@ -29,7 +30,7 @@ namespace Mesen.GUI.Forms
|
||||||
|
|
||||||
public bool Updating { get; private set; }
|
public bool Updating { get; private set; }
|
||||||
|
|
||||||
public void AddBinding(string fieldName, object bindedField, eNumberFormat format = eNumberFormat.Default)
|
public void AddBinding(string fieldName, object bindedField, eNumberFormat format = eNumberFormat.Default, EventHandler onEditHandler = null)
|
||||||
{
|
{
|
||||||
if(BindedType == null) {
|
if(BindedType == null) {
|
||||||
throw new Exception("Need to override BindedType to use bindings");
|
throw new Exception("Need to override BindedType to use bindings");
|
||||||
|
@ -54,6 +55,43 @@ namespace Mesen.GUI.Forms
|
||||||
BaseConfigForm.InitializeComboBox(((ComboBox)bindedField), fieldType);
|
BaseConfigForm.InitializeComboBox(((ComboBox)bindedField), fieldType);
|
||||||
}
|
}
|
||||||
_bindings[fieldName] = bindedField;
|
_bindings[fieldName] = bindedField;
|
||||||
|
_bindedHandlers[fieldName] = onEditHandler;
|
||||||
|
|
||||||
|
if(bindedField is TextBox) {
|
||||||
|
((TextBox)bindedField).Leave += onEditHandler;
|
||||||
|
} else if(bindedField is ctrlPathSelection) {
|
||||||
|
((ctrlPathSelection)bindedField).Leave += onEditHandler;
|
||||||
|
} else if(bindedField is CheckBox) {
|
||||||
|
((CheckBox)bindedField).CheckedChanged += onEditHandler;
|
||||||
|
} else if(bindedField is ToolStripMenuItem) {
|
||||||
|
((ToolStripMenuItem)bindedField).CheckedChanged += onEditHandler;
|
||||||
|
} else if(bindedField is ctrlRiskyOption) {
|
||||||
|
((ctrlRiskyOption)bindedField).Click += onEditHandler;
|
||||||
|
} else if(bindedField is RadioButton) {
|
||||||
|
((RadioButton)bindedField).CheckedChanged += onEditHandler;
|
||||||
|
} else if(bindedField is PictureBox) {
|
||||||
|
((PictureBox)bindedField).BackColorChanged += onEditHandler;
|
||||||
|
} else if(bindedField is Panel) {
|
||||||
|
FieldInfoWrapper field = _fieldInfo[fieldName];
|
||||||
|
object value = field.GetValue(this.Entity);
|
||||||
|
RadioButton radio = ((Panel)bindedField).Controls.OfType<RadioButton>().FirstOrDefault(r => r.Tag.Equals(value));
|
||||||
|
if(radio != null) {
|
||||||
|
radio.CheckedChanged += onEditHandler;
|
||||||
|
} else {
|
||||||
|
throw new Exception("No radio button matching value found");
|
||||||
|
}
|
||||||
|
} else if(bindedField is ctrlTrackbar) {
|
||||||
|
((ctrlTrackbar)bindedField).ValueChanged += onEditHandler;
|
||||||
|
} else if(bindedField is ctrlHorizontalTrackbar) {
|
||||||
|
((ctrlHorizontalTrackbar)bindedField).ValueChanged += onEditHandler;
|
||||||
|
} else if(bindedField is TrackBar) {
|
||||||
|
((TrackBar)bindedField).ValueChanged += onEditHandler;
|
||||||
|
} else if(bindedField is MesenNumericUpDown) {
|
||||||
|
((MesenNumericUpDown)bindedField).ValueChanged += onEditHandler;
|
||||||
|
} else if(bindedField is ComboBox) {
|
||||||
|
((ComboBox)bindedField).SelectedIndexChanged += onEditHandler;
|
||||||
|
}
|
||||||
|
|
||||||
_fieldFormat[fieldName] = format;
|
_fieldFormat[fieldName] = format;
|
||||||
} else {
|
} else {
|
||||||
throw new Exception("Invalid field name");
|
throw new Exception("Invalid field name");
|
||||||
|
|
Loading…
Add table
Reference in a new issue