Ram Search - support Ctrl+C copy to clipboard

This commit is contained in:
adelikat 2013-03-17 15:45:01 +00:00
parent cd03d2fe99
commit 65ddac05bc
1 changed files with 65 additions and 0 deletions

View File

@ -2640,6 +2640,71 @@ namespace BizHawk.MultiClient
SearchListView.SelectItem(x, true);
}
}
else if (e.KeyCode == Keys.C && e.Control && !e.Alt && !e.Shift) //Copy
{
ListView.SelectedIndexCollection indexes = SearchListView.SelectedIndices;
if (indexes.Count > 0)
{
StringBuilder sb = new StringBuilder();
foreach (int index in indexes)
{
for (int i = 0; i < SearchListView.Columns.Count; i++)
{
if (SearchListView.Columns[i].Width > 0)
{
sb.Append(GetColumnValue(i, index));
sb.Append('\t');
}
}
sb.Remove(sb.Length - 1, 1);
sb.Append('\n');
}
if (!String.IsNullOrWhiteSpace(sb.ToString()))
{
Clipboard.SetDataObject(sb.ToString());
}
}
}
}
private string GetColumnValue(int column, int watch_index)
{
switch (SearchListView.Columns[column].Text.ToLower())
{
default:
return "";
case "address":
return Searches[watch_index].Address.ToString(addressFormatStr);
case "value":
return Searches[watch_index].ValueString;
case "prev":
switch (Global.Config.RamWatchPrev_Type)
{
case 1:
return Searches[watch_index].PrevString;
case 2:
return Searches[watch_index].LastChangeString;
default:
return "";
}
case "changes":
return Searches[watch_index].Changecount.ToString();
case "diff":
switch (Global.Config.RamWatchPrev_Type)
{
case 1:
return Searches[watch_index].DiffToString(Searches[watch_index].DiffPrev);
case 2:
return Searches[watch_index].DiffToString(Searches[watch_index].DiffLastChange);
default:
return "";
}
case "domain":
return Searches[watch_index].Domain.Name;
case "notes":
return Searches[watch_index].Notes;
}
}
private void redoToolStripMenuItem_Click(object sender, EventArgs e)