Lua - add option to detect changes in scripts and automatically reload them. Have this option off by default for now. Also fix reloading of scripts which was recently broken.

This commit is contained in:
adelikat 2016-02-06 13:50:02 -05:00
parent d0d5df44c9
commit 487fce328b
5 changed files with 200 additions and 133 deletions

View File

@ -339,6 +339,7 @@ namespace BizHawk.Client.Common
public bool DisableLuaScriptsOnLoad = false; public bool DisableLuaScriptsOnLoad = false;
public bool ToggleAllIfNoneSelected = true; public bool ToggleAllIfNoneSelected = true;
public bool RemoveRegisteredFunctionsOnToggle = true; public bool RemoveRegisteredFunctionsOnToggle = true;
public bool LuaReloadOnScriptFileChange = false;
public bool RunLuaDuringTurbo = true; public bool RunLuaDuringTurbo = true;
// Watch Settings // Watch Settings

View File

@ -31,15 +31,6 @@ namespace BizHawk.Client.Common
State = RunState.Disabled; State = RunState.Disabled;
} }
//public LuaFile(LuaFile file)
//{
// Name = file.Name;
// Path = file.Path;
// State = file.State;
// IsSeparator = file.IsSeparator;
// CurrentDirectory = file.CurrentDirectory;
//}
public string Name { get; set; } public string Name { get; set; }
public string Path { get; set; } public string Path { get; set; }
public bool Enabled { get { return State != RunState.Disabled; } } public bool Enabled { get { return State != RunState.Disabled; } }

View File

