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.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(

View File

@ -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;
}

View File

@ -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;

View File

@ -628,7 +628,7 @@ namespace BizHawk.Client.EmuHawk
else
{
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)
{
CallAddMarkerPopUp(index);
MarkerControl.AddMarkerPopUp(index);
}
}

View File

@ -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