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.
This commit is contained in:
feos 2015-11-25 23:28:46 +03:00
parent 344cd94aa2
commit 796a62f883
6 changed files with 136 additions and 125 deletions

View File

@ -10,6 +10,7 @@ using System.Windows.Media;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
using BizHawk.Client.Common; using BizHawk.Client.Common;
using BizHawk.Common; using BizHawk.Common;
using BizHawk.Client.EmuHawk.WinFormExtensions;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk
{ {
@ -201,7 +202,7 @@ namespace BizHawk.Client.EmuHawk
private void AddBranchWithTexToolStripMenuItem_Click(object sender, EventArgs e) private void AddBranchWithTexToolStripMenuItem_Click(object sender, EventArgs e)
{ {
Branch(); Branch();
Tastudio.CallEditBranchTextPopUp(Movie.CurrentBranch); EditBranchTextPopUp(Movie.CurrentBranch);
} }
private void LoadBranchToolStripMenuItem_Click(object sender, EventArgs e) private void LoadBranchToolStripMenuItem_Click(object sender, EventArgs e)
@ -223,7 +224,7 @@ namespace BizHawk.Client.EmuHawk
if (SelectedBranch != null) if (SelectedBranch != null)
{ {
int index = BranchView.SelectedRows.First(); int index = BranchView.SelectedRows.First();
Tastudio.CallEditBranchTextPopUp(index); EditBranchTextPopUp(index);
} }
} }
@ -267,6 +268,29 @@ namespace BizHawk.Client.EmuHawk
BranchView.Refresh(); 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) private void ScreenShotPopUp(TasBranch branch, int index)
{ {
Point locationOnForm = this.FindForm().PointToClient( Point locationOnForm = this.FindForm().PointToClient(

View File

@ -30,12 +30,12 @@
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
this.MarkerContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components); 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.ScrollToMarkerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.EditMarkerContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.EditMarkerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.AddMarkerContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.AddMarkerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); 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.JumpToMarkerButton = new System.Windows.Forms.Button();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.EditMarkerButton = new System.Windows.Forms.Button(); this.EditMarkerButton = new System.Windows.Forms.Button();
@ -49,23 +49,23 @@
// MarkerContextMenu // MarkerContextMenu
// //
this.MarkerContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.MarkerContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.JumpToToolStripMenuItem, this.JumpToMarkerToolStripMenuItem,
this.ScrollToMarkerToolStripMenuItem, this.ScrollToMarkerToolStripMenuItem,
this.EditMarkerContextMenuItem, this.EditMarkerToolStripMenuItem,
this.AddMarkerContextMenuItem, this.AddMarkerToolStripMenuItem,
this.toolStripSeparator1, this.toolStripSeparator1,
this.RemoveMarkerContextMenuItem}); this.RemoveMarkerToolStripMenuItem});
this.MarkerContextMenu.Name = "MarkerContextMenu"; this.MarkerContextMenu.Name = "MarkerContextMenu";
this.MarkerContextMenu.Size = new System.Drawing.Size(126, 120); this.MarkerContextMenu.Size = new System.Drawing.Size(126, 120);
this.MarkerContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.MarkerContextMenu_Opening); this.MarkerContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.MarkerContextMenu_Opening);
// //
// JumpToToolStripMenuItem // JumpToMarkerToolStripMenuItem
// //
this.JumpToToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.JumpTo; this.JumpToMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.JumpTo;
this.JumpToToolStripMenuItem.Name = "JumpToToolStripMenuItem"; this.JumpToMarkerToolStripMenuItem.Name = "JumpToMarkerToolStripMenuItem";
this.JumpToToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.JumpToMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.JumpToToolStripMenuItem.Text = "Jump To"; this.JumpToMarkerToolStripMenuItem.Text = "Jump To";
this.JumpToToolStripMenuItem.Click += new System.EventHandler(this.JumpToMarkerToolStripMenuItem_Click); this.JumpToMarkerToolStripMenuItem.Click += new System.EventHandler(this.JumpToMarkerToolStripMenuItem_Click);
// //
// ScrollToMarkerToolStripMenuItem // ScrollToMarkerToolStripMenuItem
// //
@ -75,34 +75,34 @@
this.ScrollToMarkerToolStripMenuItem.Text = "Scroll To"; this.ScrollToMarkerToolStripMenuItem.Text = "Scroll To";
this.ScrollToMarkerToolStripMenuItem.Click += new System.EventHandler(this.ScrollToMarkerToolStripMenuItem_Click); this.ScrollToMarkerToolStripMenuItem.Click += new System.EventHandler(this.ScrollToMarkerToolStripMenuItem_Click);
// //
// EditMarkerContextMenuItem // EditMarkerToolStripMenuItem
// //
this.EditMarkerContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.pencil; this.EditMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.pencil;
this.EditMarkerContextMenuItem.Name = "EditMarkerContextMenuItem"; this.EditMarkerToolStripMenuItem.Name = "EditMarkerToolStripMenuItem";
this.EditMarkerContextMenuItem.Size = new System.Drawing.Size(152, 22); this.EditMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.EditMarkerContextMenuItem.Text = "Edit"; this.EditMarkerToolStripMenuItem.Text = "Edit";
this.EditMarkerContextMenuItem.Click += new System.EventHandler(this.EditMarkerToolStripMenuItem_Click); this.EditMarkerToolStripMenuItem.Click += new System.EventHandler(this.EditMarkerToolStripMenuItem_Click);
// //
// AddMarkerContextMenuItem // AddMarkerToolStripMenuItem
// //
this.AddMarkerContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.add; this.AddMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.add;
this.AddMarkerContextMenuItem.Name = "AddMarkerContextMenuItem"; this.AddMarkerToolStripMenuItem.Name = "AddMarkerToolStripMenuItem";
this.AddMarkerContextMenuItem.Size = new System.Drawing.Size(152, 22); this.AddMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.AddMarkerContextMenuItem.Text = "Add"; this.AddMarkerToolStripMenuItem.Text = "Add";
this.AddMarkerContextMenuItem.Click += new System.EventHandler(this.AddMarkerToolStripMenuItem_Click); this.AddMarkerToolStripMenuItem.Click += new System.EventHandler(this.AddMarkerToolStripMenuItem_Click);
// //
// toolStripSeparator1 // toolStripSeparator1
// //
this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6); this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6);
// //
// RemoveMarkerContextMenuItem // RemoveMarkerToolStripMenuItem
// //
this.RemoveMarkerContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete; this.RemoveMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete;
this.RemoveMarkerContextMenuItem.Name = "RemoveMarkerContextMenuItem"; this.RemoveMarkerToolStripMenuItem.Name = "RemoveMarkerToolStripMenuItem";
this.RemoveMarkerContextMenuItem.Size = new System.Drawing.Size(152, 22); this.RemoveMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.RemoveMarkerContextMenuItem.Text = "Remove"; this.RemoveMarkerToolStripMenuItem.Text = "Remove";
this.RemoveMarkerContextMenuItem.Click += new System.EventHandler(this.RemoveMarkerToolStripMenuItem_Click); this.RemoveMarkerToolStripMenuItem.Click += new System.EventHandler(this.RemoveMarkerToolStripMenuItem_Click);
// //
// JumpToMarkerButton // JumpToMarkerButton
// //
@ -221,16 +221,16 @@
private InputRoll MarkerView; private InputRoll MarkerView;
private System.Windows.Forms.Button AddMarkerButton; private System.Windows.Forms.Button AddMarkerButton;
private System.Windows.Forms.Button RemoveMarkerButton; 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 JumpToMarkerButton;
private System.Windows.Forms.Button EditMarkerButton; private System.Windows.Forms.Button EditMarkerButton;
private System.Windows.Forms.Button ScrollToMarkerButton; 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; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
} }