@ -103,6 +103,7 @@
this.PathName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.PathName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.imageList1 = new System.Windows.Forms.ImageList(this.components); this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.ReloadWhenScriptFileChangesMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ScriptListContextMenu.SuspendLayout(); this.ScriptListContextMenu.SuspendLayout();
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
this.ConsoleContextMenu.SuspendLayout(); this.ConsoleContextMenu.SuspendLayout();
@ -125,14 +126,14 @@
this.ScriptContextSeparator, this.ScriptContextSeparator,
this.StopAllScriptsContextItem}); this.StopAllScriptsContextItem});
this.ScriptListContextMenu.Name = "contextMenuStrip1"; this.ScriptListContextMenu.Name = "contextMenuStrip1";
this.ScriptListContextMenu.Size = new System.Drawing.Size(169, 142); this.ScriptListContextMenu.Size = new System.Drawing.Size(165, 142);
this.ScriptListContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ScriptListContextMenu_Opening); this.ScriptListContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ScriptListContextMenu_Opening);
// //
// ToggleScriptContextItem // ToggleScriptContextItem
// //
this.ToggleScriptContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Refresh1; this.ToggleScriptContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Refresh1;
this.ToggleScriptContextItem.Name = "ToggleScriptContextItem"; this.ToggleScriptContextItem.Name = "ToggleScriptContextItem";
this.ToggleScriptContextItem.Size = new System.Drawing.Size(168, 22); this.ToggleScriptContextItem.Size = new System.Drawing.Size(164, 22);
this.ToggleScriptContextItem.Text = "&Toggle"; this.ToggleScriptContextItem.Text = "&Toggle";
this.ToggleScriptContextItem.Click += new System.EventHandler(this.ToggleScriptMenuItem_Click); this.ToggleScriptContextItem.Click += new System.EventHandler(this.ToggleScriptMenuItem_Click);
// //
@ -140,7 +141,7 @@
// //
this.PauseScriptContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Pause; this.PauseScriptContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Pause;
this.PauseScriptContextItem.Name = "PauseScriptContextItem"; this.PauseScriptContextItem.Name = "PauseScriptContextItem";
this.PauseScriptContextItem.Size = new System.Drawing.Size(168, 22); this.PauseScriptContextItem.Size = new System.Drawing.Size(164, 22);
this.PauseScriptContextItem.Text = "Pause or Resume"; this.PauseScriptContextItem.Text = "Pause or Resume";
this.PauseScriptContextItem.Click += new System.EventHandler(this.PauseScriptMenuItem_Click); this.PauseScriptContextItem.Click += new System.EventHandler(this.PauseScriptMenuItem_Click);
// //
@ -148,7 +149,7 @@
// //
this.EditScriptContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.CutHS; this.EditScriptContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.CutHS;
this.EditScriptContextItem.Name = "EditScriptContextItem"; this.EditScriptContextItem.Name = "EditScriptContextItem";
this.EditScriptContextItem.Size = new System.Drawing.Size(168, 22); this.EditScriptContextItem.Size = new System.Drawing.Size(164, 22);
this.EditScriptContextItem.Text = "&Edit"; this.EditScriptContextItem.Text = "&Edit";
this.EditScriptContextItem.Click += new System.EventHandler(this.EditScriptMenuItem_Click); this.EditScriptContextItem.Click += new System.EventHandler(this.EditScriptMenuItem_Click);
// //
@ -156,7 +157,7 @@
// //
this.RemoveScriptContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Close; this.RemoveScriptContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Close;
this.RemoveScriptContextItem.Name = "RemoveScriptContextItem"; this.RemoveScriptContextItem.Name = "RemoveScriptContextItem";
this.RemoveScriptContextItem.Size = new System.Drawing.Size(168, 22); this.RemoveScriptContextItem.Size = new System.Drawing.Size(164, 22);
this.RemoveScriptContextItem.Text = "&Remove"; this.RemoveScriptContextItem.Text = "&Remove";
this.RemoveScriptContextItem.Click += new System.EventHandler(this.RemoveScriptMenuItem_Click); this.RemoveScriptContextItem.Click += new System.EventHandler(this.RemoveScriptMenuItem_Click);
// //
@ -164,20 +165,20 @@
// //
this.InsertSeperatorContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.InsertSeparator; this.InsertSeperatorContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.InsertSeparator;
this.InsertSeperatorContextItem.Name = "InsertSeperatorContextItem"; this.InsertSeperatorContextItem.Name = "InsertSeperatorContextItem";
this.InsertSeperatorContextItem.Size = new System.Drawing.Size(168, 22); this.InsertSeperatorContextItem.Size = new System.Drawing.Size(164, 22);
this.InsertSeperatorContextItem.Text = "Insert Seperator"; this.InsertSeperatorContextItem.Text = "Insert Seperator";
this.InsertSeperatorContextItem.Click += new System.EventHandler(this.InsertSeparatorMenuItem_Click); this.InsertSeperatorContextItem.Click += new System.EventHandler(this.InsertSeparatorMenuItem_Click);
// //
// ScriptContextSeparator // ScriptContextSeparator
// //
this.ScriptContextSeparator.Name = "ScriptContextSeparator"; this.ScriptContextSeparator.Name = "ScriptContextSeparator";
this.ScriptContextSeparator.Size = new System.Drawing.Size(165, 6); this.ScriptContextSeparator.Size = new System.Drawing.Size(161, 6);
// //
// StopAllScriptsContextItem // StopAllScriptsContextItem
// //
this.StopAllScriptsContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Stop; this.StopAllScriptsContextItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Stop;
this.StopAllScriptsContextItem.Name = "StopAllScriptsContextItem"; this.StopAllScriptsContextItem.Name = "StopAllScriptsContextItem";
this.StopAllScriptsContextItem.Size = new System.Drawing.Size(168, 22); this.StopAllScriptsContextItem.Size = new System.Drawing.Size(164, 22);
this.StopAllScriptsContextItem.Text = "Stop All Scripts"; this.StopAllScriptsContextItem.Text = "Stop All Scripts";
this.StopAllScriptsContextItem.Click += new System.EventHandler(this.StopAllScriptsMenuItem_Click); this.StopAllScriptsContextItem.Click += new System.EventHandler(this.StopAllScriptsMenuItem_Click);
// //
@ -208,7 +209,7 @@
this.toolStripSeparator1, this.toolStripSeparator1,
this.ExitMenuItem}); this.ExitMenuItem});
this.FileSubMenu.Name = "FileSubMenu"; this.FileSubMenu.Name = "FileSubMenu";
this.FileSubMenu.Size = new System.Drawing.Size(35, 20); this.FileSubMenu.Size = new System.Drawing.Size(37, 20);
this.FileSubMenu.Text = "&File"; this.FileSubMenu.Text = "&File";
this.FileSubMenu.DropDownOpened += new System.EventHandler(this.FileSubMenu_DropDownOpened); this.FileSubMenu.DropDownOpened += new System.EventHandler(this.FileSubMenu_DropDownOpened);
// //
@ -218,7 +219,7 @@
this.NewSessionMenuItem.Name = "NewSessionMenuItem"; this.NewSessionMenuItem.Name = "NewSessionMenuItem";
this.NewSessionMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) this.NewSessionMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.N))); | System.Windows.Forms.Keys.N)));
this.NewSessionMenuItem.Size = new System.Drawing.Size(243, 22); this.NewSessionMenuItem.Size = new System.Drawing.Size(237, 22);
this.NewSessionMenuItem.Text = "&New Session"; this.NewSessionMenuItem.Text = "&New Session";
this.NewSessionMenuItem.Click += new System.EventHandler(this.NewSessionMenuItem_Click); this.NewSessionMenuItem.Click += new System.EventHandler(this.NewSessionMenuItem_Click);
// //
@ -228,7 +229,7 @@
this.OpenSessionMenuItem.Name = "OpenSessionMenuItem"; this.OpenSessionMenuItem.Name = "OpenSessionMenuItem";
this.OpenSessionMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) this.OpenSessionMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.O))); | System.Windows.Forms.Keys.O)));
this.OpenSessionMenuItem.Size = new System.Drawing.Size(243, 22); this.OpenSessionMenuItem.Size = new System.Drawing.Size(237, 22);
this.OpenSessionMenuItem.Text = "&Open Session..."; this.OpenSessionMenuItem.Text = "&Open Session...";
this.OpenSessionMenuItem.Click += new System.EventHandler(this.OpenSessionMenuItem_Click); this.OpenSessionMenuItem.Click += new System.EventHandler(this.OpenSessionMenuItem_Click);
// //
@ -237,7 +238,7 @@
this.SaveSessionMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.SaveAs; this.SaveSessionMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.SaveAs;
this.SaveSessionMenuItem.Name = "SaveSessionMenuItem"; this.SaveSessionMenuItem.Name = "SaveSessionMenuItem";
this.SaveSessionMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); this.SaveSessionMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.SaveSessionMenuItem.Size = new System.Drawing.Size(243, 22); this.SaveSessionMenuItem.Size = new System.Drawing.Size(237, 22);
this.SaveSessionMenuItem.Text = "&Save Session"; this.SaveSessionMenuItem.Text = "&Save Session";
this.SaveSessionMenuItem.Click += new System.EventHandler(this.SaveSessionMenuItem_Click); this.SaveSessionMenuItem.Click += new System.EventHandler(this.SaveSessionMenuItem_Click);
// //
@ -246,21 +247,21 @@
this.SaveSessionAsMenuItem.Name = "SaveSessionAsMenuItem"; this.SaveSessionAsMenuItem.Name = "SaveSessionAsMenuItem";
this.SaveSessionAsMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) this.SaveSessionAsMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
| System.Windows.Forms.Keys.S))); | System.Windows.Forms.Keys.S)));
this.SaveSessionAsMenuItem.Size = new System.Drawing.Size(243, 22); this.SaveSessionAsMenuItem.Size = new System.Drawing.Size(237, 22);
this.SaveSessionAsMenuItem.Text = "Save Session &As..."; this.SaveSessionAsMenuItem.Text = "Save Session &As...";
this.SaveSessionAsMenuItem.Click += new System.EventHandler(this.SaveSessionAsMenuItem_Click); this.SaveSessionAsMenuItem.Click += new System.EventHandler(this.SaveSessionAsMenuItem_Click);
// //
// toolStripSeparator9 // toolStripSeparator9
// //
this.toolStripSeparator9.Name = "toolStripSeparator9"; this.toolStripSeparator9.Name = "toolStripSeparator9";
this.toolStripSeparator9.Size = new System.Drawing.Size(240, 6); this.toolStripSeparator9.Size = new System.Drawing.Size(234, 6);
// //
// RecentSessionsSubMenu // RecentSessionsSubMenu
// //
this.RecentSessionsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.RecentSessionsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripSeparator8}); this.toolStripSeparator8});
this.RecentSessionsSubMenu.Name = "RecentSessionsSubMenu"; this.RecentSessionsSubMenu.Name = "RecentSessionsSubMenu";
this.RecentSessionsSubMenu.Size = new System.Drawing.Size(243, 22); this.RecentSessionsSubMenu.Size = new System.Drawing.Size(237, 22);
this.RecentSessionsSubMenu.Text = "Recent Sessions"; this.RecentSessionsSubMenu.Text = "Recent Sessions";
this.RecentSessionsSubMenu.DropDownOpened += new System.EventHandler(this.RecentSessionsSubMenu_DropDownOpened); this.RecentSessionsSubMenu.DropDownOpened += new System.EventHandler(this.RecentSessionsSubMenu_DropDownOpened);
// //
@ -275,7 +276,7 @@
this.toolStripSeparator3}); this.toolStripSeparator3});
this.RecentScriptsSubMenu.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Recent; this.RecentScriptsSubMenu.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Recent;
this.RecentScriptsSubMenu.Name = "RecentScriptsSubMenu"; this.RecentScriptsSubMenu.Name = "RecentScriptsSubMenu";
this.RecentScriptsSubMenu.Size = new System.Drawing.Size(243, 22); this.RecentScriptsSubMenu.Size = new System.Drawing.Size(237, 22);
this.RecentScriptsSubMenu.Text = "Recent Scripts"; this.RecentScriptsSubMenu.Text = "Recent Scripts";
this.RecentScriptsSubMenu.DropDownOpened += new System.EventHandler(this.RecentScriptsSubMenu_DropDownOpened); this.RecentScriptsSubMenu.DropDownOpened += new System.EventHandler(this.RecentScriptsSubMenu_DropDownOpened);
// //
@ -287,13 +288,13 @@
// toolStripSeparator1 // toolStripSeparator1
// //
this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(240, 6); this.toolStripSeparator1.Size = new System.Drawing.Size(234, 6);
// //
// ExitMenuItem // ExitMenuItem
// //
this.ExitMenuItem.Name = "ExitMenuItem"; this.ExitMenuItem.Name = "ExitMenuItem";
this.ExitMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4))); this.ExitMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4)));
this.ExitMenuItem.Size = new System.Drawing.Size(243, 22); this.ExitMenuItem.Size = new System.Drawing.Size(237, 22);
this.ExitMenuItem.Text = "E&xit"; this.ExitMenuItem.Text = "E&xit";
this.ExitMenuItem.Click += new System.EventHandler(this.ExitMenuItem_Click); this.ExitMenuItem.Click += new System.EventHandler(this.ExitMenuItem_Click);
// //
@ -317,7 +318,7 @@
this.StopAllScriptsMenuItem, this.StopAllScriptsMenuItem,
this.RegisteredFunctionsMenuItem}); this.RegisteredFunctionsMenuItem});
this.ScriptSubMenu.Name = "ScriptSubMenu"; this.ScriptSubMenu.Name = "ScriptSubMenu";
this.ScriptSubMenu.Size = new System.Drawing.Size(46, 20); this.ScriptSubMenu.Size = new System.Drawing.Size(49, 20);
this.ScriptSubMenu.Text = "&Script"; this.ScriptSubMenu.Text = "&Script";
this.ScriptSubMenu.DropDownOpened += new System.EventHandler(this.ScriptSubMenu_DropDownOpened); this.ScriptSubMenu.DropDownOpened += new System.EventHandler(this.ScriptSubMenu_DropDownOpened);
// //
@ -326,7 +327,7 @@
this.NewScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.NewFile; this.NewScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.NewFile;
this.NewScriptMenuItem.Name = "NewScriptMenuItem"; this.NewScriptMenuItem.Name = "NewScriptMenuItem";
this.NewScriptMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); this.NewScriptMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
this.NewScriptMenuItem.Size = new System.Drawing.Size(223, 22); this.NewScriptMenuItem.Size = new System.Drawing.Size(218, 22);
this.NewScriptMenuItem.Text = "New Script"; this.NewScriptMenuItem.Text = "New Script";
this.NewScriptMenuItem.Click += new System.EventHandler(this.NewScriptMenuItem_Click); this.NewScriptMenuItem.Click += new System.EventHandler(this.NewScriptMenuItem_Click);
// //
@ -335,7 +336,7 @@
this.OpenScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.OpenFile; this.OpenScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.OpenFile;
this.OpenScriptMenuItem.Name = "OpenScriptMenuItem"; this.OpenScriptMenuItem.Name = "OpenScriptMenuItem";
this.OpenScriptMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); this.OpenScriptMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
this.OpenScriptMenuItem.Size = new System.Drawing.Size(223, 22); this.OpenScriptMenuItem.Size = new System.Drawing.Size(218, 22);
this.OpenScriptMenuItem.Text = "&Open Script..."; this.OpenScriptMenuItem.Text = "&Open Script...";
this.OpenScriptMenuItem.Click += new System.EventHandler(this.OpenScriptMenuItem_Click); this.OpenScriptMenuItem.Click += new System.EventHandler(this.OpenScriptMenuItem_Click);
// //
@ -344,7 +345,7 @@
this.RefreshScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Refresh1; this.RefreshScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Refresh1;
this.RefreshScriptMenuItem.Name = "RefreshScriptMenuItem"; this.RefreshScriptMenuItem.Name = "RefreshScriptMenuItem";
this.RefreshScriptMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F5; this.RefreshScriptMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F5;
this.RefreshScriptMenuItem.Size = new System.Drawing.Size(223, 22); this.RefreshScriptMenuItem.Size = new System.Drawing.Size(218, 22);
this.RefreshScriptMenuItem.Text = "&Re&fresh"; this.RefreshScriptMenuItem.Text = "&Re&fresh";
this.RefreshScriptMenuItem.Click += new System.EventHandler(this.RefreshScriptMenuItem_Click); this.RefreshScriptMenuItem.Click += new System.EventHandler(this.RefreshScriptMenuItem_Click);
// //
@ -353,7 +354,7 @@
this.ToggleScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.checkbox; this.ToggleScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.checkbox;
this.ToggleScriptMenuItem.Name = "ToggleScriptMenuItem"; this.ToggleScriptMenuItem.Name = "ToggleScriptMenuItem";
this.ToggleScriptMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T))); this.ToggleScriptMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T)));
this.ToggleScriptMenuItem.Size = new System.Drawing.Size(223, 22); this.ToggleScriptMenuItem.Size = new System.Drawing.Size(218, 22);
this.ToggleScriptMenuItem.Text = "&Toggle"; this.ToggleScriptMenuItem.Text = "&Toggle";
this.ToggleScriptMenuItem.Click += new System.EventHandler(this.ToggleScriptMenuItem_Click); this.ToggleScriptMenuItem.Click += new System.EventHandler(this.ToggleScriptMenuItem_Click);
// //
@ -361,7 +362,7 @@
// //
this.PauseScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Pause; this.PauseScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Pause;
this.PauseScriptMenuItem.Name = "PauseScriptMenuItem"; this.PauseScriptMenuItem.Name = "PauseScriptMenuItem";
this.PauseScriptMenuItem.Size = new System.Drawing.Size(223, 22); this.PauseScriptMenuItem.Size = new System.Drawing.Size(218, 22);
this.PauseScriptMenuItem.Text = "Pause or Resume"; this.PauseScriptMenuItem.Text = "Pause or Resume";
this.PauseScriptMenuItem.Click += new System.EventHandler(this.PauseScriptMenuItem_Click); this.PauseScriptMenuItem.Click += new System.EventHandler(this.PauseScriptMenuItem_Click);
// //
@ -370,7 +371,7 @@
this.EditScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.CutHS; this.EditScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.CutHS;
this.EditScriptMenuItem.Name = "EditScriptMenuItem"; this.EditScriptMenuItem.Name = "EditScriptMenuItem";
this.EditScriptMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E))); this.EditScriptMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E)));
this.EditScriptMenuItem.Size = new System.Drawing.Size(223, 22); this.EditScriptMenuItem.Size = new System.Drawing.Size(218, 22);
this.EditScriptMenuItem.Text = "&Edit Script"; this.EditScriptMenuItem.Text = "&Edit Script";
this.EditScriptMenuItem.Click += new System.EventHandler(this.EditScriptMenuItem_Click); this.EditScriptMenuItem.Click += new System.EventHandler(this.EditScriptMenuItem_Click);
// //
@ -379,28 +380,28 @@
this.RemoveScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete; this.RemoveScriptMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete;
this.RemoveScriptMenuItem.Name = "RemoveScriptMenuItem"; this.RemoveScriptMenuItem.Name = "RemoveScriptMenuItem";
this.RemoveScriptMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete; this.RemoveScriptMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete;
this.RemoveScriptMenuItem.Size = new System.Drawing.Size(223, 22); this.RemoveScriptMenuItem.Size = new System.Drawing.Size(218, 22);
this.RemoveScriptMenuItem.Text = "&Remove Script"; this.RemoveScriptMenuItem.Text = "&Remove Script";
this.RemoveScriptMenuItem.Click += new System.EventHandler(this.RemoveScriptMenuItem_Click); this.RemoveScriptMenuItem.Click += new System.EventHandler(this.RemoveScriptMenuItem_Click);
// //
// DuplicateScriptMenuItem // DuplicateScriptMenuItem
// //
this.DuplicateScriptMenuItem.Name = "DuplicateScriptMenuItem"; this.DuplicateScriptMenuItem.Name = "DuplicateScriptMenuItem";
this.DuplicateScriptMenuItem.Size = new System.Drawing.Size(223, 22); this.DuplicateScriptMenuItem.Size = new System.Drawing.Size(218, 22);
this.DuplicateScriptMenuItem.Text = "&Duplicate Script"; this.DuplicateScriptMenuItem.Text = "&Duplicate Script";
this.DuplicateScriptMenuItem.Click += new System.EventHandler(this.DuplicateScriptMenuItem_Click); this.DuplicateScriptMenuItem.Click += new System.EventHandler(this.DuplicateScriptMenuItem_Click);
// //
// toolStripSeparator7 // toolStripSeparator7
// //
this.toolStripSeparator7.Name = "toolStripSeparator7"; this.toolStripSeparator7.Name = "toolStripSeparator7";
this.toolStripSeparator7.Size = new System.Drawing.Size(220, 6); this.toolStripSeparator7.Size = new System.Drawing.Size(215, 6);
// //
// InsertSeparatorMenuItem // InsertSeparatorMenuItem
// //
this.InsertSeparatorMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.InsertSeparator; this.InsertSeparatorMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.InsertSeparator;
this.InsertSeparatorMenuItem.Name = "InsertSeparatorMenuItem"; this.InsertSeparatorMenuItem.Name = "InsertSeparatorMenuItem";
this.InsertSeparatorMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I))); this.InsertSeparatorMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I)));
this.InsertSeparatorMenuItem.Size = new System.Drawing.Size(223, 22); this.InsertSeparatorMenuItem.Size = new System.Drawing.Size(218, 22);
this.InsertSeparatorMenuItem.Text = "Insert Separator"; this.InsertSeparatorMenuItem.Text = "Insert Separator";
this.InsertSeparatorMenuItem.Click += new System.EventHandler(this.InsertSeparatorMenuItem_Click); this.InsertSeparatorMenuItem.Click += new System.EventHandler(this.InsertSeparatorMenuItem_Click);
// //
@ -409,7 +410,7 @@
this.MoveUpMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.MoveUp; this.MoveUpMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.MoveUp;
this.MoveUpMenuItem.Name = "MoveUpMenuItem"; this.MoveUpMenuItem.Name = "MoveUpMenuItem";
this.MoveUpMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.U))); this.MoveUpMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.U)));
this.MoveUpMenuItem.Size = new System.Drawing.Size(223, 22); this.MoveUpMenuItem.Size = new System.Drawing.Size(218, 22);
this.MoveUpMenuItem.Text = "Move &Up"; this.MoveUpMenuItem.Text = "Move &Up";
this.MoveUpMenuItem.Click += new System.EventHandler(this.MoveUpMenuItem_Click); this.MoveUpMenuItem.Click += new System.EventHandler(this.MoveUpMenuItem_Click);
// //
@ -418,7 +419,7 @@
this.MoveDownMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.MoveDown; this.MoveDownMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.MoveDown;
this.MoveDownMenuItem.Name = "MoveDownMenuItem"; this.MoveDownMenuItem.Name = "MoveDownMenuItem";
this.MoveDownMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D))); this.MoveDownMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D)));
this.MoveDownMenuItem.Size = new System.Drawing.Size(223, 22); this.MoveDownMenuItem.Size = new System.Drawing.Size(218, 22);
this.MoveDownMenuItem.Text = "Move &Down"; this.MoveDownMenuItem.Text = "Move &Down";
this.MoveDownMenuItem.Click += new System.EventHandler(this.MoveDownMenuItem_Click); this.MoveDownMenuItem.Click += new System.EventHandler(this.MoveDownMenuItem_Click);
// //
@ -426,20 +427,20 @@
// //
this.SelectAllMenuItem.Name = "SelectAllMenuItem"; this.SelectAllMenuItem.Name = "SelectAllMenuItem";
this.SelectAllMenuItem.ShortcutKeyDisplayString = "Ctrl+A"; this.SelectAllMenuItem.ShortcutKeyDisplayString = "Ctrl+A";
this.SelectAllMenuItem.Size = new System.Drawing.Size(223, 22); this.SelectAllMenuItem.Size = new System.Drawing.Size(218, 22);
this.SelectAllMenuItem.Text = "Select &All"; this.SelectAllMenuItem.Text = "Select &All";
this.SelectAllMenuItem.Click += new System.EventHandler(this.SelectAllMenuItem_Click); this.SelectAllMenuItem.Click += new System.EventHandler(this.SelectAllMenuItem_Click);
// //
// toolStripSeparator6 // toolStripSeparator6
// //
this.toolStripSeparator6.Name = "toolStripSeparator6"; this.toolStripSeparator6.Name = "toolStripSeparator6";
this.toolStripSeparator6.Size = new System.Drawing.Size(220, 6); this.toolStripSeparator6.Size = new System.Drawing.Size(215, 6);
// //
// StopAllScriptsMenuItem // StopAllScriptsMenuItem
// //
this.StopAllScriptsMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Stop; this.StopAllScriptsMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Stop;
this.StopAllScriptsMenuItem.Name = "StopAllScriptsMenuItem"; this.StopAllScriptsMenuItem.Name = "StopAllScriptsMenuItem";
this.StopAllScriptsMenuItem.Size = new System.Drawing.Size(223, 22); this.StopAllScriptsMenuItem.Size = new System.Drawing.Size(218, 22);
this.StopAllScriptsMenuItem.Text = "Stop All Scripts"; this.StopAllScriptsMenuItem.Text = "Stop All Scripts";
this.StopAllScriptsMenuItem.Click += new System.EventHandler(this.StopAllScriptsMenuItem_Click); this.StopAllScriptsMenuItem.Click += new System.EventHandler(this.StopAllScriptsMenuItem_Click);
// //
@ -447,7 +448,7 @@
// //
this.RegisteredFunctionsMenuItem.Name = "RegisteredFunctionsMenuItem"; this.RegisteredFunctionsMenuItem.Name = "RegisteredFunctionsMenuItem";
this.RegisteredFunctionsMenuItem.ShortcutKeyDisplayString = "F12"; this.RegisteredFunctionsMenuItem.ShortcutKeyDisplayString = "F12";
this.RegisteredFunctionsMenuItem.Size = new System.Drawing.Size(223, 22); this.RegisteredFunctionsMenuItem.Size = new System.Drawing.Size(218, 22);
this.RegisteredFunctionsMenuItem.Text = "&Registered Functions..."; this.RegisteredFunctionsMenuItem.Text = "&Registered Functions...";
this.RegisteredFunctionsMenuItem.Click += new System.EventHandler(this.RegisteredFunctionsMenuItem_Click); this.RegisteredFunctionsMenuItem.Click += new System.EventHandler(this.RegisteredFunctionsMenuItem_Click);
// //
@ -456,30 +457,31 @@
this.SettingsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.SettingsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.DisableScriptsOnLoadMenuItem, this.DisableScriptsOnLoadMenuItem,
this.ReturnAllIfNoneSelectedMenuItem, this.ReturnAllIfNoneSelectedMenuItem,
this.RemoveRegisteredFunctionsOnToggleMenuItem}); this.RemoveRegisteredFunctionsOnToggleMenuItem,
this.ReloadWhenScriptFileChangesMenuItem});
this.SettingsSubMenu.Name = "SettingsSubMenu"; this.SettingsSubMenu.Name = "SettingsSubMenu";
this.SettingsSubMenu.Size = new System.Drawing.Size(58, 20); this.SettingsSubMenu.Size = new System.Drawing.Size(61, 20);
this.SettingsSubMenu.Text = "&Settings"; this.SettingsSubMenu.Text = "&Settings";
this.SettingsSubMenu.DropDownOpened += new System.EventHandler(this.OptionsSubMenu_DropDownOpened); this.SettingsSubMenu.DropDownOpened += new System.EventHandler(this.OptionsSubMenu_DropDownOpened);
// //
// DisableScriptsOnLoadMenuItem // DisableScriptsOnLoadMenuItem
// //
this.DisableScriptsOnLoadMenuItem.Name = "DisableScriptsOnLoadMenuItem"; this.DisableScriptsOnLoadMenuItem.Name = "DisableScriptsOnLoadMenuItem";
this.DisableScriptsOnLoadMenuItem.Size = new System.Drawing.Size(278, 22); this.DisableScriptsOnLoadMenuItem.Size = new System.Drawing.Size(286, 22);
this.DisableScriptsOnLoadMenuItem.Text = "Disable Scripts on Load"; this.DisableScriptsOnLoadMenuItem.Text = "Disable Scripts on Load";
this.DisableScriptsOnLoadMenuItem.Click += new System.EventHandler(this.DisableScriptsOnLoadMenuItem_Click); this.DisableScriptsOnLoadMenuItem.Click += new System.EventHandler(this.DisableScriptsOnLoadMenuItem_Click);
// //
// ReturnAllIfNoneSelectedMenuItem // ReturnAllIfNoneSelectedMenuItem
// //
this.ReturnAllIfNoneSelectedMenuItem.Name = "ReturnAllIfNoneSelectedMenuItem"; this.ReturnAllIfNoneSelectedMenuItem.Name = "ReturnAllIfNoneSelectedMenuItem";
this.ReturnAllIfNoneSelectedMenuItem.Size = new System.Drawing.Size(278, 22); this.ReturnAllIfNoneSelectedMenuItem.Size = new System.Drawing.Size(286, 22);
this.ReturnAllIfNoneSelectedMenuItem.Text = "Toggle All if None Selected"; this.ReturnAllIfNoneSelectedMenuItem.Text = "Toggle All if None Selected";
this.ReturnAllIfNoneSelectedMenuItem.Click += new System.EventHandler(this.ToggleAllIfNoneSelectedMenuItem_Click); this.ReturnAllIfNoneSelectedMenuItem.Click += new System.EventHandler(this.ToggleAllIfNoneSelectedMenuItem_Click);
// //
// RemoveRegisteredFunctionsOnToggleMenuItem // RemoveRegisteredFunctionsOnToggleMenuItem
// //
this.RemoveRegisteredFunctionsOnToggleMenuItem.Name = "RemoveRegisteredFunctionsOnToggleMenuItem"; this.RemoveRegisteredFunctionsOnToggleMenuItem.Name = "RemoveRegisteredFunctionsOnToggleMenuItem";
this.RemoveRegisteredFunctionsOnToggleMenuItem.Size = new System.Drawing.Size(278, 22); this.RemoveRegisteredFunctionsOnToggleMenuItem.Size = new System.Drawing.Size(286, 22);
this.RemoveRegisteredFunctionsOnToggleMenuItem.Text = "Remove Registered Functions on Toggle"; this.RemoveRegisteredFunctionsOnToggleMenuItem.Text = "Remove Registered Functions on Toggle";
this.RemoveRegisteredFunctionsOnToggleMenuItem.Click += new System.EventHandler(this.RemoveRegisteredFunctionsOnToggleMenuItem_Click); this.RemoveRegisteredFunctionsOnToggleMenuItem.Click += new System.EventHandler(this.RemoveRegisteredFunctionsOnToggleMenuItem_Click);
// //
@ -489,21 +491,21 @@
this.FunctionsListMenuItem, this.FunctionsListMenuItem,
this.OnlineDocsMenuItem}); this.OnlineDocsMenuItem});
this.HelpSubMenu.Name = "HelpSubMenu"; this.HelpSubMenu.Name = "HelpSubMenu";
this.HelpSubMenu.Size = new System.Drawing.Size(40, 20); this.HelpSubMenu.Size = new System.Drawing.Size(44, 20);
this.HelpSubMenu.Text = "&Help"; this.HelpSubMenu.Text = "&Help";
// //
// FunctionsListMenuItem // FunctionsListMenuItem
// //
this.FunctionsListMenuItem.Name = "FunctionsListMenuItem"; this.FunctionsListMenuItem.Name = "FunctionsListMenuItem";
this.FunctionsListMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F1; this.FunctionsListMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F1;
this.FunctionsListMenuItem.Size = new System.Drawing.Size(200, 22); this.FunctionsListMenuItem.Size = new System.Drawing.Size(202, 22);
this.FunctionsListMenuItem.Text = "&Lua Functions List"; this.FunctionsListMenuItem.Text = "&Lua Functions List";
this.FunctionsListMenuItem.Click += new System.EventHandler(this.FunctionsListMenuItem_Click); this.FunctionsListMenuItem.Click += new System.EventHandler(this.FunctionsListMenuItem_Click);
// //
// OnlineDocsMenuItem // OnlineDocsMenuItem
// //
this.OnlineDocsMenuItem.Name = "OnlineDocsMenuItem"; this.OnlineDocsMenuItem.Name = "OnlineDocsMenuItem";
this.OnlineDocsMenuItem.Size = new System.Drawing.Size(200, 22); this.OnlineDocsMenuItem.Size = new System.Drawing.Size(202, 22);
this.OnlineDocsMenuItem.Text = "Documentation online..."; this.OnlineDocsMenuItem.Text = "Documentation online...";
this.OnlineDocsMenuItem.Click += new System.EventHandler(this.OnlineDocsMenuItem_Click); this.OnlineDocsMenuItem.Click += new System.EventHandler(this.OnlineDocsMenuItem_Click);
// //
@ -528,20 +530,20 @@
this.ClearConsoleContextItem, this.ClearConsoleContextItem,
this.RegisteredFunctionsContextItem}); this.RegisteredFunctionsContextItem});
this.ConsoleContextMenu.Name = "contextMenuStrip2"; this.ConsoleContextMenu.Name = "contextMenuStrip2";
this.ConsoleContextMenu.Size = new System.Drawing.Size(187, 48); this.ConsoleContextMenu.Size = new System.Drawing.Size(185, 48);
this.ConsoleContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ConsoleContextMenu_Opening); this.ConsoleContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ConsoleContextMenu_Opening);
// //
// ClearConsoleContextItem // ClearConsoleContextItem
// //
this.ClearConsoleContextItem.Name = "ClearConsoleContextItem"; this.ClearConsoleContextItem.Name = "ClearConsoleContextItem";
this.ClearConsoleContextItem.Size = new System.Drawing.Size(186, 22); this.ClearConsoleContextItem.Size = new System.Drawing.Size(184, 22);
this.ClearConsoleContextItem.Text = "&Clear"; this.ClearConsoleContextItem.Text = "&Clear";
this.ClearConsoleContextItem.Click += new System.EventHandler(this.ClearConsoleContextItem_Click); this.ClearConsoleContextItem.Click += new System.EventHandler(this.ClearConsoleContextItem_Click);
// //
// RegisteredFunctionsContextItem // RegisteredFunctionsContextItem
// //
this.RegisteredFunctionsContextItem.Name = "RegisteredFunctionsContextItem"; this.RegisteredFunctionsContextItem.Name = "RegisteredFunctionsContextItem";
this.RegisteredFunctionsContextItem.Size = new System.Drawing.Size(186, 22); this.RegisteredFunctionsContextItem.Size = new System.Drawing.Size(184, 22);
this.RegisteredFunctionsContextItem.Text = "&Registered Functions"; this.RegisteredFunctionsContextItem.Text = "&Registered Functions";
this.RegisteredFunctionsContextItem.Click += new System.EventHandler(this.RegisteredFunctionsMenuItem_Click); this.RegisteredFunctionsContextItem.Click += new System.EventHandler(this.RegisteredFunctionsMenuItem_Click);
// //
@ -807,6 +809,13 @@
this.splitContainer1.SplitterDistance = 280; this.splitContainer1.SplitterDistance = 280;
this.splitContainer1.TabIndex = 7; this.splitContainer1.TabIndex = 7;
// //
// ReloadWhenScriptFileChangesMenuItem
//
this.ReloadWhenScriptFileChangesMenuItem.Name = "ReloadWhenScriptFileChangesMenuItem";
this.ReloadWhenScriptFileChangesMenuItem.Size = new System.Drawing.Size(286, 22);
this.ReloadWhenScriptFileChangesMenuItem.Text = "Reload When Script File Changes";
this.ReloadWhenScriptFileChangesMenuItem.Click += new System.EventHandler(this.ReloadWhenScriptFileChangesMenuItem_Click);
//
// LuaConsole // LuaConsole
// //
this.AllowDrop = true; this.AllowDrop = true;
@ -919,5 +928,6 @@
private System.Windows.Forms.ImageList imageList1; private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.ToolStripMenuItem ReturnAllIfNoneSelectedMenuItem; private System.Windows.Forms.ToolStripMenuItem ReturnAllIfNoneSelectedMenuItem;
private System.Windows.Forms.ToolStripMenuItem RemoveRegisteredFunctionsOnToggleMenuItem; private System.Windows.Forms.ToolStripMenuItem RemoveRegisteredFunctionsOnToggleMenuItem;
private System.Windows.Forms.ToolStripMenuItem ReloadWhenScriptFileChangesMenuItem;
} }
} }

