add auto-start and auto-save to CDL; fix toolbar to be ToolStripEx, so it doesnt suck

This commit is contained in:
zeromus 2016-05-07 10:10:26 -05:00
parent 53c7f4e5be
commit 0cc27a226b
4 changed files with 640 additions and 562 deletions

View File

@ -127,6 +127,7 @@ namespace BizHawk.Client.Common
public DateTime? Update_LastCheckTimeUTC = null;
public string Update_LatestVersion = "";
public string Update_IgnoreVersion = "";
public bool CDLAutoSave = true, CDLAutoStart = true;
//public bool TurboSeek = true; // When PauseOnFrame is set, this will decide whether the client goes into turbo mode or not

View File

@ -38,16 +38,20 @@
this.AppendMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.RecentSubMenu = new System.Windows.Forms.ToolStripMenuItem();
this.noneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.miAutoStart = new System.Windows.Forms.ToolStripMenuItem();
this.miAutoSave = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.ClearMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.DisassembleMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.ExitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStrip1 = new ToolStripEx();
this.tsbLoggingActive = new System.Windows.Forms.ToolStripButton();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.tsbViewUpdate = new System.Windows.Forms.ToolStripButton();
this.tsbViewStyle = new System.Windows.Forms.ToolStripComboBox();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.tsbExportText = new System.Windows.Forms.ToolStripButton();
this.lvCDL = new BizHawk.Client.EmuHawk.VirtualListView();
this.colAddress = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.colDomain = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
@ -62,8 +66,6 @@
this.colFlag20 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.colFlag40 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.colFlag80 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.tsbExportText = new System.Windows.Forms.ToolStripButton();
this.menuStrip1.SuspendLayout();
this.toolStrip1.SuspendLayout();
this.SuspendLayout();
@ -88,6 +90,8 @@
this.SaveAsMenuItem,
this.AppendMenuItem,
this.RecentSubMenu,
this.miAutoStart,
this.miAutoSave,
this.toolStripSeparator2,
this.ClearMenuItem,
this.DisassembleMenuItem,
@ -157,6 +161,19 @@
this.noneToolStripMenuItem.Size = new System.Drawing.Size(99, 22);
this.noneToolStripMenuItem.Text = "None";
//
// miAutoStart
//
this.miAutoStart.Name = "miAutoStart";
this.miAutoStart.Size = new System.Drawing.Size(193, 22);
this.miAutoStart.Text = "Auto-Start";
this.miAutoStart.Click += new System.EventHandler(this.miAutoStart_Click);
//
// miAutoSave
//
this.miAutoSave.Name = "miAutoSave";
this.miAutoSave.Size = new System.Drawing.Size(193, 22);
this.miAutoSave.Text = "Auto-Save";
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
@ -191,6 +208,7 @@
//
// toolStrip1
//
this.toolStrip1.ClickThrough = true;
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.tsbLoggingActive,
this.toolStripSeparator3,
@ -243,6 +261,20 @@
this.tsbViewStyle.Size = new System.Drawing.Size(121, 25);
this.tsbViewStyle.SelectedIndexChanged += new System.EventHandler(this.tsbViewStyle_SelectedIndexChanged);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(6, 25);
//
// tsbExportText
//
this.tsbExportText.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.LoadConfig;
this.tsbExportText.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsbExportText.Name = "tsbExportText";
this.tsbExportText.Size = new System.Drawing.Size(87, 22);
this.tsbExportText.Text = "To Clipboard";
this.tsbExportText.Click += new System.EventHandler(this.tsbExportText_Click);
//
// lvCDL
//
this.lvCDL.BlazingFast = false;
@ -333,20 +365,6 @@
//
this.colFlag80.Text = "0x80";
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(6, 25);
//
// tsbExportText
//
this.tsbExportText.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.LoadConfig;
this.tsbExportText.ImageTransparentColor = System.Drawing.Color.Magenta;
this.tsbExportText.Name = "tsbExportText";
this.tsbExportText.Size = new System.Drawing.Size(87, 22);
this.tsbExportText.Text = "To Clipboard";
this.tsbExportText.Click += new System.EventHandler(this.tsbExportText_Click);
//
// CDL
//
this.AllowDrop = true;
@ -390,7 +408,6 @@
private System.Windows.Forms.ToolStripMenuItem RecentSubMenu;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.ToolStripMenuItem noneToolStripMenuItem;
private System.Windows.Forms.ToolStrip toolStrip1;
private System.Windows.Forms.ToolStripButton tsbLoggingActive;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private System.Windows.Forms.ToolStripButton tsbViewUpdate;
@ -411,6 +428,9 @@
private System.Windows.Forms.ColumnHeader colFlag80;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
private System.Windows.Forms.ToolStripButton tsbExportText;
private System.Windows.Forms.ToolStripMenuItem miAutoStart;
private System.Windows.Forms.ToolStripMenuItem miAutoSave;
private ToolStripEx toolStrip1;
}
}

