From 796a62f88303b4e36d9c3cdd8520c292c65967c9 Mon Sep 17 00:00:00 2001 From: feos Date: Wed, 25 Nov 2015 23:28:46 +0300 Subject: [PATCH] tastudio: moved branch and marker popups to their controls. marker add called from MarkerControl doesn't check TasView selection anymore: current frame has higher priority, and if we don't want a marker on it, we use TasView's doubleclic or menu to mark selection. sight MarkerControl cleanup. --- .../tools/TAStudio/BookmarksBranchesBox.cs | 28 +++++- .../tools/TAStudio/MarkerControl.Designer.cs | 78 ++++++++-------- .../tools/TAStudio/MarkerControl.cs | 88 +++++++++++++++---- .../tools/TAStudio/TAStudio.ListView.cs | 2 +- .../tools/TAStudio/TAStudio.MenuItems.cs | 2 +- .../tools/TAStudio/TAStudio.cs | 63 ------------- 6 files changed, 136 insertions(+), 125 deletions(-) diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs index ccfa8c9666..f1e42d5363 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs @@ -10,6 +10,7 @@ using System.Windows.Media; using BizHawk.Emulation.Common; using BizHawk.Client.Common; using BizHawk.Common; +using BizHawk.Client.EmuHawk.WinFormExtensions; namespace BizHawk.Client.EmuHawk { @@ -201,7 +202,7 @@ namespace BizHawk.Client.EmuHawk private void AddBranchWithTexToolStripMenuItem_Click(object sender, EventArgs e) { Branch(); - Tastudio.CallEditBranchTextPopUp(Movie.CurrentBranch); + EditBranchTextPopUp(Movie.CurrentBranch); } private void LoadBranchToolStripMenuItem_Click(object sender, EventArgs e) @@ -223,7 +224,7 @@ namespace BizHawk.Client.EmuHawk if (SelectedBranch != null) { int index = BranchView.SelectedRows.First(); - Tastudio.CallEditBranchTextPopUp(index); + EditBranchTextPopUp(index); } } @@ -267,6 +268,29 @@ namespace BizHawk.Client.EmuHawk BranchView.Refresh(); } + public void EditBranchTextPopUp(int index) + { + TasBranch branch = Movie.GetBranch(index); + if (branch == null) + return; + + InputPrompt i = new InputPrompt + { + Text = "Text for branch " + index, + TextInputType = InputPrompt.InputType.Text, + Message = "Enter a message", + InitialValue = branch.UserText + }; + + var result = i.ShowHawkDialog(); + + if (result == DialogResult.OK) + { + branch.UserText = i.PromptText; + UpdateValues(); + } + } + private void ScreenShotPopUp(TasBranch branch, int index) { Point locationOnForm = this.FindForm().PointToClient( diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.Designer.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.Designer.cs index 74248aab0f..b89908387a 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.Designer.cs @@ -30,12 +30,12 @@ { this.components = new System.ComponentModel.Container(); this.MarkerContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components); - this.JumpToToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.JumpToMarkerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.ScrollToMarkerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.EditMarkerContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.AddMarkerContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.EditMarkerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.AddMarkerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.RemoveMarkerContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.RemoveMarkerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.JumpToMarkerButton = new System.Windows.Forms.Button(); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.EditMarkerButton = new System.Windows.Forms.Button(); @@ -49,23 +49,23 @@ // MarkerContextMenu // this.MarkerContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.JumpToToolStripMenuItem, + this.JumpToMarkerToolStripMenuItem, this.ScrollToMarkerToolStripMenuItem, - this.EditMarkerContextMenuItem, - this.AddMarkerContextMenuItem, + this.EditMarkerToolStripMenuItem, + this.AddMarkerToolStripMenuItem, this.toolStripSeparator1, - this.RemoveMarkerContextMenuItem}); + this.RemoveMarkerToolStripMenuItem}); this.MarkerContextMenu.Name = "MarkerContextMenu"; this.MarkerContextMenu.Size = new System.Drawing.Size(126, 120); this.MarkerContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.MarkerContextMenu_Opening); // - // JumpToToolStripMenuItem + // JumpToMarkerToolStripMenuItem // - this.JumpToToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.JumpTo; - this.JumpToToolStripMenuItem.Name = "JumpToToolStripMenuItem"; - this.JumpToToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.JumpToToolStripMenuItem.Text = "Jump To"; - this.JumpToToolStripMenuItem.Click += new System.EventHandler(this.JumpToMarkerToolStripMenuItem_Click); + this.JumpToMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.JumpTo; + this.JumpToMarkerToolStripMenuItem.Name = "JumpToMarkerToolStripMenuItem"; + this.JumpToMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.JumpToMarkerToolStripMenuItem.Text = "Jump To"; + this.JumpToMarkerToolStripMenuItem.Click += new System.EventHandler(this.JumpToMarkerToolStripMenuItem_Click); // // ScrollToMarkerToolStripMenuItem // @@ -75,34 +75,34 @@ this.ScrollToMarkerToolStripMenuItem.Text = "Scroll To"; this.ScrollToMarkerToolStripMenuItem.Click += new System.EventHandler(this.ScrollToMarkerToolStripMenuItem_Click); // - // EditMarkerContextMenuItem + // EditMarkerToolStripMenuItem // - this.EditMarkerContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.pencil; - this.EditMarkerContextMenuItem.Name = "EditMarkerContextMenuItem"; - this.EditMarkerContextMenuItem.Size = new System.Drawing.Size(152, 22); - this.EditMarkerContextMenuItem.Text = "Edit"; - this.EditMarkerContextMenuItem.Click += new System.EventHandler(this.EditMarkerToolStripMenuItem_Click); + this.EditMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.pencil; + this.EditMarkerToolStripMenuItem.Name = "EditMarkerToolStripMenuItem"; + this.EditMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.EditMarkerToolStripMenuItem.Text = "Edit"; + this.EditMarkerToolStripMenuItem.Click += new System.EventHandler(this.EditMarkerToolStripMenuItem_Click); // - // AddMarkerContextMenuItem + // AddMarkerToolStripMenuItem // - this.AddMarkerContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.add; - this.AddMarkerContextMenuItem.Name = "AddMarkerContextMenuItem"; - this.AddMarkerContextMenuItem.Size = new System.Drawing.Size(152, 22); - this.AddMarkerContextMenuItem.Text = "Add"; - this.AddMarkerContextMenuItem.Click += new System.EventHandler(this.AddMarkerToolStripMenuItem_Click); + this.AddMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.add; + this.AddMarkerToolStripMenuItem.Name = "AddMarkerToolStripMenuItem"; + this.AddMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.AddMarkerToolStripMenuItem.Text = "Add"; + this.AddMarkerToolStripMenuItem.Click += new System.EventHandler(this.AddMarkerToolStripMenuItem_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6); // - // RemoveMarkerContextMenuItem + // RemoveMarkerToolStripMenuItem // - this.RemoveMarkerContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete; - this.RemoveMarkerContextMenuItem.Name = "RemoveMarkerContextMenuItem"; - this.RemoveMarkerContextMenuItem.Size = new System.Drawing.Size(152, 22); - this.RemoveMarkerContextMenuItem.Text = "Remove"; - this.RemoveMarkerContextMenuItem.Click += new System.EventHandler(this.RemoveMarkerToolStripMenuItem_Click); + this.RemoveMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete; + this.RemoveMarkerToolStripMenuItem.Name = "RemoveMarkerToolStripMenuItem"; + this.RemoveMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.RemoveMarkerToolStripMenuItem.Text = "Remove"; + this.RemoveMarkerToolStripMenuItem.Click += new System.EventHandler(this.RemoveMarkerToolStripMenuItem_Click); // // JumpToMarkerButton // @@ -221,16 +221,16 @@ private InputRoll MarkerView; private System.Windows.Forms.Button AddMarkerButton; private System.Windows.Forms.Button RemoveMarkerButton; - private System.Windows.Forms.ContextMenuStrip MarkerContextMenu; - private System.Windows.Forms.ToolStripMenuItem ScrollToMarkerToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem EditMarkerContextMenuItem; - private System.Windows.Forms.ToolStripMenuItem AddMarkerContextMenuItem; - private System.Windows.Forms.ToolStripMenuItem RemoveMarkerContextMenuItem; - private System.Windows.Forms.ToolTip toolTip1; private System.Windows.Forms.Button JumpToMarkerButton; private System.Windows.Forms.Button EditMarkerButton; private System.Windows.Forms.Button ScrollToMarkerButton; - private System.Windows.Forms.ToolStripMenuItem JumpToToolStripMenuItem; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.ContextMenuStrip MarkerContextMenu; + private System.Windows.Forms.ToolStripMenuItem ScrollToMarkerToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem EditMarkerToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem AddMarkerToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem RemoveMarkerToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem JumpToMarkerToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs index 6dcba234cd..f27413401d 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/MarkerControl.cs @@ -9,6 +9,7 @@ using System.Windows.Forms; using BizHawk.Client.Common; using BizHawk.Emulation.Common; +using BizHawk.Client.EmuHawk.WinFormExtensions; namespace BizHawk.Client.EmuHawk { @@ -16,6 +17,7 @@ namespace BizHawk.Client.EmuHawk { public TAStudio Tastudio { get; set; } public IEmulator Emulator { get; set; } + public TasMovieMarkerList Markers { get { return Tastudio.CurrentTasMovie.Markers; } } public MarkerControl() { @@ -50,15 +52,15 @@ namespace BizHawk.Client.EmuHawk private void MarkerView_QueryItemBkColor(int index, InputRoll.RollColumn column, ref Color color) { - var prev = Tastudio.CurrentTasMovie.Markers.PreviousOrCurrent(Global.Emulator.Frame);//Temp fix + var prev = Markers.PreviousOrCurrent(Global.Emulator.Frame);//Temp fix - if (prev != null && index == Tastudio.CurrentTasMovie.Markers.IndexOf(prev)) + if (prev != null && index == Markers.IndexOf(prev)) { color = TAStudio.Marker_FrameCol; } - else if (index < Tastudio.CurrentTasMovie.Markers.Count) + else if (index < Markers.Count) { - var marker = Tastudio.CurrentTasMovie.Markers[index]; + var marker = Markers[index]; var record = Tastudio.CurrentTasMovie[marker.Frame]; if (record.Lagged.HasValue) @@ -87,20 +89,21 @@ namespace BizHawk.Client.EmuHawk if (column.Name == "FrameColumn") { - text = Tastudio.CurrentTasMovie.Markers[index].Frame.ToString(); + text = Markers[index].Frame.ToString(); } else if (column.Name == "LabelColumn") { - text = Tastudio.CurrentTasMovie.Markers[index].Message; + text = Markers[index].Message; } } private void MarkerContextMenu_Opening(object sender, CancelEventArgs e) { - EditMarkerContextMenuItem.Enabled = - RemoveMarkerContextMenuItem.Enabled = + EditMarkerToolStripMenuItem.Enabled = + RemoveMarkerToolStripMenuItem.Enabled = + JumpToMarkerToolStripMenuItem.Enabled = ScrollToMarkerToolStripMenuItem.Enabled = - MarkerInputRoll.AnyRowsSelected; + MarkerInputRoll.AnyRowsSelected && MarkerView.SelectedRows.First() != 0; } private void ScrollToMarkerToolStripMenuItem_Click(object sender, EventArgs e) @@ -117,7 +120,7 @@ namespace BizHawk.Client.EmuHawk if (MarkerView.AnyRowsSelected) { var index = MarkerView.SelectedRows.First(); - var marker = Tastudio.CurrentTasMovie.Markers[index]; + var marker = Markers[index]; Tastudio.GoToFrame(marker.Frame); } } @@ -127,14 +130,14 @@ namespace BizHawk.Client.EmuHawk if (MarkerView.AnyRowsSelected) { var index = MarkerView.SelectedRows.First(); - var marker = Tastudio.CurrentTasMovie.Markers[index]; - Tastudio.CallEditMarkerPopUp(marker); + var marker = Markers[index]; + EditMarkerPopUp(marker); } } private void AddMarkerToolStripMenuItem_Click(object sender, EventArgs e) { - Tastudio.CallAddMarkerPopUp(); + AddMarkerPopUp(); MarkerView_SelectedIndexChanged(null, null); } @@ -142,21 +145,68 @@ namespace BizHawk.Client.EmuHawk { if (MarkerView.AnyRowsSelected) { - SelectedMarkers.ForEach(i => Tastudio.CurrentTasMovie.Markers.Remove(i)); + SelectedMarkers.ForEach(i => Markers.Remove(i)); MarkerInputRoll.DeselectAll(); Tastudio.RefreshDialog(); MarkerView_SelectedIndexChanged(null, null); } } + public void AddMarkerPopUp(int? frame = null) + { + // feos: we specify the selected frame if we call it from TasView, otherwise it should be added to the emulated frame + var markerFrame = frame ?? Global.Emulator.Frame; + InputPrompt i = new InputPrompt + { + Text = "Marker for frame " + markerFrame, + TextInputType = InputPrompt.InputType.Text, + Message = "Enter a message", + InitialValue = + Markers.IsMarker(markerFrame) ? + Markers.PreviousOrCurrent(markerFrame).Message : + "" + }; + + var result = i.ShowHawkDialog(); + + if (result == DialogResult.OK) + { + Markers.Add(new TasMovieMarker(markerFrame, i.PromptText)); + UpdateValues(); + } + } + + public void EditMarkerPopUp(TasMovieMarker marker) + { + var markerFrame = marker.Frame; + InputPrompt i = new InputPrompt + { + Text = "Marker for frame " + markerFrame, + TextInputType = InputPrompt.InputType.Text, + Message = "Enter a message", + InitialValue = + Markers.IsMarker(markerFrame) ? + Markers.PreviousOrCurrent(markerFrame).Message : + "" + }; + + var result = i.ShowHawkDialog(); + + if (result == DialogResult.OK) + { + marker.Message = i.PromptText; + UpdateValues(); + } + } + public void UpdateValues() { if (MarkerView != null && Tastudio != null && Tastudio.CurrentTasMovie != null && - Tastudio.CurrentTasMovie.Markers != null) + Markers != null) { - MarkerView.RowCount = Tastudio.CurrentTasMovie.Markers.Count; + MarkerView.RowCount = Markers.Count; } MarkerView.Refresh(); @@ -182,7 +232,7 @@ namespace BizHawk.Client.EmuHawk get { return MarkerView.SelectedRows - .Select(index => Tastudio.CurrentTasMovie.Markers[index]) + .Select(index => Markers[index]) .ToList(); } } @@ -199,7 +249,7 @@ namespace BizHawk.Client.EmuHawk if (MarkerView.CurrentCell != null && MarkerView.CurrentCell.RowIndex.HasValue && MarkerView.CurrentCell.RowIndex < MarkerView.RowCount) { - var marker = Tastudio.CurrentTasMovie.Markers[MarkerView.CurrentCell.RowIndex.Value]; + var marker = Markers[MarkerView.CurrentCell.RowIndex.Value]; Tastudio.GoToFrame(marker.Frame); } } @@ -209,7 +259,7 @@ namespace BizHawk.Client.EmuHawk if (MarkerView.AnyRowsSelected) { var index = MarkerView.SelectedRows.First(); - var marker = Tastudio.CurrentTasMovie.Markers[index]; + var marker = Markers[index]; return marker.Frame; } return -1; diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs index f5e9d1bfd4..01a3de7e12 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs @@ -628,7 +628,7 @@ namespace BizHawk.Client.EmuHawk else { ClearLeftMouseStates(); - CallAddMarkerPopUp(TasView.CurrentCell.RowIndex.Value); + MarkerControl.AddMarkerPopUp(TasView.CurrentCell.RowIndex.Value); } } } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs index 006ed6fbfe..62ecbb7c3e 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs @@ -585,7 +585,7 @@ namespace BizHawk.Client.EmuHawk { foreach (var index in TasView.SelectedRows) { - CallAddMarkerPopUp(index); + MarkerControl.AddMarkerPopUp(index); } } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 03ee7a8e25..f09ebbf656 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -715,69 +715,6 @@ namespace BizHawk.Client.EmuHawk SplicerStatusLabel.Text = message; } - public void CallAddMarkerPopUp(int? frame = null) - { - var markerFrame = frame ?? TasView.LastSelectedIndex ?? Emulator.Frame; - InputPrompt i = new InputPrompt - { - Text = "Marker for frame " + markerFrame, - TextInputType = InputPrompt.InputType.Text, - Message = "Enter a message", - InitialValue = CurrentTasMovie.Markers.IsMarker(markerFrame) ? CurrentTasMovie.Markers.PreviousOrCurrent(markerFrame).Message : "" - }; - - var result = i.ShowHawkDialog(); - - if (result == DialogResult.OK) - { - CurrentTasMovie.Markers.Add(new TasMovieMarker(markerFrame, i.PromptText)); - MarkerControl.UpdateValues(); - } - } - - public void CallEditMarkerPopUp(TasMovieMarker marker) - { - var markerFrame = marker.Frame; - InputPrompt i = new InputPrompt - { - Text = "Marker for frame " + markerFrame, - TextInputType = InputPrompt.InputType.Text, - Message = "Enter a message", - InitialValue = CurrentTasMovie.Markers.IsMarker(markerFrame) ? CurrentTasMovie.Markers.PreviousOrCurrent(markerFrame).Message : "" - }; - - var result = i.ShowHawkDialog(); - - if (result == DialogResult.OK) - { - marker.Message = i.PromptText; - MarkerControl.UpdateValues(); - } - } - - public void CallEditBranchTextPopUp(int index) - { - TasBranch branch = CurrentTasMovie.GetBranch(index); - if (branch == null) - return; - - InputPrompt i = new InputPrompt - { - Text = "Text for branch " + index, - TextInputType = InputPrompt.InputType.Text, - Message = "Enter a message", - InitialValue = branch.UserText - }; - - var result = i.ShowHawkDialog(); - - if (result == DialogResult.OK) - { - branch.UserText = i.PromptText; - BookMarkControl.UpdateValues(); - } - } - private void UpdateChangesIndicator() { // TODO