View File

@ -181,6 +181,48 @@ namespace BizHawk.Client.EmuHawk
UpdateDialog(); UpdateDialog();
} }
private readonly List<FileSystemWatcher> _watches = new List<FileSystemWatcher>();
private void AddFileWatches()
{
_watches.Clear();
foreach (var item in _luaList)
{
var processedPath = PathManager.TryMakeRelative(item.Path);
string pathToLoad = Path.IsPathRooted(processedPath)
? processedPath
: PathManager.MakeProgramRelativePath(processedPath);
CreateFileWatcher(pathToLoad);
}
}
private void CreateFileWatcher(string path)
{
var watcher = new FileSystemWatcher
{
Path = Path.GetDirectoryName(path),
Filter = Path.GetFileName(path),
NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName,
EnableRaisingEvents = true,
};
// TODO, Deleted and Renamed events
watcher.Changed += new FileSystemEventHandler(OnChanged);
_watches.Add(watcher);
}
private void OnChanged(object source, FileSystemEventArgs e)
{
string message = "File: " + e.FullPath + " " + e.ChangeType;
Invoke(new MethodInvoker(delegate
{
RefreshScriptMenuItem_Click(null, null);
}));
}
public void LoadLuaFile(string path) public void LoadLuaFile(string path)
{ {
var processedPath = PathManager.TryMakeRelative(path); var processedPath = PathManager.TryMakeRelative(path);
@ -194,7 +236,6 @@ namespace BizHawk.Client.EmuHawk
LuaListView.ItemCount = _luaList.Count; LuaListView.ItemCount = _luaList.Count;
Global.Config.RecentLua.Add(processedPath); Global.Config.RecentLua.Add(processedPath);
if (!Global.Config.DisableLuaScriptsOnLoad) if (!Global.Config.DisableLuaScriptsOnLoad)
{ {
try try
@ -211,6 +252,7 @@ namespace BizHawk.Client.EmuHawk
} }
catch (Exception e) catch (Exception e)
{ {
MessageBox.Show(e.ToString()); MessageBox.Show(e.ToString());
} }
} }
@ -219,6 +261,11 @@ namespace BizHawk.Client.EmuHawk
luaFile.State = LuaFile.RunState.Disabled; luaFile.State = LuaFile.RunState.Disabled;
} }
if (Global.Config.LuaReloadOnScriptFileChange)
{
CreateFileWatcher(processedPath);
}
//luaFile.Paused = false; //luaFile.Paused = false;
} }
else else
@ -766,7 +813,7 @@ namespace BizHawk.Client.EmuHawk
LuaSandbox.Sandbox(null, () => LuaSandbox.Sandbox(null, () =>
{ {
string pathToLoad = Path.IsPathRooted(item.Path) ? item.Path : PathManager.MakeProgramRelativePath(item.Path); //JUNIPIER SQUATCHBOX COMPLEX string pathToLoad = Path.IsPathRooted(item.Path) ? item.Path : PathManager.MakeProgramRelativePath(item.Path); //JUNIPIER SQUATCHBOX COMPLEX
item.Thread = LuaImp.SpawnCoroutine(item.Path); item.Thread = LuaImp.SpawnCoroutine(pathToLoad);
LuaSandbox.CreateSandbox(item.Thread, Path.GetDirectoryName(pathToLoad)); LuaSandbox.CreateSandbox(item.Thread, Path.GetDirectoryName(pathToLoad));
}, () => }, () =>
{ {
@ -774,6 +821,10 @@ namespace BizHawk.Client.EmuHawk
}); });
} }
catch (IOException)
{
ConsoleLog("Unable to access file " + item.Path);
}
catch (Exception ex) catch (Exception ex)
{ {
MessageBox.Show(ex.ToString()); MessageBox.Show(ex.ToString());
@ -977,6 +1028,7 @@ namespace BizHawk.Client.EmuHawk
DisableScriptsOnLoadMenuItem.Checked = Global.Config.DisableLuaScriptsOnLoad; DisableScriptsOnLoadMenuItem.Checked = Global.Config.DisableLuaScriptsOnLoad;
ReturnAllIfNoneSelectedMenuItem.Checked = Global.Config.ToggleAllIfNoneSelected; ReturnAllIfNoneSelectedMenuItem.Checked = Global.Config.ToggleAllIfNoneSelected;
RemoveRegisteredFunctionsOnToggleMenuItem.Checked = Global.Config.RemoveRegisteredFunctionsOnToggle; RemoveRegisteredFunctionsOnToggleMenuItem.Checked = Global.Config.RemoveRegisteredFunctionsOnToggle;
ReloadWhenScriptFileChangesMenuItem.Checked = Global.Config.LuaReloadOnScriptFileChange;
} }
private void DisableScriptsOnLoadMenuItem_Click(object sender, EventArgs e) private void DisableScriptsOnLoadMenuItem_Click(object sender, EventArgs e)
@ -994,6 +1046,20 @@ namespace BizHawk.Client.EmuHawk
Global.Config.RemoveRegisteredFunctionsOnToggle ^= true; Global.Config.RemoveRegisteredFunctionsOnToggle ^= true;
} }
private void ReloadWhenScriptFileChangesMenuItem_Click(object sender, EventArgs e)
{
Global.Config.LuaReloadOnScriptFileChange ^= true;
if (Global.Config.LuaReloadOnScriptFileChange)
{
AddFileWatches();
}
else
{
_watches.Clear();
}
}
#endregion #endregion
#region Help #region Help

