Progress on new watch editor
This commit is contained in:
parent
e49c00ac36
commit
ddb6adf593
|
@ -193,13 +193,13 @@
|
||||||
// NewWatchStripButton1
|
// NewWatchStripButton1
|
||||||
//
|
//
|
||||||
this.NewWatchStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
this.NewWatchStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
this.NewWatchStripButton1.Enabled = false;
|
|
||||||
this.NewWatchStripButton1.Image = global::BizHawk.MultiClient.Properties.Resources.FindHS;
|
this.NewWatchStripButton1.Image = global::BizHawk.MultiClient.Properties.Resources.FindHS;
|
||||||
this.NewWatchStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
this.NewWatchStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
this.NewWatchStripButton1.Name = "NewWatchStripButton1";
|
this.NewWatchStripButton1.Name = "NewWatchStripButton1";
|
||||||
this.NewWatchStripButton1.Size = new System.Drawing.Size(23, 22);
|
this.NewWatchStripButton1.Size = new System.Drawing.Size(23, 22);
|
||||||
this.NewWatchStripButton1.Text = "New Watch";
|
this.NewWatchStripButton1.Text = "New Watch";
|
||||||
this.NewWatchStripButton1.ToolTipText = "New Watch";
|
this.NewWatchStripButton1.ToolTipText = "New Watch";
|
||||||
|
this.NewWatchStripButton1.Click += new System.EventHandler(this.newWatchToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// EditWatchToolStripButton1
|
// EditWatchToolStripButton1
|
||||||
//
|
//
|
||||||
|
@ -445,12 +445,12 @@
|
||||||
//
|
//
|
||||||
// newWatchToolStripMenuItem
|
// newWatchToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.newWatchToolStripMenuItem.Enabled = false;
|
|
||||||
this.newWatchToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.FindHS;
|
this.newWatchToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.FindHS;
|
||||||
this.newWatchToolStripMenuItem.Name = "newWatchToolStripMenuItem";
|
this.newWatchToolStripMenuItem.Name = "newWatchToolStripMenuItem";
|
||||||
this.newWatchToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W)));
|
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.Size = new System.Drawing.Size(224, 22);
|
||||||
this.newWatchToolStripMenuItem.Text = "&New Watch";
|
this.newWatchToolStripMenuItem.Text = "&New Watch";
|
||||||
|
this.newWatchToolStripMenuItem.Click += new System.EventHandler(this.newWatchToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// editWatchToolStripMenuItem
|
// editWatchToolStripMenuItem
|
||||||
//
|
//
|
||||||
|
|
|
@ -167,8 +167,7 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
private void UpdateWatchCount()
|
private void UpdateWatchCount()
|
||||||
{
|
{
|
||||||
int count = Watches.WatchCount;
|
WatchCountLabel.Text = Watches.WatchCount.ToString() + (Watches.WatchCount == 1 ? " watch" : " watches");
|
||||||
WatchCountLabel.Text = count.ToString() + (count == 1 ? " watch" : " watches");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetPlatformAndMemoryDomainLabel()
|
private void SetPlatformAndMemoryDomainLabel()
|
||||||
|
@ -214,6 +213,7 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
|
|
||||||
DisplayWatches();
|
DisplayWatches();
|
||||||
|
UpdateWatchCount();
|
||||||
Watches.Changes = false;
|
Watches.Changes = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -347,6 +347,30 @@ namespace BizHawk.MultiClient
|
||||||
DisplayWatches();
|
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
|
#region Winform Events
|
||||||
|
|
||||||
private void NewRamWatch_Load(object sender, EventArgs e)
|
private void NewRamWatch_Load(object sender, EventArgs e)
|
||||||
|
@ -470,6 +494,11 @@ namespace BizHawk.MultiClient
|
||||||
memoryDomainsToolStripMenuItem.DropDownItems.AddRange(ToolHelpers.GenerateMemoryDomainMenuItems(SetMemoryDomain, Watches.Domain.Name));
|
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)
|
private void removeWatchToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ListView.SelectedIndexCollection indexes = WatchListView.SelectedIndices;
|
ListView.SelectedIndexCollection indexes = WatchListView.SelectedIndices;
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RamWatchNewWatch));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RamWatchNewWatch));
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
this.label2 = 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.NotesBox = new System.Windows.Forms.TextBox();
|
||||||
this.DataTypeGroupBox = new System.Windows.Forms.GroupBox();
|
this.DataTypeGroupBox = new System.Windows.Forms.GroupBox();
|
||||||
this.HexRadio = new System.Windows.Forms.RadioButton();
|
this.HexRadio = new System.Windows.Forms.RadioButton();
|
||||||
|
@ -245,6 +245,7 @@
|
||||||
//
|
//
|
||||||
// DomainComboBox
|
// DomainComboBox
|
||||||
//
|
//
|
||||||
|
this.DomainComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.DomainComboBox.FormattingEnabled = true;
|
this.DomainComboBox.FormattingEnabled = true;
|
||||||
this.DomainComboBox.Location = new System.Drawing.Point(12, 230);
|
this.DomainComboBox.Location = new System.Drawing.Point(12, 230);
|
||||||
this.DomainComboBox.Name = "DomainComboBox";
|
this.DomainComboBox.Name = "DomainComboBox";
|
||||||
|
|
|
@ -693,6 +693,12 @@ namespace BizHawk.MultiClient
|
||||||
Changes = true;
|
Changes = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddRange(IList<Watch> watches)
|
||||||
|
{
|
||||||
|
_watchList.AddRange(watches);
|
||||||
|
Changes = true;
|
||||||
|
}
|
||||||
|
|
||||||
public void Remove(Watch watch)
|
public void Remove(Watch watch)
|
||||||
{
|
{
|
||||||
_watchList.Remove(watch);
|
_watchList.Remove(watch);
|
||||||
|
|
|
@ -32,24 +32,10 @@
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.AddressBox = new BizHawk.HexTextBox();
|
this.AddressBox = new BizHawk.HexTextBox();
|
||||||
this.NotesBox = new System.Windows.Forms.TextBox();
|
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.OK = new System.Windows.Forms.Button();
|
||||||
this.Cancel = new System.Windows.Forms.Button();
|
this.Cancel = new System.Windows.Forms.Button();
|
||||||
this.label6 = new System.Windows.Forms.Label();
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
this.DomainComboBox = new System.Windows.Forms.ComboBox();
|
this.DomainComboBox = new System.Windows.Forms.ComboBox();
|
||||||
this.DataTypeGroupBox.SuspendLayout();
|
|
||||||
this.DataSizeBox.SuspendLayout();
|
|
||||||
this.EndianBox.SuspendLayout();
|
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// label1
|
// label1
|
||||||
|
@ -79,7 +65,6 @@
|
||||||
this.AddressBox.Size = new System.Drawing.Size(100, 20);
|
this.AddressBox.Size = new System.Drawing.Size(100, 20);
|
||||||
this.AddressBox.TabIndex = 2;
|
this.AddressBox.TabIndex = 2;
|
||||||
this.AddressBox.Text = "00000000";
|
this.AddressBox.Text = "00000000";
|
||||||
this.AddressBox.Leave += new System.EventHandler(this.AddressBox_Leave);
|
|
||||||
//
|
//
|
||||||
// NotesBox
|
// NotesBox
|
||||||
//
|
//
|
||||||
|
@ -89,127 +74,6 @@
|
||||||
this.NotesBox.Size = new System.Drawing.Size(100, 20);
|
this.NotesBox.Size = new System.Drawing.Size(100, 20);
|
||||||
this.NotesBox.TabIndex = 3;
|
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
|
// OK
|
||||||
//
|
//
|
||||||
this.OK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.OK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
@ -244,6 +108,7 @@
|
||||||
//
|
//
|
||||||
// DomainComboBox
|
// DomainComboBox
|
||||||
//
|
//
|
||||||
|
this.DomainComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
this.DomainComboBox.FormattingEnabled = true;
|
this.DomainComboBox.FormattingEnabled = true;
|
||||||
this.DomainComboBox.Location = new System.Drawing.Point(12, 230);
|
this.DomainComboBox.Location = new System.Drawing.Point(12, 230);
|
||||||
this.DomainComboBox.Name = "DomainComboBox";
|
this.DomainComboBox.Name = "DomainComboBox";
|
||||||
|
@ -262,9 +127,6 @@
|
||||||
this.Controls.Add(this.DomainComboBox);
|
this.Controls.Add(this.DomainComboBox);
|
||||||
this.Controls.Add(this.Cancel);
|
this.Controls.Add(this.Cancel);
|
||||||
this.Controls.Add(this.OK);
|
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.NotesBox);
|
||||||
this.Controls.Add(this.AddressBox);
|
this.Controls.Add(this.AddressBox);
|
||||||
this.Controls.Add(this.label2);
|
this.Controls.Add(this.label2);
|
||||||
|
@ -275,12 +137,6 @@
|
||||||
this.Name = "WatchEditor";
|
this.Name = "WatchEditor";
|
||||||
this.Text = "New Watch";
|
this.Text = "New Watch";
|
||||||
this.Load += new System.EventHandler(this.RamWatchNewWatch_Load);
|
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.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
|
@ -291,18 +147,7 @@
|
||||||
private System.Windows.Forms.Label label1;
|
private System.Windows.Forms.Label label1;
|
||||||
private System.Windows.Forms.Label label2;
|
private System.Windows.Forms.Label label2;
|
||||||
private HexTextBox AddressBox;
|
private HexTextBox AddressBox;
|
||||||
private System.Windows.Forms.TextBox NotesBox;
|
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.Button OK;
|
private System.Windows.Forms.Button OK;
|
||||||
private System.Windows.Forms.Button Cancel;
|
private System.Windows.Forms.Button Cancel;
|
||||||
private System.Windows.Forms.Label label6;
|
private System.Windows.Forms.Label label6;
|
||||||
|
|
|
@ -1,246 +1,117 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace BizHawk.MultiClient
|
namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
public partial class WatchEditor : Form
|
public partial class WatchEditor : Form
|
||||||
{
|
{
|
||||||
public Watch_Legacy Watch = new Watch_Legacy();
|
public enum Mode { New, Duplicate, Edit };
|
||||||
public bool SelectionWasMade = false;
|
|
||||||
public Point location = new Point();
|
|
||||||
|
|
||||||
private bool DoNotResetAddress;
|
private List<Watch> _watchList = new List<Watch>();
|
||||||
|
private Mode _mode = Mode.New;
|
||||||
|
private bool _loading = true;
|
||||||
|
private string _addressFormatStr = "{0:X2}";
|
||||||
|
|
||||||
|
public Mode EditorMode { get { return _mode; } }
|
||||||
|
public List<Watch> Watches { get { return _watchList; } }
|
||||||
|
public Point InitialLocation = new Point(0, 0);
|
||||||
|
|
||||||
public WatchEditor()
|
public WatchEditor()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
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
|
if (InitialLocation.X > 0 || InitialLocation.Y > 0)
|
||||||
Watch = new Watch_Legacy(watch);
|
{
|
||||||
Text = message;
|
Location = InitialLocation;
|
||||||
|
}
|
||||||
|
_loading = false;
|
||||||
|
SetAddressBoxProperties();
|
||||||
|
}
|
||||||
|
|
||||||
NotesBox.Text = watch.Notes;
|
public void SetWatch(MemoryDomain domain = null, List<Watch> watches = null, Mode mode = Mode.New)
|
||||||
setTypeRadio();
|
{
|
||||||
setSignedRadio();
|
if (watches != null)
|
||||||
setEndianBox();
|
{
|
||||||
setDomainSelection();
|
_watchList.AddRange(watches);
|
||||||
setAddressBox();
|
}
|
||||||
|
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
|
#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)
|
private void Cancel_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
SelectionWasMade = false;
|
DialogResult = DialogResult.Cancel;
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OK_Click(object sender, EventArgs e)
|
private void OK_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
//Put user settings in the watch file
|
DialogResult = DialogResult.OK;
|
||||||
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();
|
|
||||||
|
|
||||||
return;
|
//TODO
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
Close();
|
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)
|
private void DomainComboBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (!DoNotResetAddress)
|
SetAddressBoxProperties();
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
Loading…
Reference in New Issue