From 1f1382ceb730846928eed34f0483b62308dc421c Mon Sep 17 00:00:00 2001 From: feos Date: Mon, 23 Nov 2015 23:26:56 +0300 Subject: [PATCH] tastudio: attach usertext to branches, make it editable from menu. moved branch functions and menu items around. --- BizHawk.Client.Common/BinarySaveStates.cs | 2 + .../movie/tasproj/TasBranch.cs | 23 ++ .../TAStudio/BookmarksBranchesBox.Designer.cs | 129 +++++---- .../tools/TAStudio/BookmarksBranchesBox.cs | 267 +++++++++--------- .../tools/TAStudio/ScreenshotPopupControl.cs | 50 ++-- .../tools/TAStudio/TAStudio.cs | 23 ++ 6 files changed, 298 insertions(+), 196 deletions(-) diff --git a/BizHawk.Client.Common/BinarySaveStates.cs b/BizHawk.Client.Common/BinarySaveStates.cs index d00b0bd09a..0e3c093b88 100644 --- a/BizHawk.Client.Common/BinarySaveStates.cs +++ b/BizHawk.Client.Common/BinarySaveStates.cs @@ -65,6 +65,8 @@ namespace BizHawk.Client.Common public static BinaryStateLump BranchHeader { get; private set; } [Name("Branches\\Markers", "txt")] public static BinaryStateLump BranchMarkers { get; private set; } + [Name("Branches\\UserText", "txt")] + public static BinaryStateLump BranchUserText { get; private set; } [Name("Branches\\GreenZone")] public static BinaryStateLump BranchStateHistory { get; private set; } diff --git a/BizHawk.Client.Common/movie/tasproj/TasBranch.cs b/BizHawk.Client.Common/movie/tasproj/TasBranch.cs index 1350300629..6a3fefeb15 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasBranch.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasBranch.cs @@ -19,6 +19,7 @@ namespace BizHawk.Client.Common public DateTime TimeStamp { get; set; } public TasMovieMarkerList Markers { get; set; } public Guid UniqueIdentifier { get; set; } + public string UserText { get; set; } } public class TasBranchCollection : List @@ -44,6 +45,7 @@ namespace BizHawk.Client.Common var nframebuffer = new IndexedStateLump(BinaryStateLump.BranchFrameBuffer); var nlaglog = new IndexedStateLump(BinaryStateLump.BranchLagLog); var nmarkers = new IndexedStateLump(BinaryStateLump.BranchMarkers); + var nusertext = new IndexedStateLump(BinaryStateLump.BranchUserText); foreach (var b in this) { bs.PutLump(nheader, delegate(TextWriter tw) @@ -85,12 +87,18 @@ namespace BizHawk.Client.Common tw.WriteLine(b.Markers.ToString()); }); + bs.PutLump(nusertext, delegate(TextWriter tw) + { + tw.WriteLine(b.UserText); + }); + nheader.Increment(); ncore.Increment(); ninput.Increment(); nframebuffer.Increment(); nlaglog.Increment(); nmarkers.Increment(); + nusertext.Increment(); } } @@ -102,6 +110,7 @@ namespace BizHawk.Client.Common var nframebuffer = new IndexedStateLump(BinaryStateLump.BranchFrameBuffer); var nlaglog = new IndexedStateLump(BinaryStateLump.BranchLagLog); var nmarkers = new IndexedStateLump(BinaryStateLump.BranchMarkers); + var nusertext = new IndexedStateLump(BinaryStateLump.BranchUserText); Clear(); @@ -179,6 +188,19 @@ namespace BizHawk.Client.Common } }); + + bl.GetLump(nusertext, false, delegate(TextReader tr) + { + string line; + if ((line = tr.ReadLine()) != null) + { + if (!string.IsNullOrWhiteSpace(line)) + { + b.UserText = line; + } + } + }); + Add(b); nheader.Increment(); @@ -187,6 +209,7 @@ namespace BizHawk.Client.Common nframebuffer.Increment(); nlaglog.Increment(); nmarkers.Increment(); + nusertext.Increment(); } } } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.Designer.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.Designer.cs index 8a9ec47707..0672d4f17f 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.Designer.cs @@ -30,13 +30,15 @@ { this.components = new System.ComponentModel.Container(); this.BookmarksBranchesGroupBox = new System.Windows.Forms.GroupBox(); + this.BranchView = new BizHawk.Client.EmuHawk.InputRoll(); this.BranchesContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components); this.LoadBranchContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.UpdateBranchContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.AddContextMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.AddBranchContextMenu = new System.Windows.Forms.ToolStripMenuItem(); this.RemoveBranchContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.BranchView = new BizHawk.Client.EmuHawk.InputRoll(); + this.EditBranchTextToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.AddBranchWithTextToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.BookmarksBranchesGroupBox.SuspendLayout(); this.BranchesContextMenu.SuspendLayout(); this.SuspendLayout(); @@ -54,54 +56,6 @@ this.BookmarksBranchesGroupBox.TabStop = false; this.BookmarksBranchesGroupBox.Text = "Branches"; // - // BranchesContextMenu - // - this.BranchesContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.LoadBranchContextMenuItem, - this.toolStripSeparator1, - this.UpdateBranchContextMenuItem, - this.AddContextMenu, - this.RemoveBranchContextMenuItem}); - this.BranchesContextMenu.Name = "BranchesContextMenu"; - this.BranchesContextMenu.Size = new System.Drawing.Size(118, 98); - this.BranchesContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.BranchesContextMenu_Opening); - // - // LoadBranchContextMenuItem - // - this.LoadBranchContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Debugger; - this.LoadBranchContextMenuItem.Name = "LoadBranchContextMenuItem"; - this.LoadBranchContextMenuItem.Size = new System.Drawing.Size(117, 22); - this.LoadBranchContextMenuItem.Text = "Load"; - this.LoadBranchContextMenuItem.Click += new System.EventHandler(this.LoadBranchContextMenuItem_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(114, 6); - // - // UpdateBranchContextMenuItem - // - this.UpdateBranchContextMenuItem.Name = "UpdateBranchContextMenuItem"; - this.UpdateBranchContextMenuItem.Size = new System.Drawing.Size(117, 22); - this.UpdateBranchContextMenuItem.Text = "&Update"; - this.UpdateBranchContextMenuItem.Click += new System.EventHandler(this.UpdateBranchContextMenuItem_Click); - // - // AddContextMenu - // - this.AddContextMenu.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.add; - this.AddContextMenu.Name = "AddContextMenu"; - this.AddContextMenu.Size = new System.Drawing.Size(117, 22); - this.AddContextMenu.Text = "Add"; - this.AddContextMenu.Click += new System.EventHandler(this.AddContextMenu_Click); - // - // RemoveBranchContextMenuItem - // - this.RemoveBranchContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete; - this.RemoveBranchContextMenuItem.Name = "RemoveBranchContextMenuItem"; - this.RemoveBranchContextMenuItem.Size = new System.Drawing.Size(117, 22); - this.RemoveBranchContextMenuItem.Text = "Remove"; - this.RemoveBranchContextMenuItem.Click += new System.EventHandler(this.RemoveBranchContextMenuItem_Click); - // // BranchView // this.BranchView.AllowColumnReorder = false; @@ -112,6 +66,10 @@ | System.Windows.Forms.AnchorStyles.Right))); this.BranchView.CellHeightPadding = 0; this.BranchView.ContextMenuStrip = this.BranchesContextMenu; + this.BranchView.denoteMarkersWithBGColor = false; + this.BranchView.denoteMarkersWithIcons = false; + this.BranchView.denoteStatesWithBGColor = false; + this.BranchView.denoteStatesWithIcons = false; this.BranchView.FullRowSelect = true; this.BranchView.HideWasLagFrames = false; this.BranchView.HorizontalOrientation = false; @@ -133,6 +91,73 @@ this.BranchView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.BranchView_MouseMove); this.BranchView.MouseUp += new System.Windows.Forms.MouseEventHandler(this.BranchView_MouseUp); // + // BranchesContextMenu + // + this.BranchesContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.LoadBranchContextMenuItem, + this.toolStripSeparator1, + this.AddBranchContextMenu, + this.AddBranchWithTextToolStripMenuItem, + this.UpdateBranchContextMenuItem, + this.EditBranchTextToolStripMenuItem, + this.RemoveBranchContextMenuItem}); + this.BranchesContextMenu.Name = "BranchesContextMenu"; + this.BranchesContextMenu.Size = new System.Drawing.Size(153, 164); + this.BranchesContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.BranchesContextMenu_Opening); + // + // LoadBranchContextMenuItem + // + this.LoadBranchContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Debugger; + this.LoadBranchContextMenuItem.Name = "LoadBranchContextMenuItem"; + this.LoadBranchContextMenuItem.Size = new System.Drawing.Size(152, 22); + this.LoadBranchContextMenuItem.Text = "Load"; + this.LoadBranchContextMenuItem.Click += new System.EventHandler(this.LoadBranchContextMenuItem_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6); + // + // UpdateBranchContextMenuItem + // + this.UpdateBranchContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.reboot; + this.UpdateBranchContextMenuItem.Name = "UpdateBranchContextMenuItem"; + this.UpdateBranchContextMenuItem.Size = new System.Drawing.Size(152, 22); + this.UpdateBranchContextMenuItem.Text = "&Update"; + this.UpdateBranchContextMenuItem.Click += new System.EventHandler(this.UpdateBranchContextMenuItem_Click); + // + // AddBranchContextMenu + // + this.AddBranchContextMenu.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.add; + this.AddBranchContextMenu.Name = "AddBranchContextMenu"; + this.AddBranchContextMenu.Size = new System.Drawing.Size(152, 22); + this.AddBranchContextMenu.Text = "Add"; + this.AddBranchContextMenu.Click += new System.EventHandler(this.AddContextMenu_Click); + // + // RemoveBranchContextMenuItem + // + this.RemoveBranchContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete; + this.RemoveBranchContextMenuItem.Name = "RemoveBranchContextMenuItem"; + this.RemoveBranchContextMenuItem.Size = new System.Drawing.Size(152, 22); + this.RemoveBranchContextMenuItem.Text = "Remove"; + this.RemoveBranchContextMenuItem.Click += new System.EventHandler(this.RemoveBranchContextMenuItem_Click); + // + // EditBranchTextToolStripMenuItem + // + this.EditBranchTextToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.pencil; + this.EditBranchTextToolStripMenuItem.Name = "EditBranchTextToolStripMenuItem"; + this.EditBranchTextToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.EditBranchTextToolStripMenuItem.Text = "Edit Text"; + this.EditBranchTextToolStripMenuItem.Click += new System.EventHandler(this.EditBranchTextToolStripMenuItem_Click); + // + // AddBranchWithTextToolStripMenuItem + // + this.AddBranchWithTextToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.add; + this.AddBranchWithTextToolStripMenuItem.Name = "AddBranchWithTextToolStripMenuItem"; + this.AddBranchWithTextToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.AddBranchWithTextToolStripMenuItem.Text = "Add with Text"; + this.AddBranchWithTextToolStripMenuItem.Click += new System.EventHandler(this.AddBranchWithTextToolStripMenuItem_Click); + // // BookmarksBranchesBox // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; @@ -150,10 +175,12 @@ private System.Windows.Forms.GroupBox BookmarksBranchesGroupBox; private InputRoll BranchView; private System.Windows.Forms.ContextMenuStrip BranchesContextMenu; - private System.Windows.Forms.ToolStripMenuItem AddContextMenu; + private System.Windows.Forms.ToolStripMenuItem AddBranchContextMenu; private System.Windows.Forms.ToolStripMenuItem RemoveBranchContextMenuItem; private System.Windows.Forms.ToolStripMenuItem LoadBranchContextMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; private System.Windows.Forms.ToolStripMenuItem UpdateBranchContextMenuItem; + private System.Windows.Forms.ToolStripMenuItem EditBranchTextToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem AddBranchWithTextToolStripMenuItem; } } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs index 2579ca2895..956f4a217e 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/BookmarksBranchesBox.cs @@ -58,19 +58,6 @@ namespace BizHawk.Client.EmuHawk BranchView.QueryItemBkColor += QueryItemBkColor; } - public TasBranch SelectedBranch - { - get - { - if (BranchView.AnyRowsSelected) - { - return GetBranch(BranchView.SelectedRows.First()); - } - - return null; - } - } - private void QueryItemText(int index, InputRoll.RollColumn column, out string text, ref int offsetX, ref int offsetY) { text = string.Empty; @@ -125,19 +112,63 @@ namespace BizHawk.Client.EmuHawk } } - private void AddContextMenu_Click(object sender, EventArgs e) + public void Branch() { - Branch(); + TasBranch branch = CreateBranch(); + Movie.AddBranch(branch); + BranchView.RowCount = Movie.BranchCount; + Movie.CurrentBranch = Movie.BranchCount - 1; + BranchView.Refresh(); + Tastudio.RefreshDialog(); } - private void BranchView_MouseDoubleClick(object sender, MouseEventArgs e) + public TasBranch SelectedBranch { - LoadSelectedBranch(); + get + { + if (BranchView.AnyRowsSelected) + { + return GetBranch(BranchView.SelectedRows.First()); + } + + return null; + } } - private void LoadBranchContextMenuItem_Click(object sender, EventArgs e) + private TasBranch CreateBranch() { - LoadSelectedBranch(); + // TODO: don't use Global.Emulator + return new TasBranch + { + Frame = Global.Emulator.Frame, + CoreData = (byte[])((Global.Emulator as IStatable).SaveStateBinary().Clone()), + InputLog = Movie.InputLog.Clone(), + OSDFrameBuffer = GlobalWin.MainForm.CaptureOSD(), + LagLog = Movie.TasLagLog.Clone(), + ChangeLog = new TasMovieChangeLog(Movie), + TimeStamp = DateTime.Now, + Markers = Movie.Markers.DeepClone(), + UserText = "" + }; + } + + private void LoadBranch(TasBranch branch) + { + Tastudio.CurrentTasMovie.LoadBranch(branch); + GlobalWin.DisplayManager.NeedsToPaint = true; + var stateInfo = new KeyValuePair(branch.Frame, branch.CoreData); + Tastudio.LoadState(stateInfo); + QuickBmpFile.Copy(new BitmapBufferVideoProvider(branch.OSDFrameBuffer), Global.Emulator.VideoProvider()); + GlobalWin.MainForm.PauseEmulator(); + GlobalWin.MainForm.PauseOnFrame = null; + Tastudio.RefreshDialog(); + } + + private void UpdateBranch(TasBranch branch) + { + Movie.UpdateBranch(branch, CreateBranch()); + BranchView.Refresh(); + Tastudio.RefreshDialog(); } private void LoadSelectedBranch() @@ -161,6 +192,40 @@ namespace BizHawk.Client.EmuHawk SelectedBranch != null; } + private void AddContextMenu_Click(object sender, EventArgs e) + { + Branch(); + } + + private void AddBranchWithTextToolStripMenuItem_Click(object sender, EventArgs e) + { + Branch(); + Tastudio.CallEditBranchTextPopUp(Movie.CurrentBranch); + } + + private void LoadBranchContextMenuItem_Click(object sender, EventArgs e) + { + LoadSelectedBranch(); + } + + private void UpdateBranchContextMenuItem_Click(object sender, EventArgs e) + { + if (SelectedBranch != null) + { + UpdateBranch(SelectedBranch); + Movie.CurrentBranch = BranchView.SelectedRows.First(); + } + } + + private void EditBranchTextToolStripMenuItem_Click(object sender, EventArgs e) + { + if (SelectedBranch != null) + { + int index = BranchView.SelectedRows.First(); + Tastudio.CallEditBranchTextPopUp(index); + } + } + private void RemoveBranchContextMenuItem_Click(object sender, EventArgs e) { if (SelectedBranch != null) @@ -188,18 +253,6 @@ namespace BizHawk.Client.EmuHawk } } - private void LoadBranch(TasBranch branch) - { - Tastudio.CurrentTasMovie.LoadBranch(branch); - GlobalWin.DisplayManager.NeedsToPaint = true; - var stateInfo = new KeyValuePair(branch.Frame, branch.CoreData); - Tastudio.LoadState(stateInfo); - QuickBmpFile.Copy(new BitmapBufferVideoProvider(branch.OSDFrameBuffer), Global.Emulator.VideoProvider()); - GlobalWin.MainForm.PauseEmulator(); - GlobalWin.MainForm.PauseOnFrame = null; - Tastudio.RefreshDialog(); - } - public void UpdateValues() { BranchView.RowCount = Movie.BranchCount; @@ -213,30 +266,68 @@ namespace BizHawk.Client.EmuHawk BranchView.Refresh(); } - public void Branch() + private void ScreenShotPopUp(TasBranch branch, int index) { - TasBranch branch = CreateBranch(); - Movie.AddBranch(branch); - BranchView.RowCount = Movie.BranchCount; - Movie.CurrentBranch = Movie.BranchCount - 1; - BranchView.Refresh(); - Tastudio.RefreshDialog(); + Point locationOnForm = this.FindForm().PointToClient( + this.Parent.PointToScreen(this.Location)); + + int x = locationOnForm.X - Tastudio.ScreenshotControl.Width; + int y = locationOnForm.Y; // keep consistent height, helps when conparing screenshots + + if (x < 1) x = 1; + + Tastudio.ScreenshotControl.Location = new Point(x, y); + Tastudio.ScreenshotControl.Visible = true; + Tastudio.ScreenshotControl.Branch = branch; + Tastudio.ScreenshotControl.RecalculateHeight(); + Tastudio.ScreenshotControl.Refresh(); } - private TasBranch CreateBranch() + private void CloseScreenShotPopUp() { - // TODO: don't use Global.Emulator - return new TasBranch + Tastudio.ScreenshotControl.Visible = false; + } + + private void BranchView_MouseDown(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right) { - Frame = Global.Emulator.Frame, - CoreData = (byte[])((Global.Emulator as IStatable).SaveStateBinary().Clone()), - InputLog = Movie.InputLog.Clone(), - OSDFrameBuffer = GlobalWin.MainForm.CaptureOSD(), - LagLog = Movie.TasLagLog.Clone(), - ChangeLog = new TasMovieChangeLog(Movie), - TimeStamp = DateTime.Now, - Markers = Movie.Markers.DeepClone() - }; + if (BranchView.CurrentCell != null && BranchView.CurrentCell.IsDataCell + && BranchView.CurrentCell.Column.Name == BranchNumberColumnName) + { + BranchView.DragCurrentCell(); + } + } + } + + private void BranchView_MouseUp(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + BranchView.ReleaseCurrentCell(); + } + } + + private void BranchView_MouseDoubleClick(object sender, MouseEventArgs e) + { + LoadSelectedBranch(); + } + + private void BranchView_MouseMove(object sender, MouseEventArgs e) + { + if (BranchView.CurrentCell == null || !BranchView.CurrentCell.RowIndex.HasValue || BranchView.CurrentCell.Column == null) + { + CloseScreenShotPopUp(); + } + else if (BranchView.CurrentCell.Column.Name == BranchNumberColumnName) + { + BranchView.Refresh(); + } + } + + private void BranchView_MouseLeave(object sender, EventArgs e) + { + // Tastudio.ScreenshotControl.Visible = false; } private void BranchView_CellHovered(object sender, InputRoll.CellEventArgs e) @@ -258,82 +349,6 @@ namespace BizHawk.Client.EmuHawk } } - private void BranchView_MouseMove(object sender, MouseEventArgs e) - { - if (BranchView.CurrentCell == null || !BranchView.CurrentCell.RowIndex.HasValue || BranchView.CurrentCell.Column == null) - { - CloseScreenShotPopUp(); - } - else if (BranchView.CurrentCell.Column.Name == BranchNumberColumnName) - { - BranchView.Refresh(); - } - } - - private void CloseScreenShotPopUp() - { - Tastudio.ScreenshotControl.Visible = false; - } - - private void BranchView_MouseLeave(object sender, EventArgs e) - { - // Tastudio.ScreenshotControl.Visible = false; - } - - private void ScreenShotPopUp(TasBranch branch, int index) - { - Point locationOnForm = this.FindForm().PointToClient( - this.Parent.PointToScreen(this.Location)); - - int x = locationOnForm.X - Tastudio.ScreenshotControl.Width; - int y = locationOnForm.Y; // keep consistent height, helps when conparing screenshots - - if (x < 1) x = 1; - - Tastudio.ScreenshotControl.UserText = ""; - Tastudio.ScreenshotControl.RecalculatePadding(); - Tastudio.ScreenshotControl.Location = new Point(x, y); - Tastudio.ScreenshotControl.Visible = true; - Tastudio.ScreenshotControl.Branch = branch; - Tastudio.ScreenshotControl.Refresh(); - } - - private void UpdateBranchContextMenuItem_Click(object sender, EventArgs e) - { - if (SelectedBranch != null) - { - UpdateBranch(SelectedBranch); - Movie.CurrentBranch = BranchView.SelectedRows.First(); - } - } - - private void UpdateBranch(TasBranch branch) - { - Movie.UpdateBranch(branch, CreateBranch()); - BranchView.Refresh(); - Tastudio.RefreshDialog(); - } - - private void BranchView_MouseDown(object sender, MouseEventArgs e) - { - if (e.Button == MouseButtons.Left) - { - if (BranchView.CurrentCell != null && BranchView.CurrentCell.IsDataCell - && BranchView.CurrentCell.Column.Name == BranchNumberColumnName) - { - BranchView.DragCurrentCell(); - } - } - } - - private void BranchView_MouseUp(object sender, MouseEventArgs e) - { - if (e.Button == MouseButtons.Left) - { - BranchView.ReleaseCurrentCell(); - } - } - private void BranchView_CellDropped(object sender, InputRoll.CellEventArgs e) { if (e.NewCell != null && e.NewCell.IsDataCell && e.OldCell.RowIndex.Value < Movie.BranchCount) diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/ScreenshotPopupControl.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/ScreenshotPopupControl.cs index 19a67dc2e0..10310b0f39 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/ScreenshotPopupControl.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/ScreenshotPopupControl.cs @@ -9,6 +9,14 @@ namespace BizHawk.Client.EmuHawk { public partial class ScreenshotPopupControl : UserControl { + public TasBranch Branch { get; set; } + public int DrawingHeight = 0; + public int UserPadding = 0; + public int UserFontSize = 10; // because why not? + public FontStyle UserFontStyle = FontStyle.Regular; + public string UserText; + private Font UserFont; + public ScreenshotPopupControl() { SetStyle(ControlStyles.SupportsTransparentBackColor, true); @@ -18,13 +26,6 @@ namespace BizHawk.Client.EmuHawk InitializeComponent(); } - public TasBranch Branch { get; set; } - - private void ScreenshotPopupControl_Load(object sender, EventArgs e) - { - - } - protected override void OnPaint(PaintEventArgs e) { var bitmap = Branch.OSDFrameBuffer.ToSysdrawingBitmap(); @@ -32,11 +33,31 @@ namespace BizHawk.Client.EmuHawk if (UserPadding > 0) { e.Graphics.DrawRectangle(new Pen(Brushes.Black), new Rectangle(new Point(0, DrawingHeight), new Size(Width - 1, UserPadding - 1))); - e.Graphics.DrawString(UserText, _font, Brushes.Black, new Rectangle(1, DrawingHeight, Width - 1, Height)); + e.Graphics.DrawString(UserText, UserFont, Brushes.Black, new Rectangle(2, DrawingHeight, Width - 2, Height)); } base.OnPaint(e); } + public void SetFontStyle(FontStyle style) + { + UserFontStyle = style; + } + + public void SetFontSize(int size) + { + UserFontSize = size; + } + + public void RecalculateHeight() + { + UserFont = new Font(FontFamily.GenericMonospace, UserFontSize, UserFontStyle); + UserText = Branch.UserText; + UserPadding = (int)Graphics.FromHwnd(this.Handle).MeasureString(UserText, UserFont, Width).Height; + if (UserPadding > 0) + UserPadding += 2; + Height = DrawingHeight + UserPadding; + } + private void ScreenshotPopupControl_MouseLeave(object sender, EventArgs e) { Visible = false; @@ -47,18 +68,9 @@ namespace BizHawk.Client.EmuHawk // todo: switch screenshots by hotkey } - public void RecalculatePadding() + private void ScreenshotPopupControl_Load(object sender, EventArgs e) { - UserPadding = (int)Graphics.FromHwnd(this.Handle).MeasureString(UserText, _font, Width).Height; - if (UserPadding > 0) - UserPadding += 2; - Height = DrawingHeight + UserPadding; + } - - public int DrawingHeight = 0; - public int UserPadding = 0; - public string UserText; - - private Font _font = new Font(new FontFamily("Courier New"), 8); } } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index d97fe233ec..d1ef2d9ec2 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -755,6 +755,29 @@ namespace BizHawk.Client.EmuHawk } } + 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