147 lines
3.6 KiB
C#
147 lines
3.6 KiB
C#
![]() |
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.Data;
|
|||
|
using System.Drawing;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Windows.Forms;
|
|||
|
|
|||
|
namespace BizHawk.Client.EmuHawk
|
|||
|
{
|
|||
|
public partial class UndoHistoryForm : Form
|
|||
|
{
|
|||
|
private TAStudio tastudio;
|
|||
|
|
|||
|
public UndoHistoryForm(TAStudio owner)
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
tastudio = owner;
|
|||
|
|
|||
|
HistoryView.QueryItemText += HistoryView_QueryItemText;
|
|||
|
HistoryView.QueryItemBkColor += HistoryView_QueryItemBkColor;
|
|||
|
|
|||
|
HistoryView.Columns[1].Width = 280;
|
|||
|
|
|||
|
MaxStepsNum.Value = log.MaxSteps;
|
|||
|
}
|
|||
|
|
|||
|
private Common.TasMovieChangeLog log
|
|||
|
{
|
|||
|
get { return tastudio.CurrentTasMovie.ChangeLog; }
|
|||
|
}
|
|||
|
|
|||
|
private void HistoryView_QueryItemText(int row, int column, out string text)
|
|||
|
{
|
|||
|
if (column == 1)
|
|||
|
text = log.Names[row];
|
|||
|
else
|
|||
|
text = row.ToString();
|
|||
|
}
|
|||
|
private void HistoryView_QueryItemBkColor(int row, int column, ref Color color)
|
|||
|
{
|
|||
|
if (column == 0)
|
|||
|
return;
|
|||
|
|
|||
|
if (row == log.UndoIndex)
|
|||
|
color = Color.Green;
|
|||
|
else if (row > log.UndoIndex)
|
|||
|
color = Color.Red;
|
|||
|
}
|
|||
|
|
|||
|
private int _lastCount = -1;
|
|||
|
public void UpdateValues()
|
|||
|
{
|
|||
|
HistoryView.ItemCount = log.Names.Count;
|
|||
|
if (AutoScrollCheck.Checked && _lastCount != HistoryView.ItemCount)
|
|||
|
HistoryView.ensureVisible(HistoryView.ItemCount - 1);
|
|||
|
_lastCount = HistoryView.ItemCount;
|
|||
|
|
|||
|
HistoryView.Refresh();
|
|||
|
}
|
|||
|
|
|||
|
private void ClearButton_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
log.ClearLog();
|
|||
|
UpdateValues();
|
|||
|
}
|
|||
|
private void UndoButton_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
log.Undo();
|
|||
|
tastudio.RefreshDialog();
|
|||
|
}
|
|||
|
private void RedoButton_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
log.Redo();
|
|||
|
tastudio.RefreshDialog();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private void HistoryView_DoubleClick(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (log.UndoIndex <= HistoryView.selectedItem)
|
|||
|
return;
|
|||
|
|
|||
|
do
|
|||
|
{
|
|||
|
log.Undo();
|
|||
|
} while (log.UndoIndex > HistoryView.selectedItem);
|
|||
|
UpdateValues();
|
|||
|
}
|
|||
|
private void HistoryView_MouseUp(object sender, MouseEventArgs e)
|
|||
|
{
|
|||
|
if (e.Button == System.Windows.Forms.MouseButtons.Right)
|
|||
|
RightClickMenu.Show(HistoryView, e.X, e.Y);
|
|||
|
else if (e.Button == System.Windows.Forms.MouseButtons.Left)
|
|||
|
{
|
|||
|
if (HistoryView.selectedItem == -1)
|
|||
|
HistoryView.SelectItem(_hackSelect, true);
|
|||
|
}
|
|||
|
}
|
|||
|
// Hacky way to select a row by clicking the names row
|
|||
|
int _hackSelect = -1;
|
|||
|
private void HistoryView_MouseDown(object sender, MouseEventArgs e)
|
|||
|
{
|
|||
|
HistoryView.SelectItem(e.Y / HistoryView.LineHeight + HistoryView.VScrollPos - 1, true);
|
|||
|
_hackSelect = HistoryView.selectedItem;
|
|||
|
}
|
|||
|
|
|||
|
private void undoHereToolStripMenuItem_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (HistoryView.selectedItem == -1 || log.UndoIndex < HistoryView.selectedItem)
|
|||
|
return;
|
|||
|
|
|||
|
do
|
|||
|
{
|
|||
|
log.Undo();
|
|||
|
} while (log.UndoIndex >= HistoryView.selectedItem);
|
|||
|
UpdateValues();
|
|||
|
}
|
|||
|
private void redoHereToolStripMenuItem_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (HistoryView.selectedItem == -1 || log.UndoIndex >= HistoryView.selectedItem)
|
|||
|
return;
|
|||
|
|
|||
|
do
|
|||
|
{
|
|||
|
log.Redo();
|
|||
|
} while (log.UndoIndex < HistoryView.selectedItem);
|
|||
|
UpdateValues();
|
|||
|
}
|
|||
|
private void clearHistoryToHereToolStripMenuItem_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (HistoryView.selectedItem != -1)
|
|||
|
log.ClearLog(HistoryView.selectedItem);
|
|||
|
UpdateValues();
|
|||
|
}
|
|||
|
|
|||
|
private void MaxStepsNum_ValueChanged(object sender, EventArgs e)
|
|||
|
{
|
|||
|
log.MaxSteps = (int)MaxStepsNum.Value;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
}
|