View File

@ -182,6 +182,30 @@ namespace BizHawk.Client.EmuHawk
public bool AskSaveChanges()
{
//nothing to fear:
if (_cdl == null)
return true;
//try auto-saving if appropriate
if (Global.Config.CDLAutoSave)
{
//TODO - I dont like this system. It's hard to figure out how to use it. It should be done in multiple passes.
var result = MessageBox.Show("Save changes to CDL session?", "CDL Auto Save", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
return true;
if (string.IsNullOrWhiteSpace(_currentFilename))
{
if (!RunSaveAs())
return false;
}
else
{
RunSave();
return true;
}
}
return true;
}
@ -209,7 +233,7 @@ namespace BizHawk.Client.EmuHawk
//ok, it's all good:
_cdl = newCDL;
CodeDataLogger.SetCDL(null);
if (tsbLoggingActive.Checked)
if (tsbLoggingActive.Checked || Global.Config.CDLAutoStart)
CodeDataLogger.SetCDL(_cdl);
SetCurrentFilename(path);
@ -226,6 +250,9 @@ namespace BizHawk.Client.EmuHawk
ClearMenuItem.Enabled =
DisassembleMenuItem.Enabled =
_cdl != null;
miAutoSave.Checked = Global.Config.CDLAutoSave;
miAutoStart.Checked = Global.Config.CDLAutoStart;
}
private void RecentSubMenu_DropDownOpened(object sender, EventArgs e)
@ -239,7 +266,7 @@ namespace BizHawk.Client.EmuHawk
_cdl = new CodeDataLog();
CodeDataLogger.NewCDL(_cdl);
if (tsbLoggingActive.Checked)
if (tsbLoggingActive.Checked || Global.Config.CDLAutoStart)
CodeDataLogger.SetCDL(_cdl);
else CodeDataLogger.SetCDL(null);
@ -283,44 +310,49 @@ namespace BizHawk.Client.EmuHawk
LoadFile(file.FullName);
}
private void SaveMenuItem_Click(object sender, EventArgs e)
void RunSave()
{
if (string.IsNullOrWhiteSpace(_currentFilename))
{
RunSaveAs();
return;
}
_recent.Add(_currentFilename);
using (var fs = new FileStream(_currentFilename, FileMode.Create, FileAccess.Write))
{
_cdl.Save(fs);
}
}
void RunSaveAs()
private void SaveMenuItem_Click(object sender, EventArgs e)
{
if (_cdl == null)
{
MessageBox.Show(this, "Cannot save with no CDL loaded!", "Alert");
return;
}
else
{
var file = SaveFileDialog(
_currentFilename,
PathManager.MakeAbsolutePath(Global.Config.PathEntries.LogPathFragment, null),
"Code Data Logger Files",
"cdl");
if (file != null)
{
using (var fs = new FileStream(file.FullName, FileMode.Create, FileAccess.Write))
{
_cdl.Save(fs);
_recent.Add(file.FullName);
SetCurrentFilename(file.FullName);
}
}
if (string.IsNullOrWhiteSpace(_currentFilename))
{
RunSaveAs();
return;
}
RunSave();
}
/// <summary>
/// returns false if the operation was canceled
/// </summary>
bool RunSaveAs()
{
var file = SaveFileDialog(
_currentFilename,
PathManager.MakeAbsolutePath(Global.Config.PathEntries.LogPathFragment, null),
"Code Data Logger Files",
"cdl");
if (file == null)
return false;
SetCurrentFilename(file.FullName);
RunSave();
return true;
}
private void SaveAsMenuItem_Click(object sender, EventArgs e)
@ -401,6 +433,20 @@ namespace BizHawk.Client.EmuHawk
Close();
}
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
if (!AskSaveChanges())
e.Cancel = true;
base.OnClosing(e);
}
protected override void OnShown(EventArgs e)
{
if (Global.Config.CDLAutoStart)
NewFileLogic();
base.OnShown(e);
}
protected override void OnClosed(EventArgs e)
{
//deactivate logger
@ -463,5 +509,17 @@ namespace BizHawk.Client.EmuHawk
}
Clipboard.SetText(sw.ToString());
}
private void miAutoSave_Click(object sender, EventArgs e)
{
Global.Config.CDLAutoSave ^= true;
}
private void miAutoStart_Click(object sender, EventArgs e)
{
Global.Config.CDLAutoStart ^= true;
}
}
}

View File

@ -173,5 +173,4 @@
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAwAMAAP+BAAD/AAAA/wAAAP8QAAD/8QAA
</value>
</data>
>>>>>>> refs/remotes/TASVideos/master
</root>