Progress on new watch editor
This commit is contained in:
parent
e49c00ac36
commit
ddb6adf593
|
@ -193,13 +193,13 @@
|
|||
// NewWatchStripButton1
|
||||
//
|
||||
this.NewWatchStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.NewWatchStripButton1.Enabled = false;
|
||||
this.NewWatchStripButton1.Image = global::BizHawk.MultiClient.Properties.Resources.FindHS;
|
||||
this.NewWatchStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.NewWatchStripButton1.Name = "NewWatchStripButton1";
|
||||
this.NewWatchStripButton1.Size = new System.Drawing.Size(23, 22);
|
||||
this.NewWatchStripButton1.Text = "New Watch";
|
||||
this.NewWatchStripButton1.ToolTipText = "New Watch";
|
||||
this.NewWatchStripButton1.Click += new System.EventHandler(this.newWatchToolStripMenuItem_Click);
|
||||
//
|
||||
// EditWatchToolStripButton1
|
||||
//
|
||||
|
@ -445,12 +445,12 @@
|
|||
//
|
||||
// newWatchToolStripMenuItem
|
||||
//
|
||||
this.newWatchToolStripMenuItem.Enabled = false;
|
||||
this.newWatchToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.FindHS;
|
||||
this.newWatchToolStripMenuItem.Name = "newWatchToolStripMenuItem";
|
||||
this.newWatchToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W)));
|
||||
this.newWatchToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
|
||||
this.newWatchToolStripMenuItem.Text = "&New Watch";
|
||||
this.newWatchToolStripMenuItem.Click += new System.EventHandler(this.newWatchToolStripMenuItem_Click);
|
||||
//
|
||||
// editWatchToolStripMenuItem
|
||||
//
|
||||
|
|
|
@ -167,8 +167,7 @@ namespace BizHawk.MultiClient
|
|||
|
||||
private void UpdateWatchCount()
|
||||
{
|
||||
int count = Watches.WatchCount;
|
||||
WatchCountLabel.Text = count.ToString() + (count == 1 ? " watch" : " watches");
|
||||
WatchCountLabel.Text = Watches.WatchCount.ToString() + (Watches.WatchCount == 1 ? " watch" : " watches");
|
||||
}
|
||||
|
||||
private void SetPlatformAndMemoryDomainLabel()
|
||||
|
@ -214,6 +213,7 @@ namespace BizHawk.MultiClient
|
|||
}
|
||||
|
||||
DisplayWatches();
|
||||
UpdateWatchCount();
|
||||
Watches.Changes = false;
|
||||
}
|
||||
}
|
||||
|
@ -347,6 +347,30 @@ namespace BizHawk.MultiClient
|
|||
DisplayWatches();
|
||||
}
|
||||
|
||||
private Point GetPromptPoint()
|
||||
{
|
||||
return PointToScreen(new Point(WatchListView.Location.X, WatchListView.Location.Y));
|
||||
}
|
||||
|
||||
private void AddNewWatch()
|
||||
{
|
||||
WatchEditor we = new WatchEditor()
|
||||
{
|
||||
InitialLocation = GetPromptPoint()
|
||||
};
|
||||
we.SetWatch(Watches.Domain);
|
||||
Global.Sound.StopSound();
|
||||
we.ShowDialog();
|
||||
Global.Sound.StartSound();
|
||||
|
||||
if (we.DialogResult == DialogResult.OK)
|
||||
{
|
||||
Watches.Add(we.Watches[0]);
|
||||
UpdateWatchCount();
|
||||
DisplayWatches();
|
||||
}
|
||||
}
|
||||
|
||||
#region Winform Events
|
||||
|
||||
private void NewRamWatch_Load(object sender, EventArgs e)
|
||||
|
@ -470,6 +494,11 @@ namespace BizHawk.MultiClient
|
|||
memoryDomainsToolStripMenuItem.DropDownItems.AddRange(ToolHelpers.GenerateMemoryDomainMenuItems(SetMemoryDomain, Watches.Domain.Name));
|
||||
}
|
||||
|
||||
private void newWatchToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddNewWatch();
|
||||
}
|
||||
|
||||
private void removeWatchToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
ListView.SelectedIndexCollection indexes = WatchListView.SelectedIndices;
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RamWatchNewWatch));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.AddressBox = new HexTextBox();
|
||||
this.AddressBox = new BizHawk.HexTextBox();
|
||||
this.NotesBox = new System.Windows.Forms.TextBox();
|
||||
this.DataTypeGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.HexRadio = new System.Windows.Forms.RadioButton();
|
||||
|
@ -245,6 +245,7 @@
|
|||
//
|
||||
// DomainComboBox
|
||||
//
|
||||
this.DomainComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.DomainComboBox.FormattingEnabled = true;
|
||||
this.DomainComboBox.Location = new System.Drawing.Point(12, 230);
|
||||
this.DomainComboBox.Name = "DomainComboBox";
|
||||
|
|
|
@ -693,6 +693,12 @@ namespace BizHawk.MultiClient
|
|||
Changes = true;
|
||||
}
|
||||
|
||||
public void AddRange(IList<Watch> watches)
|
||||
{
|
||||
_watchList.AddRange(watches);
|
||||
Changes = true;
|
||||
}
|
||||
|
||||
public void Remove(Watch watch)
|
||||
{
|
||||
_watchList.Remove(watch);
|
||||
|
|
|
@ -32,24 +32,10 @@
|
|||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.AddressBox = new BizHawk.HexTextBox();
|
||||
this.NotesBox = new System.Windows.Forms.TextBox();
|
||||
this.DataTypeGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.HexRadio = new System.Windows.Forms.RadioButton();
|
||||
this.UnsignedRadio = new System.Windows.Forms.RadioButton();
|
||||
this.SignedRadio = new System.Windows.Forms.RadioButton();
|
||||
this.DataSizeBox = new System.Windows.Forms.GroupBox();
|
||||
this.Byte4Radio = new System.Windows.Forms.RadioButton();
|
||||
this.Byte2Radio = new System.Windows.Forms.RadioButton();
|
||||
this.Byte1Radio = new System.Windows.Forms.RadioButton();
|
||||
this.EndianBox = new System.Windows.Forms.GroupBox();
|
||||
this.LittleEndianRadio = new System.Windows.Forms.RadioButton();
|
||||
this.BigEndianRadio = new System.Windows.Forms.RadioButton();
|
||||
this.OK = new System.Windows.Forms.Button();
|
||||
this.Cancel = new System.Windows.Forms.Button();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.DomainComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.DataTypeGroupBox.SuspendLayout();
|
||||
this.DataSizeBox.SuspendLayout();
|
||||
this.EndianBox.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
|
@ -79,7 +65,6 @@
|
|||
this.AddressBox.Size = new System.Drawing.Size(100, 20);
|
||||
this.AddressBox.TabIndex = 2;
|
||||
this.AddressBox.Text = "00000000";
|
||||
this.AddressBox.Leave += new System.EventHandler(this.AddressBox_Leave);
|
||||
//
|
||||
// NotesBox
|
||||
//
|
||||
|
@ -89,127 +74,6 @@
|
|||
this.NotesBox.Size = new System.Drawing.Size(100, 20);
|
||||
this.NotesBox.TabIndex = 3;
|
||||
//
|
||||
// DataTypeGroupBox
|
||||
//
|
||||
this.DataTypeGroupBox.Controls.Add(this.HexRadio);
|
||||
this.DataTypeGroupBox.Controls.Add(this.UnsignedRadio);
|
||||
this.DataTypeGroupBox.Controls.Add(this.SignedRadio);
|
||||
this.DataTypeGroupBox.Location = new System.Drawing.Point(12, 67);
|
||||
this.DataTypeGroupBox.Name = "DataTypeGroupBox";
|
||||
this.DataTypeGroupBox.Size = new System.Drawing.Size(95, 79);
|
||||
this.DataTypeGroupBox.TabIndex = 4;
|
||||
this.DataTypeGroupBox.TabStop = false;
|
||||
this.DataTypeGroupBox.Text = "Data Type";
|
||||
//
|
||||
// HexRadio
|
||||
//
|
||||
this.HexRadio.AutoSize = true;
|
||||
this.HexRadio.Location = new System.Drawing.Point(4, 51);
|
||||
this.HexRadio.Name = "HexRadio";
|
||||
this.HexRadio.Size = new System.Drawing.Size(86, 17);
|
||||
this.HexRadio.TabIndex = 2;
|
||||
this.HexRadio.Text = "Hexadecimal";
|
||||
this.HexRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// UnsignedRadio
|
||||
//
|
||||
this.UnsignedRadio.AutoSize = true;
|
||||
this.UnsignedRadio.Checked = true;
|
||||
this.UnsignedRadio.Location = new System.Drawing.Point(4, 34);
|
||||
this.UnsignedRadio.Name = "UnsignedRadio";
|
||||
this.UnsignedRadio.Size = new System.Drawing.Size(70, 17);
|
||||
this.UnsignedRadio.TabIndex = 1;
|
||||
this.UnsignedRadio.TabStop = true;
|
||||
this.UnsignedRadio.Text = "Unsigned";
|
||||
this.UnsignedRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// SignedRadio
|
||||
//
|
||||
this.SignedRadio.AutoSize = true;
|
||||
this.SignedRadio.Location = new System.Drawing.Point(4, 17);
|
||||
this.SignedRadio.Name = "SignedRadio";
|
||||
this.SignedRadio.Size = new System.Drawing.Size(58, 17);
|
||||
this.SignedRadio.TabIndex = 0;
|
||||
this.SignedRadio.Text = "Signed";
|
||||
this.SignedRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// DataSizeBox
|
||||
//
|
||||
this.DataSizeBox.Controls.Add(this.Byte4Radio);
|
||||
this.DataSizeBox.Controls.Add(this.Byte2Radio);
|
||||
this.DataSizeBox.Controls.Add(this.Byte1Radio);
|
||||
this.DataSizeBox.Location = new System.Drawing.Point(115, 67);
|
||||
this.DataSizeBox.Name = "DataSizeBox";
|
||||
this.DataSizeBox.Size = new System.Drawing.Size(83, 79);
|
||||
this.DataSizeBox.TabIndex = 5;
|
||||
this.DataSizeBox.TabStop = false;
|
||||
this.DataSizeBox.Text = "Data Size:";
|
||||
//
|
||||
// Byte4Radio
|
||||
//
|
||||
this.Byte4Radio.AutoSize = true;
|
||||
this.Byte4Radio.Location = new System.Drawing.Point(5, 51);
|
||||
this.Byte4Radio.Name = "Byte4Radio";
|
||||
this.Byte4Radio.Size = new System.Drawing.Size(60, 17);
|
||||
this.Byte4Radio.TabIndex = 2;
|
||||
this.Byte4Radio.Text = "4 Bytes";
|
||||
this.Byte4Radio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// Byte2Radio
|
||||
//
|
||||
this.Byte2Radio.AutoSize = true;
|
||||
this.Byte2Radio.Location = new System.Drawing.Point(5, 34);
|
||||
this.Byte2Radio.Name = "Byte2Radio";
|
||||
this.Byte2Radio.Size = new System.Drawing.Size(60, 17);
|
||||
this.Byte2Radio.TabIndex = 1;
|
||||
this.Byte2Radio.Text = "2 Bytes";
|
||||
this.Byte2Radio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// Byte1Radio
|
||||
//
|
||||
this.Byte1Radio.AutoSize = true;
|
||||
this.Byte1Radio.Checked = true;
|
||||
this.Byte1Radio.Location = new System.Drawing.Point(5, 17);
|
||||
this.Byte1Radio.Name = "Byte1Radio";
|
||||
this.Byte1Radio.Size = new System.Drawing.Size(55, 17);
|
||||
this.Byte1Radio.TabIndex = 0;
|
||||
this.Byte1Radio.TabStop = true;
|
||||
this.Byte1Radio.Text = "1 Byte";
|
||||
this.Byte1Radio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// EndianBox
|
||||
//
|
||||
this.EndianBox.Controls.Add(this.LittleEndianRadio);
|
||||
this.EndianBox.Controls.Add(this.BigEndianRadio);
|
||||
this.EndianBox.Location = new System.Drawing.Point(12, 152);
|
||||
this.EndianBox.Name = "EndianBox";
|
||||
this.EndianBox.Size = new System.Drawing.Size(117, 55);
|
||||
this.EndianBox.TabIndex = 6;
|
||||
this.EndianBox.TabStop = false;
|
||||
this.EndianBox.Text = "Endian";
|
||||
//
|
||||
// LittleEndianRadio
|
||||
//
|
||||
this.LittleEndianRadio.AutoSize = true;
|
||||
this.LittleEndianRadio.Location = new System.Drawing.Point(4, 35);
|
||||
this.LittleEndianRadio.Name = "LittleEndianRadio";
|
||||
this.LittleEndianRadio.Size = new System.Drawing.Size(83, 17);
|
||||
this.LittleEndianRadio.TabIndex = 1;
|
||||
this.LittleEndianRadio.Text = "Little Endian";
|
||||
this.LittleEndianRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// BigEndianRadio
|
||||
//
|
||||
this.BigEndianRadio.AutoSize = true;
|
||||
this.BigEndianRadio.Checked = true;
|
||||
this.BigEndianRadio.Location = new System.Drawing.Point(4, 18);
|
||||
this.BigEndianRadio.Name = "BigEndianRadio";
|
||||
this.BigEndianRadio.Size = new System.Drawing.Size(76, 17);
|
||||
this.BigEndianRadio.TabIndex = 0;
|
||||
this.BigEndianRadio.TabStop = true;
|
||||
this.BigEndianRadio.Text = "Big Endian";
|
||||
this.BigEndianRadio.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// OK
|
||||
//
|
||||
this.OK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
|
@ -244,6 +108,7 @@
|
|||
//
|
||||
// DomainComboBox
|
||||
//
|
||||
this.DomainComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.DomainComboBox.FormattingEnabled = true;
|
||||
this.DomainComboBox.Location = new System.Drawing.Point(12, 230);
|
||||
this.DomainComboBox.Name = "DomainComboBox";
|
||||
|
@ -262,9 +127,6 @@
|
|||
this.Controls.Add(this.DomainComboBox);
|
||||
this.Controls.Add(this.Cancel);
|
||||
this.Controls.Add(this.OK);
|
||||
this.Controls.Add(this.EndianBox);
|
||||
this.Controls.Add(this.DataSizeBox);
|
||||
this.Controls.Add(this.DataTypeGroupBox);
|
||||
this.Controls.Add(this.NotesBox);
|
||||
this.Controls.Add(this.AddressBox);
|
||||
this.Controls.Add(this.label2);
|
||||
|
@ -275,12 +137,6 @@
|
|||
this.Name = "WatchEditor";
|
||||
this.Text = "New Watch";
|
||||
this.Load += new System.EventHandler(this.RamWatchNewWatch_Load);
|
||||
this.DataTypeGroupBox.ResumeLayout(false);
|
||||
this.DataTypeGroupBox.PerformLayout();
|
||||
this.DataSizeBox.ResumeLayout(false);
|
||||
this.DataSizeBox.PerformLayout();
|
||||
this.EndianBox.ResumeLayout(false);
|
||||
this.EndianBox.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
|
@ -291,18 +147,7 @@
|
|||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private HexTextBox AddressBox;
|
||||
private System.Windows.Forms.TextBox NotesBox;
|
||||
private System.Windows.Forms.GroupBox DataTypeGroupBox;
|
||||
private System.Windows.Forms.RadioButton SignedRadio;
|
||||
private System.Windows.Forms.RadioButton UnsignedRadio;
|
||||
private System.Windows.Forms.RadioButton HexRadio;
|
||||
private System.Windows.Forms.GroupBox DataSizeBox;
|
||||
private System.Windows.Forms.RadioButton Byte1Radio;
|
||||
private System.Windows.Forms.RadioButton Byte2Radio;
|
||||
private System.Windows.Forms.RadioButton Byte4Radio;
|
||||
private System.Windows.Forms.GroupBox EndianBox;
|
||||
private System.Windows.Forms.RadioButton BigEndianRadio;
|
||||
private System.Windows.Forms.RadioButton LittleEndianRadio;
|
||||
private System.Windows.Forms.TextBox NotesBox;
|
||||
private System.Windows.Forms.Button OK;
|
||||
private System.Windows.Forms.Button Cancel;
|
||||
private System.Windows.Forms.Label label6;
|
||||
|
|
|
@ -1,246 +1,117 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace BizHawk.MultiClient
|
||||
{
|
||||
public partial class WatchEditor : Form
|
||||
{
|
||||
public Watch_Legacy Watch = new Watch_Legacy();
|
||||
public bool SelectionWasMade = false;
|
||||
public Point location = new Point();
|
||||
public enum Mode { New, Duplicate, Edit };
|
||||
|
||||
private List<Watch> _watchList = new List<Watch>();
|
||||
private Mode _mode = Mode.New;
|
||||
private bool _loading = true;
|
||||
private string _addressFormatStr = "{0:X2}";
|
||||
|
||||
private bool DoNotResetAddress;
|
||||
public Mode EditorMode { get { return _mode; } }
|
||||
public List<Watch> Watches { get { return _watchList; } }
|
||||
public Point InitialLocation = new Point(0, 0);
|
||||
|
||||
public WatchEditor()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void SetWatch(Watch_Legacy watch, string message = "New Watch")
|
||||
private void RamWatchNewWatch_Load(object sender, EventArgs e)
|
||||
{
|
||||
DoNotResetAddress = true; //Hack for the drop down event changing when initializing the drop down
|
||||
Watch = new Watch_Legacy(watch);
|
||||
Text = message;
|
||||
if (InitialLocation.X > 0 || InitialLocation.Y > 0)
|
||||
{
|
||||
Location = InitialLocation;
|
||||
}
|
||||
_loading = false;
|
||||
SetAddressBoxProperties();
|
||||
}
|
||||
|
||||
NotesBox.Text = watch.Notes;
|
||||
setTypeRadio();
|
||||
setSignedRadio();
|
||||
setEndianBox();
|
||||
setDomainSelection();
|
||||
setAddressBox();
|
||||
public void SetWatch(MemoryDomain domain = null, List<Watch> watches = null, Mode mode = Mode.New)
|
||||
{
|
||||
if (watches != null)
|
||||
{
|
||||
_watchList.AddRange(watches);
|
||||
}
|
||||
SetTitle();
|
||||
DoMemoryDomainDropdown(domain ?? Global.Emulator.MainMemory);
|
||||
}
|
||||
|
||||
private void SetTitle()
|
||||
{
|
||||
switch(_mode)
|
||||
{
|
||||
default:
|
||||
case WatchEditor.Mode.New:
|
||||
Text = "New Watch";
|
||||
break;
|
||||
case WatchEditor.Mode.Edit:
|
||||
Text = "Edit Watch" + (_watchList.Count > 1 ? "es" : "");
|
||||
break;
|
||||
case WatchEditor.Mode.Duplicate:
|
||||
Text = "Duplicate Watch";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void DoMemoryDomainDropdown(MemoryDomain startDomain)
|
||||
{
|
||||
DomainComboBox.Items.Clear();
|
||||
if (Global.Emulator.MemoryDomains.Count > 0)
|
||||
{
|
||||
foreach (MemoryDomain domain in Global.Emulator.MemoryDomains)
|
||||
{
|
||||
var result = DomainComboBox.Items.Add(domain.ToString());
|
||||
if (domain.Name == startDomain.Name)
|
||||
{
|
||||
DomainComboBox.SelectedIndex = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetAddressBoxProperties()
|
||||
{
|
||||
if (!_loading)
|
||||
{
|
||||
var domain = Global.Emulator.MemoryDomains.FirstOrDefault(d => d.Name == DomainComboBox.SelectedItem.ToString());
|
||||
if (domain != null)
|
||||
{
|
||||
AddressBox.MaxLength = IntHelpers.GetNumDigits(domain.Size - 1);
|
||||
_addressFormatStr = "{0:X" + AddressBox.MaxLength.ToString() + "}";
|
||||
AddressBox.Text = String.Format(_addressFormatStr, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region Events
|
||||
|
||||
private void RamWatchNewWatch_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (location.X > 0 && location.Y > 0)
|
||||
{
|
||||
Location = location;
|
||||
}
|
||||
|
||||
populateMemoryDomainComboBox();
|
||||
DoNotResetAddress = false;
|
||||
}
|
||||
|
||||
private void Cancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
SelectionWasMade = false;
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void OK_Click(object sender, EventArgs e)
|
||||
{
|
||||
//Put user settings in the watch file
|
||||
SelectionWasMade = true;
|
||||
if (InputValidate.IsValidHexNumber(AddressBox.Text))
|
||||
{
|
||||
Watch.Address = int.Parse(AddressBox.Text, NumberStyles.HexNumber);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Not a valid address (enter a valid Hex number)", "Invalid Address", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
AddressBox.Focus();
|
||||
AddressBox.SelectAll();
|
||||
DialogResult = DialogResult.OK;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (SignedRadio.Checked)
|
||||
{
|
||||
Watch.Signed = Watch_Legacy.DISPTYPE.SIGNED;
|
||||
}
|
||||
else if (UnsignedRadio.Checked)
|
||||
{
|
||||
Watch.Signed = Watch_Legacy.DISPTYPE.UNSIGNED;
|
||||
}
|
||||
else if (HexRadio.Checked)
|
||||
{
|
||||
Watch.Signed = Watch_Legacy.DISPTYPE.HEX;
|
||||
}
|
||||
|
||||
if (Byte1Radio.Checked)
|
||||
{
|
||||
Watch.Type = Watch_Legacy.TYPE.BYTE;
|
||||
}
|
||||
else if (Byte2Radio.Checked)
|
||||
{
|
||||
Watch.Type = Watch_Legacy.TYPE.WORD;
|
||||
}
|
||||
else if (Byte4Radio.Checked)
|
||||
{
|
||||
Watch.Type = Watch_Legacy.TYPE.DWORD;
|
||||
}
|
||||
|
||||
if (BigEndianRadio.Checked)
|
||||
{
|
||||
Watch.BigEndian = true;
|
||||
}
|
||||
else if (LittleEndianRadio.Checked)
|
||||
{
|
||||
Watch.BigEndian = false;
|
||||
}
|
||||
|
||||
Watch.Domain = Global.Emulator.MemoryDomains[DomainComboBox.SelectedIndex];
|
||||
Watch.Notes = NotesBox.Text;
|
||||
//TODO
|
||||
|
||||
Close();
|
||||
}
|
||||
|
||||
private void AddressBox_Leave(object sender, EventArgs e)
|
||||
{
|
||||
AddressBox.Text = AddressBox.Text.Replace(" ", "");
|
||||
if (!InputValidate.IsValidHexNumber(AddressBox.Text))
|
||||
{
|
||||
AddressBox.Focus();
|
||||
AddressBox.SelectAll();
|
||||
ToolTip t = new ToolTip();
|
||||
t.Show("Must be a valid hexadecimal vaue", AddressBox, 5000);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
Watch.Address = int.Parse(AddressBox.Text, NumberStyles.HexNumber);
|
||||
AddressBox.Text = String.Format("{0:X" + getNumDigits(Watch.Domain.Size - 1) + "}", Watch.Address);
|
||||
}
|
||||
catch
|
||||
{
|
||||
//Do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DomainComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!DoNotResetAddress)
|
||||
{
|
||||
Watch.Domain = Global.Emulator.MemoryDomains[DomainComboBox.SelectedIndex];
|
||||
Watch.Address = 0;
|
||||
Watch.Value = 0;
|
||||
setAddressBox();
|
||||
AddressBox.MaxLength = getNumDigits(Watch.Domain.Size);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Helpers
|
||||
|
||||
private void setTypeRadio()
|
||||
{
|
||||
switch (Watch.Type)
|
||||
{
|
||||
case Watch_Legacy.TYPE.BYTE:
|
||||
Byte1Radio.Checked = true;
|
||||
break;
|
||||
case Watch_Legacy.TYPE.WORD:
|
||||
Byte2Radio.Checked = true;
|
||||
break;
|
||||
case Watch_Legacy.TYPE.DWORD:
|
||||
Byte4Radio.Checked = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void setEndianBox()
|
||||
{
|
||||
if (Watch.BigEndian == true)
|
||||
{
|
||||
BigEndianRadio.Checked = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
LittleEndianRadio.Checked = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void setDomainSelection()
|
||||
{
|
||||
//Counts should always be the same, but just in case, let's check
|
||||
int max;
|
||||
if (Global.Emulator.MemoryDomains.Count < DomainComboBox.Items.Count)
|
||||
{
|
||||
max = Global.Emulator.MemoryDomains.Count;
|
||||
}
|
||||
else
|
||||
{
|
||||
max = DomainComboBox.Items.Count;
|
||||
}
|
||||
|
||||
for (int i = 0; i < max; i++)
|
||||
{
|
||||
if (Watch.Domain.ToString() == DomainComboBox.Items[i].ToString())
|
||||
{
|
||||
DomainComboBox.SelectedIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void populateMemoryDomainComboBox()
|
||||
{
|
||||
DomainComboBox.Items.Clear();
|
||||
if (Global.Emulator.MemoryDomains.Count > 0)
|
||||
{
|
||||
foreach (MemoryDomain t in Global.Emulator.MemoryDomains)
|
||||
{
|
||||
DomainComboBox.Items.Add(t.ToString());
|
||||
}
|
||||
}
|
||||
setDomainSelection();
|
||||
}
|
||||
|
||||
private void setAddressBox()
|
||||
{
|
||||
AddressBox.Text = String.Format("{0:X" + getNumDigits(Watch.Domain.Size - 1) + "}", Watch.Address);
|
||||
}
|
||||
|
||||
private void setSignedRadio()
|
||||
{
|
||||
switch (Watch.Signed)
|
||||
{
|
||||
case Watch_Legacy.DISPTYPE.SIGNED:
|
||||
SignedRadio.Checked = true;
|
||||
break;
|
||||
case Watch_Legacy.DISPTYPE.UNSIGNED:
|
||||
UnsignedRadio.Checked = true;
|
||||
break;
|
||||
case Watch_Legacy.DISPTYPE.HEX:
|
||||
HexRadio.Checked = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private int getNumDigits(Int32 i)
|
||||
{
|
||||
if (i < 0x10000) return 4;
|
||||
if (i < 0x1000000) return 6;
|
||||
if (i < 0x10000000) return 7;
|
||||
else return 8;
|
||||
SetAddressBoxProperties();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
Loading…
Reference in New Issue