Checking in some RamWatch progress

This commit is contained in:
andres.delikat 2011-01-18 17:17:14 +00:00
parent 3c7534e92a
commit c3ef10f815
3 changed files with 110 additions and 10 deletions

View File

@ -58,6 +58,7 @@
this.Address = new System.Windows.Forms.ColumnHeader(); this.Address = new System.Windows.Forms.ColumnHeader();
this.Value = new System.Windows.Forms.ColumnHeader(); this.Value = new System.Windows.Forms.ColumnHeader();
this.Notes = new System.Windows.Forms.ColumnHeader(); this.Notes = new System.Windows.Forms.ColumnHeader();
this.listBox1 = new System.Windows.Forms.ListBox();
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
this.toolStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
@ -69,7 +70,7 @@
this.watchesToolStripMenuItem}); this.watchesToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(375, 24); this.menuStrip1.Size = new System.Drawing.Size(485, 24);
this.menuStrip1.TabIndex = 0; this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.Text = "menuStrip1";
// //
@ -241,7 +242,7 @@
this.Notes}); this.Notes});
this.WatchListView.Location = new System.Drawing.Point(34, 52); this.WatchListView.Location = new System.Drawing.Point(34, 52);
this.WatchListView.Name = "WatchListView"; this.WatchListView.Name = "WatchListView";
this.WatchListView.Size = new System.Drawing.Size(307, 403); this.WatchListView.Size = new System.Drawing.Size(232, 403);
this.WatchListView.TabIndex = 1; this.WatchListView.TabIndex = 1;
this.WatchListView.UseCompatibleStateImageBehavior = false; this.WatchListView.UseCompatibleStateImageBehavior = false;
// //
@ -253,7 +254,7 @@
this.toolStripButton3}); this.toolStripButton3});
this.toolStrip1.Location = new System.Drawing.Point(0, 24); this.toolStrip1.Location = new System.Drawing.Point(0, 24);
this.toolStrip1.Name = "toolStrip1"; this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(375, 25); this.toolStrip1.Size = new System.Drawing.Size(485, 25);
this.toolStrip1.TabIndex = 2; this.toolStrip1.TabIndex = 2;
this.toolStrip1.Text = "toolStrip1"; this.toolStrip1.Text = "toolStrip1";
// //
@ -297,11 +298,20 @@
// //
this.Notes.Text = "Notes"; this.Notes.Text = "Notes";
// //
// listBox1
//
this.listBox1.FormattingEnabled = true;
this.listBox1.Location = new System.Drawing.Point(311, 88);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(120, 95);
this.listBox1.TabIndex = 3;
//
// RamWatch // RamWatch
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(375, 467); this.ClientSize = new System.Drawing.Size(485, 467);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.toolStrip1); this.Controls.Add(this.toolStrip1);
this.Controls.Add(this.WatchListView); this.Controls.Add(this.WatchListView);
this.Controls.Add(this.menuStrip1); this.Controls.Add(this.menuStrip1);
@ -349,5 +359,6 @@
private System.Windows.Forms.ColumnHeader Address; private System.Windows.Forms.ColumnHeader Address;
private System.Windows.Forms.ColumnHeader Value; private System.Windows.Forms.ColumnHeader Value;
private System.Windows.Forms.ColumnHeader Notes; private System.Windows.Forms.ColumnHeader Notes;
private System.Windows.Forms.ListBox listBox1;
} }
} }

View File