View File

@ -9,6 +9,7 @@ using System.Windows.Forms;
using BizHawk.Client.Common; using BizHawk.Client.Common;
using BizHawk.Emulation.Common; using BizHawk.Emulation.Common;
using BizHawk.Client.EmuHawk.WinFormExtensions;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk
{ {
@ -16,6 +17,7 @@ namespace BizHawk.Client.EmuHawk
{ {
public TAStudio Tastudio { get; set; } public TAStudio Tastudio { get; set; }
public IEmulator Emulator { get; set; } public IEmulator Emulator { get; set; }
public TasMovieMarkerList Markers { get { return Tastudio.CurrentTasMovie.Markers; } }
public MarkerControl() public MarkerControl()
{ {
@ -50,15 +52,15 @@ namespace BizHawk.Client.EmuHawk
private void MarkerView_QueryItemBkColor(int index, InputRoll.RollColumn column, ref Color color) 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; 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]; var record = Tastudio.CurrentTasMovie[marker.Frame];
if (record.Lagged.HasValue) if (record.Lagged.HasValue)
@ -87,20 +89,21 @@ namespace BizHawk.Client.EmuHawk
if (column.Name == "FrameColumn") if (column.Name == "FrameColumn")
{ {
text = Tastudio.CurrentTasMovie.Markers[index].Frame.ToString(); text = Markers[index].Frame.ToString();
} }
else if (column.Name == "LabelColumn") else if (column.Name == "LabelColumn")
{ {
text = Tastudio.CurrentTasMovie.Markers[index].Message; text = Markers[index].Message;
} }
} }
private void MarkerContextMenu_Opening(object sender, CancelEventArgs e) private void MarkerContextMenu_Opening(object sender, CancelEventArgs e)
{ {
EditMarkerContextMenuItem.Enabled = EditMarkerToolStripMenuItem.Enabled =
RemoveMarkerContextMenuItem.Enabled = RemoveMarkerToolStripMenuItem.Enabled =
JumpToMarkerToolStripMenuItem.Enabled =
ScrollToMarkerToolStripMenuItem.Enabled = ScrollToMarkerToolStripMenuItem.Enabled =
MarkerInputRoll.AnyRowsSelected; MarkerInputRoll.AnyRowsSelected && MarkerView.SelectedRows.First() != 0;
} }
private void ScrollToMarkerToolStripMenuItem_Click(object sender, EventArgs e) private void ScrollToMarkerToolStripMenuItem_Click(object sender, EventArgs e)
@ -117,7 +120,7 @@ namespace BizHawk.Client.EmuHawk
if (MarkerView.AnyRowsSelected) if (MarkerView.AnyRowsSelected)
{ {
var index = MarkerView.SelectedRows.First(); var index = MarkerView.SelectedRows.First();
var marker = Tastudio.CurrentTasMovie.Markers[index]; var marker = Markers[index];
Tastudio.GoToFrame(marker.Frame); Tastudio.GoToFrame(marker.Frame);
} }
} }
@ -127,14 +130,14 @@ namespace BizHawk.Client.EmuHawk
if (MarkerView.AnyRowsSelected) if (MarkerView.AnyRowsSelected)
{ {
var index = MarkerView.SelectedRows.First(); var index = MarkerView.SelectedRows.First();
var marker = Tastudio.CurrentTasMovie.Markers[index]; var marker = Markers[index];
Tastudio.CallEditMarkerPopUp(marker); EditMarkerPopUp(marker);
} }
} }
private void AddMarkerToolStripMenuItem_Click(object sender, EventArgs e) private void AddMarkerToolStripMenuItem_Click(object sender, EventArgs e)
{ {
Tastudio.CallAddMarkerPopUp(); AddMarkerPopUp();
MarkerView_SelectedIndexChanged(null, null); MarkerView_SelectedIndexChanged(null, null);
} }
@ -142,21 +145,68 @@ namespace BizHawk.Client.EmuHawk
{ {
if (MarkerView.AnyRowsSelected) if (MarkerView.AnyRowsSelected)
{ {
SelectedMarkers.ForEach(i => Tastudio.CurrentTasMovie.Markers.Remove(i)); SelectedMarkers.ForEach(i => Markers.Remove(i));
MarkerInputRoll.DeselectAll(); MarkerInputRoll.DeselectAll();
Tastudio.RefreshDialog(); Tastudio.RefreshDialog();
MarkerView_SelectedIndexChanged(null, null); 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() public void UpdateValues()
{ {
if (MarkerView != null && if (MarkerView != null &&
Tastudio != null && Tastudio != null &&
Tastudio.CurrentTasMovie != null && Tastudio.CurrentTasMovie != null &&
Tastudio.CurrentTasMovie.Markers != null) Markers != null)
{ {
MarkerView.RowCount = Tastudio.CurrentTasMovie.Markers.Count; MarkerView.RowCount = Markers.Count;
} }
MarkerView.Refresh(); MarkerView.Refresh();
@ -182,7 +232,7 @@ namespace BizHawk.Client.EmuHawk
get get
{ {
return MarkerView.SelectedRows return MarkerView.SelectedRows
.Select(index => Tastudio.CurrentTasMovie.Markers[index]) .Select(index => Markers[index])
.ToList(); .ToList();
} }
} }
@ -199,7 +249,7 @@ namespace BizHawk.Client.EmuHawk
if (MarkerView.CurrentCell != null && MarkerView.CurrentCell.RowIndex.HasValue && if (MarkerView.CurrentCell != null && MarkerView.CurrentCell.RowIndex.HasValue &&
MarkerView.CurrentCell.RowIndex < MarkerView.RowCount) 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); Tastudio.GoToFrame(marker.Frame);
} }
} }
@ -209,7 +259,7 @@ namespace BizHawk.Client.EmuHawk
if (MarkerView.AnyRowsSelected) if (MarkerView.AnyRowsSelected)
{ {
var index = MarkerView.SelectedRows.First(); var index = MarkerView.SelectedRows.First();
var marker = Tastudio.CurrentTasMovie.Markers[index]; var marker = Markers[index];
return marker.Frame; return marker.Frame;
} }
return -1; return -1;

View File

@ -628,7 +628,7 @@ namespace BizHawk.Client.EmuHawk
else else
{ {
ClearLeftMouseStates(); ClearLeftMouseStates();
CallAddMarkerPopUp(TasView.CurrentCell.RowIndex.Value); MarkerControl.AddMarkerPopUp(TasView.CurrentCell.RowIndex.Value);
} }
} }
} }

View File

@ -585,7 +585,7 @@ namespace BizHawk.Client.EmuHawk
{ {
foreach (var index in TasView.SelectedRows) foreach (var index in TasView.SelectedRows)
{ {
CallAddMarkerPopUp(index); MarkerControl.AddMarkerPopUp(index);
} }
} }

View File

@ -715,69 +715,6 @@ namespace BizHawk.Client.EmuHawk
SplicerStatusLabel.Text = message; 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() private void UpdateChangesIndicator()
{ {
// TODO // TODO