View File

@ -133,18 +133,17 @@
<data name="OpenScriptToolbarItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="OpenScriptToolbarItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlpJREFUOE+tk21I YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJHSURBVDhPxZBdSNNhFMb/F110ZZEVhVBgeeHNICiiuggp
k1EYhif0oyA0sqIQCix/+GcQFFH9CCmiUBTLLEjShJofVBgL2fxoU9Pp5ubUlS5rU9f8rCyjsA+pUCRC olAUyyxI0oSaH1QYC3N+tKnp5ubm1JUua5uuqdNKMwr7kApFItTUkWZqVhSVYmao5Nevvy7UoYR3HXh4
TR1ppmVFUSlmhq78unrnQF1KGHTg/nEOz30993PO+7qJFrmUeiv2n+Mij+XLRLLYULdF2pxlEVIDcw0p 4XCe33nOKyy3lAY7l9RWMo0O/raWXxEyo5spVYTNvOGyfIRPfW+ptOkXqaPl6T83hcRmExSdgzAz3NVm
AsyxD5fmI/rQ94pqi26eOlsfuZj+7BgSm01QdA4ih7m73Yx9qGpavwatjPebqCzOprPt8YKQgzFagqL0 YWyoYla/B+1M9JtxWLPpaH22JORIjI6gKAMB0jyEimIdo4OlbuaprwVMOOMovammpDADc34qppwUrmnl
BEjyEFWVaBkdLHMxT34uYNwWR9nVTEoL0zHlp2DMSeaSRk6eKt4VWm5WM/rVPNN5SjDTLQebZEHNA1wr 5Kni3aFlFg2j3y1z5mnRTJccnNIltQhwq0jFry+mOXNtpWZWDx1Z1NhV3C3JwGFOw25SYjVe5oYhiUKd
UvHjk3E6tsNcV62e1r3KLGqtKm6WplNpSsVqVFJsOM8VfSKFWjkGtcyZptSYzvC7XByx3zQoqCnTMvlG HKMmwQUrMWUw/CF3NnZvvYKqUh1TvUroS3fXe7HXkwidMngTS2t5KLbregSzMY2f3Wr4qKW6LJvGR1rX
CX1prnornPUmQJcUXsbSVhGK5bIOkcmQyveeTHiv4VZ5Nk33Nc6iuSO8CIfmECYa/bE/8ON1iRipJNh5 0MLor8OhKYTJBn/GHvvxrliCTBrsOqXIoOBHh5K+hmSq7FqmexTQHuUytkaKxuNMNgYyVneA4Qd7GKjc
F0V6Bd86lfQ1JlFj1TDVq4COKCegLVIwHmGiKRB7/V6G7+5koHozymgfYRy5E1CgTWKgXcZ1i5qWp0KS hjLaRzxH7gIU6JIZaEvgtk1D8wsxSWecCDgNzWFMvwxm/PkhRmr3Mli1nW9lvjRdWc0Jf+/5jzRmyWmv
rjgBcAJawph6FszYk/2M1O1isGYLX8p9ab6wgqP+3rMvYciS01GfzA1LFvQkQ6sQ9/khxhoCGHnox1Dt S+GOLQu6U6BFjPvqKOP1AYw88WOoZif9DgmfLVtxaj1RSLdwNvrkPCA3M54KqxrnvRia9MKcGrUrqFOt
NvorxXw0b8Km8UQh2cip6GOzgNyMeKqKM7HdjqFZJ5pRk2YJ9aql3EnxoCJxNaZ4Ly6e3UDY3O6OEXRp 5H7qKsqT1mGO9+Lqhc2ELdw+U/r0i+gVZ8hMiCDx3DHORwZyKnQ/hw/uYt9uCTskPvh6e7Fp41rWr/Fg
59ApTpIhiyDh9GHORAZyPHQPB/ZtZ/cOMVvFPvh6e7F+3SrWrHRnraf7Xz/xf/rJ/kvxb84I3U1y+9/W g6eHO+A/lyD8ARfG3mk9fv1YAAAAAElFTkSuQmCC
AAAAAElFTkSuQmCC
</value> </value>
</data> </data>
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@ -154,70 +153,70 @@
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACG ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACE
DgAAAk1TRnQBSQFMAgEBAwEAASABAAEgAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA DgAAAk1TRnQBSQFMAgEBAwEAASgBAAEoAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABEAMAAQEBAAEgBgABECoAAXwBTAFRAeUBsgG0AdIB/wG7Ab4B1wH/AX0BUQFUAecwAAF8AVEBTAHl AwABEAMAAQEBAAEgBgABECoAAXYBTwFUAeUBsgG0AdIB/wG7Ab4B1wH/AXgBUwFVAecwAAF2AVQBTwHl
AbIB0gG2Af8BuwHXAb4B/wF9AVQBUQHnMAABgAFNAUwB5QHSAb4BsgH/AdcBxQG7Af8BgQJRAedoAAFv AbIB0gG2Af8BuwHXAb4B/wF4AVUBUwHnMAABewFQAU8B5QHSAb4BsgH/AdcBxQG7Af8BfAJTAedoAAFu
AVsBfgH1ATwBQwGXAf8BCAETAYcB/wEJARMBhwH/AQcBEgGHAf8BDgEYAYgB/wERARsBiQH/AWkBXgGL AVkBewH1ATsBQgGXAf8BBwESAYcB/wEIARIBhwH/AQYBEQGHAf8BDQEXAYgB/wEQARoBiQH/AWkBXgGK
AfkgAAFvAX4BYgH1ATwBlwFIAf8BCAGHARcB/wEJAYcBGAH/AQcBhwEVAf8BDgGIARwB/wERAYkBHwH/ AfkgAAFuAXsBYAH1ATsBlwFHAf8BBwGHARYB/wEIAYcBFwH/AQYBhwEUAf8BDQGIARsB/wEQAYkBHgH/
AWkBiwFeAfkgAAGTAWoBWAH1AZcBXgE8Af8BhwE2AQgB/wGHATcBCQH/AYcBNQEHAf8BiAE6AQ4B/wGJ AWkBigFeAfkgAAGOAWkBWQH1AZcBXQE7Af8BhwE1AQcB/wGHATYBCAH/AYcBNAEGAf8BiAE5AQ0B/wGJ
AT0BEQH/AZgBaAFaAflcAAE3AT8BmAH/ATQBPAGYAf8BsAGyAcsB/wHaAdsB2gH/AtEB1QH/AcsBzAHS ATwBEAH/AZQBaAFaAflcAAE2AT4BmAH/ATMBOwGYAf8BsAGyAcsB/wHaAdsB2gH/AtEB1QH/AcsBzAHS
Af8BxAHHAc4B/wFbAWEBpQH/AU0BRQF9AfkBLAE1AY8B/xgAASkBkgE1Af8BNAGYAUAB/wGwAcsBswH/ Af8BxAHHAc4B/wFaAWABpQH/AUwBRQF6AfkBKwE0AY8B/xgAASgBkgE0Af8BMwGYAT8B/wGwAcsBswH/
AdsC2gH/AdEB1QHSAf8BywHSAcsB/wHFAc4BxAH/AVsBpQFkAf8BTQF9AUYB+QEsAY8BNwH/GAABkgFP AdsC2gH/AdEB1QHSAf8BywHSAcsB/wHFAc4BxAH/AVoBpQFjAf8BTAF6AUYB+QErAY8BNgH/GAABkgFO
ASkB/wGYAVkBNAH/AcsBugGwAf8C2gHbAf8B1QHTAdEB/wHSAc0BywH/Ac4BxgHEAf8BpQF2AVsB/wGL ASgB/wGYAVgBMwH/AcsBugGwAf8C2gHbAf8B1QHTAdEB/wHSAc0BywH/Ac4BxgHEAf8BpQF1AVoB/wGK
AVwBPgH5AY8BTwEsAf9UAAFBAT8BjQH9AXgBRwFKAeMC/gH9Af8B/gH9AfUB/wL3AfMB/wHvAu4B/wLt AVwBQAH5AY8BTgErAf9UAAJAAY0B/QF0AUsBTgHjAv4B/QH/Af4B/QH1Af8C9wHzAf8B7wLuAf8C7QHr
AesB/wHZAtsB/wHjAeQB4gH/AsABzAH/AXQBUQFcAe0BTAFJAYQB+xAAAUEBjQE/Af0BeAFKAUcB4wH/ Af8B2QLbAf8B4wHkAeIB/wLAAcwB/wFxAVIBXQHtAUwBSQGDAfsQAAFAAY0BQAH9AXQBTgFLAeMB/wH+
Af4C/wH+AfUB/QH/AfcB8wH2Af8C7gHvAf8B7QHrAe0B/wLbAdkB/wHkAeIB4wH/AcABzAHCAf8BdAFc Av8B/gH1Af0B/wH3AfMB9gH/Au4B7wH/Ae0B6wHtAf8C2wHZAf8B5AHiAeMB/wHAAcwBwgH/AXEBXQFS
AVEB7QFMAYQBSwH7EAABkwFNAT0B/QF8AUgBRwHjAf4D/wH1AfsB/gH/AfMB9QH3Af8B7gHvAe4B/wHr Ae0BTAGDAUsB+xAAAZMBTAE+Af0BdQFMAUsB4wH+A/8B9QH7Af4B/wHzAfUB9wH/Ae4B7wHuAf8B6wHs
AewB7QH/AdsB2QHaAf8C4gHkAf8BzAHFAcAB/wGAAVIBUAHtAY0BWQFDAftMAAFyAVwBdwHzAX8BVgFg Ae0B/wHbAdkB2gH/AuIB5AH/AcwBxQHAAf8BfAFTAVEB7QGMAVkBQwH7TAABcAFdAXMB8wF7AVcBYAHr
AesF/wH+Af0X/wH+Af8B8AHvAfAB/wHPAdAB1gH/AWsBRwFaAe0BcwFRAWcB7wgAAXIBdwFdAfMBfwFg Bf8B/gH9F/8B/gH/AfAB7wHwAf8BzwHQAdYB/wFpAUoBWwHtAXABUwFmAe8IAAFwAXMBXQHzAXsBYAFZ
AVkB6wX/Af0G/wHjAfAB4wH/AZwBzQGcCv8B/gL/Ae8C8AH/Ac8B1gHPAf8BawFaAUkB7QFzAWcBUQHv AesF/wH9Bv8B4wHwAeMB/wGcAc0BnAr/Af4C/wHvAvAB/wHPAdYBzwH/AWkBWwFMAe0BcAFmAVMB7wgA
CAABkgFkAVYB8wGJAVoBVQHrBP8B/Rf/Af4D/wLjAeAB/wHPAckBxwH/AX4BUQFGAe0BhAFcAVAB70gA AY0BYgFXAfMBgwFbAVYB6wT/Af0X/wH+A/8C4wHgAf8BzwHJAccB/wF6AVIBSQHtAYABWwFSAe9IAAFq
AWsBXgGRAfkD/iX/AfAB8gHwAf8CxgHNAf8BSgE9AXgB+QgAAWsBkQFeAfkQ/wHcAe0B3AH/ARQBfAEU AV4BjwH5A/4l/wHwAfIB8AH/AsYBzQH/AUkBPwF1AfkIAAFqAY8BXgH5EP8B3AHtAdwB/wETAXsBEwH/
Af8BgwHBAYMN/wHyAfEB8AH/AccBzgHIAf8BSgF4AUEB+QgAAZ4BcgFeAfkM/wHhAc0BvgH/Ab4BkgGN AYMBwQGDDf8B8gHxAfAB/wHHAc4ByAH/AUkBdQFBAfkIAAGaAW8BXgH5DP8B4QHNAb4B/wG+AZIBjQH/
Af8B9wHxAe8B/wH7AfgB9wH/AcEBmAGPAf8B6gHaAdEF/wHlAeIB5gH/Ac4BygHHAf8BhwFXAT0B+UQA AfcB8QHvAf8B+wH4AfcB/wHBAZgBjwH/AeoB2gHRBf8B5QHiAeYB/wHOAcoBxwH/AYYBVwE/AflEAAF+
AYABaAGCAfMBgQFdAWoB7Qj/AvUB+wH/AXABbAHUAf8BoQGfAecB/wGjAaEB5gH/AaIBoQHlAf8BlAGR AWYBgAHzAX0BXQFpAe0I/wL1AfsB/wFvAWsB1AH/AaEBnwHnAf8BowGhAeYB/wGiAaEB5QH/AZQBkQHh
AeEB/wGeAZwB5gX/AfkB+AH3Af8B5wHkAd4B/wFgAVABcgH1AV0BWQGQAfsBgAGCAWgB8wGBAWsBXgHt Af8BngGcAeYF/wH5AfgB9wH/AecB5AHeAf8BXgFRAXAB9QFdAVkBjwH7AX4BgAFmAfMBfQFpAV0B7RD/
EP8B5AHxAeQB/wEEAXgBBAH/ARQBfgEUAf8BnAHOAZwJ/wH5AfcB+QH/AeYB3gHnAf8BYAFyAVUB9QFd AeQB8QHkAf8BAwF3AQMB/wETAX0BEwH/AZwBzgGcCf8B+QH3AfkB/wHmAd4B5wH/AV4BcAFWAfUBXQGP
AZABWQH7AZsBcAFmAfMBjwFhAV0B7Qz/Aa4BeQFXAf8BXAIDAf8B+AH1AfIB/wH6AfcB9QH/AVwCAwH/ AVkB+wGWAW8BZAHzAYkBYAFdAe0M/wGuAXgBVgH/AVsCAgH/AfgB9QHyAf8B+gH3AfUB/wFbAgIB/wGz
AbMBfgFdBf8B8QH0AfUB/wHeAeYB5wH/AYgBWgFNAfUBmQFhAVQB+0AAAYIBiAHKAf8B0AHSAe0J/wL1 AX0BXAX/AfEB9AH1Af8B3gHmAecB/wGFAVkBTgH1AZcBXwFUAftAAAGCAYgBygH/AdAB0gHtCf8C9QH6
AfoB/wE+ATsBuwH/AWoBZwHeAf8BZwFjAdgB/wFiAV4B0wH/AVYBUQHRAf8BogGhAekF/wL5AfgB/wH8 Af8BPQE6AbsB/wFpAWYB3gH/AWYBYgHYAf8BYQFdAdMB/wFVAVAB0QH/AaIBoQHpBf8C+QH4Af8B/AH7
AfsB6gH/AaMBpgG+Af8BRgFNAaAB/wGCAcoBigH/AdAB7QHUEf8B4gHwAeIB/wEFAXkBBQH/AQMBeQED AeoB/wGjAaYBvgH/AUUBTAGgAf8BggHKAYoB/wHQAe0B1BH/AeIB8AHiAf8BBAF4AQQB/wECAXgBAgH/
Af8BFAGEARQB/wGYAcwBmAX/AfkB+AH5Af8B/AHqAfoB/wGjAb4BpQH/AUYBoAFRAf8BygGcAYIB/wHt ARMBhAETAf8BmAHMAZgF/wH5AfgB+QH/AfwB6gH6Af8BowG+AaUB/wFFAaABUAH/AcoBnAGCAf8B7QHb
AdsB0A3/AboBjAFtAf8BjQElAQMC/wL+Af8D/gH/AY0BJAEDAf8BuwGJAWsF/wHyAfQB9QH/AeoB9QH8 AdAN/wG6AYwBbAH/AY0BJAECAv8C/gH/A/4B/wGNASMBAgH/AbsBiQFqBf8B8gH0AfUB/wHqAfUB/AH/
Af8BvgGsAaMB/wGgAWcBRgH/QAABdwF9AcIB/wHlAeYB9An/AvcB+wH/AU0BSgHDAf8BeAF2AeMB/wFz Ab4BrAGjAf8BoAFmAUUB/0AAAXYBfAHCAf8B5QHmAfQJ/wL3AfsB/wFMAUkBwwH/AXcBdQHjAf8BcgFv
AXAB3QH/AW4BawHYAf8BYgFdAdMB/wGrAakB6gX/A/kB/wH+AfsB7wH/AbQBtgHFAf8BRAFMAZ8B/wF3 Ad0B/wFtAWoB2AH/AWEBXAHTAf8BqwGpAeoF/wP5Af8B/gH7Ae8B/wG0AbYBxQH/AUMBSwGfAf8BdgHC
AcIBgQH/AeUB9AHnEf8B4gHwAeIB/wEEAXsBBAH/AQMBfQEDAf8BAwF1AQMB/wEUAYQBFAH/AfoB/AH6 AYEB/wHlAfQB5xH/AeIB8AHiAf8BAwF6AQMB/wECAXwBAgH/AQIBdAECAf8BEwGEARMB/wH6AfwB+gH/
Af8D+QH/Af4B7wH+Af8BtAHFAbYB/wFEAZ8BTwH/AcIBkwF3Af8B9AHrAeUN/wG5AYwBbgH/AacBOwEO A/kB/wH+Ae8B/gH/AbQBxQG2Af8BQwGfAU4B/wHCAZMBdgH/AfQB6wHlDf8BuQGMAW0B/wGnAToBDQH/
Af8B+wH5AfgB/wH7AfoB+QH/AacBOwEOAf8BvQGMAW4F/wP0Af8B7wH6Af4B/wHFAboBtAH/AZ8BZQFE AfsB+QH4Af8B+wH6AfkB/wGnAToBDQH/Ab0BjAFtBf8D9AH/Ae8B+gH+Af8BxQG6AbQB/wGfAWQBQwH/
Af9AAAFzAXoBvQH/AtoB7wn/AvcB+wH/AVEBTgHHAf8BfgF8AeoB/wF5AXgB4wH/AXYBdAHfAf8BaQFm QAABcgF5Ab0B/wLaAe8J/wL3AfsB/wFQAU0BxwH/AX0BewHqAf8BeAF3AeMB/wF1AXMB3wH/AWgBZQHa
AdoB/wGtAasB6wX/AvoB+AH/Af0B/AHuAf8BnQGgAbsB/wFMAVQBowH/AXMBvQF7Af8B2gHvAd4R/wHi Af8BrQGrAesF/wL6AfgB/wH9AfwB7gH/AZ0BoAG7Af8BSwFTAaMB/wFyAb0BegH/AdoB7wHeEf8B4gHw
AfAB4gH/AQUBewEFAf8BAwFzAQMB/wEvAY4BLwH/AeIB8AHiBf8B+gH4AfoB/wH9Ae4B+wH/AZ0BuwGh AeIB/wEEAXoBBAH/AQIBcgECAf8BLgGOAS4B/wHiAfAB4gX/AfoB+AH6Af8B/QHuAfsB/wGdAbsBoQH/
Af8BTAGjAVUB/wG9AY4BcwH/Ae8B4wHaDf8BtwGIAWkB/wHEAUoBJwH/Av0B/AH/AfwB+gH5Af8BxgFN AUsBowFUAf8BvQGOAXIB/wHvAeMB2g3/AbcBiAFoAf8BxAFJASYB/wL9AfwB/wH8AfoB+QH/AcYBTAEo
ASkB/wHCAY8BcwX/AfIB9QH3Af8B7gH3Af0B/wG7AagBnQH/AaMBawFMAf9AAAF+AVwBcQHvAYcBawF8 Af8BwgGPAXIF/wHyAfUB9wH/Ae4B9wH9Af8BuwGoAZ0B/wGjAWoBSwH/QAABegFbAW8B7wGEAWkBeQHx
AfEI/wL2AfsB/wFOAUoBxQH/AX0BfAHrAf8BeQF4AeQB/wF3AXQB4QH/AWcBZAHbAf8BqQGnAesF/wL7 CP8C9gH7Af8BTQFJAcUB/wF8AXsB6wH/AXgBdwHkAf8BdgFzAeEB/wFmAWMB2wH/AakBpwHrBf8C+wH5
AfkB/wH7AfwB7gH/AU0BSgGIAfsBeAFcAWoB7wF+AXEBXAHvAYcBfAFsAfEQ/wHiAfAB4gH/AQMBcQED Af8B+wH8Ae4B/wFNAUoBhwH7AXQBWwFnAe8BegFvAVsB7wGEAXkBagHxEP8B4gHwAeIB/wECAXABAgH/
Af8BKwGHASsB/wHnAfMB5wn/AfsB+QH7Af8B/AHuAfkB/wFNAYgBTAH7AXgBagFcAe8BkAFlAVwB7wGe ASoBhwEqAf8B5wHzAecJ/wH7AfkB+wH/AfwB7gH5Af8BTQGHAUwB+wF0AWcBWwHvAYsBZAFbAe8BlwFv
AXABagHxDP8BwQGXAX0B/wGkAUEBGQH/Af0B+wH6Af8B/AH6AfkB/wGTATwBEgH/AcwBqQGUBf8B9AH3 AWgB8Qz/AcEBlwF8Af8BpAFAARgB/wH9AfsB+gH/AfwB+gH5Af8BkwE7AREB/wHMAakBlAX/AfQB9wH5
AfkB/wHuAfUB/AH/AZEBWQFFAfsBjQFcAVsB70QAAX4BgQHPCf8C8wH5Af8BTAFJAbkB/wGHAYYB1gH/ Af8B7gH1AfwB/wGQAVkBRQH7AYcBWwFaAe9EAAF9AYEBzwn/AvMB+QH/AUsBSAG5Af8BhwGGAdYB/wGH
AYcBhQHVAf8BhwGFAdUB/wFoAWUByAH/AXABbwHMBv8B/gH8Af8CzgHXAf8BPAFEAZgB/wgAAX4BzwGN AYUB1QH/AYcBhQHVAf8BZwFkAcgB/wFvAW4BzAb/Af4B/AH/As4B1wH/ATsBQwGYAf8IAAF9Ac8BjRH/
Ef8B0wHoAdMB/wEnAYcBJwH/AeIB8AHiDf8B/gH8Av8BzgHXAdAB/wE8AZgBRgH/CAABzwGhAX4p/wH7 AdMB6AHTAf8BJgGHASYB/wHiAfAB4g3/Af4B/AL/Ac4B1wHQAf8BOwGYAUUB/wgAAc8BoQF9Kf8B+wP/
A/8B1wHSAc4B/wGYAV0BPAH/SAABiQF8AagB+QGSAXABiQHxJP8B/AH7AfYB/wE6AUIBlgH/AXoBUgFc AdcB0gHOAf8BmAFcATsB/0gAAYgBeQGkAfkBjgFvAYUB8ST/AfwB+wH2Af8BOQFBAZYB/wF2AVQBWwHp
AekIAAGJAagBfgH5AZIBiQF5AfEM/wH6AfwB+gH/Ae8B9gHvEf8B/AH2AfwB/wE6AZYBRAH/AXoBXAFR CAABiAGkAXsB+QGOAYUBdQHxDP8B+gH8AfoB/wHvAfYB7xH/AfwB9gH8Af8BOQGWAUMB/wF2AVsBUgHp
AekIAAG3AYgBewH5AaUBegFwAfEk/wH1AfoB/AH/AZYBWwE6Af8BgwFVAVEB6UwAAoMBwAH9AYQBXQFj CAABswGHAXgB+QGfAXYBbwHxJP8B9QH6AfwB/wGWAVoBOQH/AX4BVwFSAelMAAKDAb4B/QF/AV0BYgHp
Aekc/wHyAfUB+AH/AV4BUwFzAfUBcQFeAYEB9RAAAYMBwAGIAf0BhAFjAV0B6Rz/AfQB+AHyAf8BXgFz HP8B8gH1AfgB/wFcAVQBcAH1AW8BXAF/AfUQAAGDAb4BiAH9AX8BYgFdAekc/wH0AfgB8gH/AVwBcAFU
AVMB9QFxAYEBZAH1EAABxgGdAX8B/QGLAV8BXQHpHP8B+ALyAf8BiQFYAUsB9QGXAWoBWgH1VAABgwGA AfUBbwF/AWIB9RAAAcMBnQF9Af0BgwFfAV0B6Rz/AfgC8gH/AYYBWQFLAfUBkgFpAVkB9VQAAYIBfwGx
AbUB+wGRAYMBsgH5AtMB9wH/AfEB8AH7Af8B9gH3Av8B9wH4Af0B/wHkAecB8wH/AXkBXAFtAe8BeAFg AfsBjwGCAa8B+QLTAfcB/wHxAfAB+wH/AfYB9wL/AfcB+AH9Af8B5AHnAfMB/wF0AVsBagHvAXQBXwF0
AXgB8wGBAVkBYwHrGAABgwG1AYQB+wGRAbIBiwH5AdMB9wHaAf8B8AH7AfMB/wH2Af8B9wH/AfcB/QH4 AfMBfQFZAWIB6xgAAYIBsQGDAfsBjwGvAYoB+QHTAfcB2gH/AfAB+wHzAf8B9gH/AfcB/wH3Af0B+AH/
Af8B5AHzAeQB/wF5AW0BXAHvAngBYgHzAYEBYwFZAesYAAG/AY8BewH7Ab4BmAGCAfkB9wHjAdMB/wH7 AeQB8wHkAf8BdAFqAVsB7wJ0AWAB8wF9AWIBWQHrGAABuwGOAXgB+wG6AZQBgQH5AfcB4wHTAf8B+wH2
AfYB8AL/AfkB9gH/Af0B+QH3Af8B8wHoAeQB/wGPAV8BXAHvAZMBaAFfAfMBiwFdAVkB61wAAYUBXQFq AfAC/wH5AfYB/wH9AfkB9wH/AfMB6AHkAf8BiQFeAVsB7wGOAWYBXwHzAYUBXgFZAetcAAGBAV4BaQHr
AesBjQGTAdcB/wGOAZQB3QH/AY8BlQHgAf8BjQGUAdsB/wGaAZ8B2gH/AX4BUgFZAeckAAGFAWoBXwHr AY0BkwHXAf8BjgGUAd0B/wGPAZUB4AH/AY0BlAHbAf8BmgGfAdoB/wF4AVMBWwHnJAABgQFpAWAB6wGN
AY0B1wGWAf8BjgHdAZgB/wGPAeABmQH/AY0B2wGWAf8BmgHaAaIB/wF+AVkBUwHnJAABkAFiAV0B6wHX AdcBlgH/AY4B3QGYAf8BjwHgAZkB/wGNAdsBlgH/AZoB2gGiAf8BeAFbAVQB5yQAAYoBYQFeAesB1wGo
AagBjQH/Ad0BrAGOAf8B4AGtAY8B/wHbAakBjQH/AdoBsgGaAf8BgwFUAVEB51QAAUIBTQE+BwABPgMA AY0B/wHdAawBjgH/AeABrQGPAf8B2wGpAY0B/wHaAbIBmgH/AX4BVQFTAedUAAFCAU0BPgcAAT4DAAEo
ASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAH8AT8B/AE/AfwBPwIAAfABDwHwAQ8B8AEPAgAB4AEH AwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAB/AE/AfwBPwH8AT8CAAHwAQ8B8AEPAfABDwIAAeABBwHg
AeABBwHgAQcCAAHAAQMBwAEDAcABAwIAAYABAQGAAQEBgAEBAgABgAEBAYABAQGAAQEqAAGAAQEBgAEB AQcB4AEHAgABwAEDAcABAwHAAQMCAAGAAQEBgAEBAYABAQIAAYABAQGAAQEBgAEBKgABgAEBAYABAQGA
AYABAQIAAYABAQGAAQEBgAEBAgABwAEDAcABAwHAAQMCAAHgAQcB4AEHAeABBwIAAfABHwHwAR8B8AEf AQECAAGAAQEBgAEBAYABAQIAAcABAwHAAQMBwAEDAgAB4AEHAeABBwHgAQcCAAHwAR8B8AEfAfABHwIA
AgAL Cw==
</value> </value>
</data> </data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">