@ -6,11 +6,15 @@ using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using System.IO;
namespace BizHawk.MultiClient namespace BizHawk.MultiClient
{ {
public partial class RamWatch : Form public partial class RamWatch : Form
{ {
//TODO: Recent files & autoload
//Keep track of changes to watch list in order to prompt the user to save changes
List<Watch> watchList = new List<Watch>(); List<Watch> watchList = new List<Watch>();
public RamWatch() public RamWatch()
@ -18,6 +22,63 @@ namespace BizHawk.MultiClient
InitializeComponent(); InitializeComponent();
} }
void TempDisplayWatchInTempList(Watch watch)
{
string temp = watch.address + " " + watch.value + " " + watch.notes;
listBox1.Items.Add(temp);
}
public int HowMany(string str, char c) //Shouldn't something like this exist already? Counts how many times c in in str
{
int count = 0;
for (int x = 0; x < str.Length; x++)
{
if (str[x] == c)
count++;
}
return count;
}
bool LoadWatchFile(string path)
{
var file = new FileInfo(path);
if (file.Exists == false) return false;
using (StreamReader sr = file.OpenText())
{
string s = "";
string temp = "";
watchList.Clear(); //Wipe existing list and read from file
while ((s = sr.ReadLine()) != null)
{
//parse each line and add to watchList
//.wch files from other emulators start with a number representing the number of watch, that line can be discarded here
//Any properly formatted line couldn't possibly be this short anyway, this also takes care of any garbage lines that might be in a file
if (s.Length < 5) continue;
int z = HowMany(s, '\t');
if (z == 5)
{
//If 5, then this is a .wch file format made from another emulator, the first column (watch position) is not needed here
int y = s.IndexOf('\t') + 1;
s = s.Substring(y, s.Length - y - 1); //5 digit value representing the watch position number
}
else if (z != 4)
continue; //If not 4, something is wrong with this line, ignore it
Watch w = new Watch();
temp = s.Substring(0, s.IndexOf('\t'));
//w.address = int.Parse(temp);
}
}
return true;
}
void AddNewWatch() void AddNewWatch()
{ {
} }
@ -54,7 +115,19 @@ namespace BizHawk.MultiClient
private void openToolStripMenuItem_Click(object sender, EventArgs e) private void openToolStripMenuItem_Click(object sender, EventArgs e)
{ {
var ofd = new OpenFileDialog();
ofd.InitialDirectory = Global.Config.LastRomPath;
ofd.Filter = "Watch Files (*.wch)|*.wch|All Files|*.*";
ofd.RestoreDirectory = true;
Global.Sound.StopSound();
var result = ofd.ShowDialog();
Global.Sound.StartSound();
if (result != DialogResult.OK)
return;
var file = new FileInfo(ofd.FileName);
Global.Config.LastRomPath = file.DirectoryName;
LoadWatchFile(file.FullName);
} }
private void saveToolStripMenuItem_Click(object sender, EventArgs e) private void saveToolStripMenuItem_Click(object sender, EventArgs e)
@ -115,11 +188,27 @@ namespace BizHawk.MultiClient
private void RamWatch_Load(object sender, EventArgs e) private void RamWatch_Load(object sender, EventArgs e)
{ {
Watch watch1 = new Watch(); Watch watch1 = new Watch();
watch1.notes = "Test"; watch1.notes = "Test1";
watchList.Add(watch1);
Watch watch2 = new Watch(0x00FF, 256, atype.BYTE, asigned.SIGNED, true, "This is a test");
Watch watch3 = new Watch(0x00FE, 256, atype.BYTE, asigned.SIGNED, true, "This is a test too");
Watch watch4 = new Watch(0x00FD, 256, atype.BYTE, asigned.SIGNED, true, "Stuff");
watchList.Add(watch2);
watchList.Add(watch3);
watchList.Add(watch4);
ListViewItem item1 = new ListViewItem(watch1.address.ToString(), 0); ListViewItem item1 = new ListViewItem(watch1.address.ToString(), 0);
WatchListView.Items.Add(item1); WatchListView.Items.Add(item1);
item1 = new ListViewItem(watch1.value.ToString(), 0);
WatchListView.Items.Add(item1);
item1 = new ListViewItem(watch1.notes, 0);
WatchListView.Items.Add(item1);
for (int x = 0; x < watchList.Count; x++)
TempDisplayWatchInTempList(watchList[x]);
} }
} }
} }

View File

@ -16,23 +16,23 @@ namespace BizHawk.MultiClient
value = 0; value = 0;
type = atype.BYTE; type = atype.BYTE;
signed = asigned.SIGNED; signed = asigned.SIGNED;
endian = false; bigendian = false;
notes = ""; notes = "";
} }
public Watch(int Address, int Value, atype Type, asigned Signed, bool Endian, string Notes) public Watch(int Address, int Value, atype Type, asigned Signed, bool BigEndian, string Notes)
{ {
address = Address; address = Address;
value = Value; value = Value;
type = Type; type = Type;
signed = Signed; signed = Signed;
endian = Endian; bigendian = BigEndian;
notes = Notes; notes = Notes;
} }
public int address { get; set; } public int address { get; set; }
public int value { get; set; } //Current value public int value { get; set; } //Current value
public atype type { get; set; } //Address type (byte, word, dword, etc public atype type { get; set; } //Address type (byte, word, dword, etc
public asigned signed { get; set; } //Signed/Unsigned? public asigned signed { get; set; } //Signed/Unsigned?
public bool endian { get; set; } public bool bigendian { get; set; }
public string notes { get; set; } //User notes public string notes { get; set; } //User notes
} }
} }