add some extensions to the ControlExtension class for converting cruddy .NET 1.0 collection objects to IEnumerable<T>, and start removing some code in specific forms that work around cruddy .NET 1.0 stuff

This commit is contained in:
adelikat 2014-07-28 03:01:57 +00:00
parent aeea08a823
commit 7ec866ced5
5 changed files with 50 additions and 46 deletions

View File

@ -58,6 +58,29 @@ namespace BizHawk.Client.EmuHawk.WinFormExtensions
{ {
return control.PointToScreen(new Point(child.Location.X, child.Location.Y)); return control.PointToScreen(new Point(child.Location.X, child.Location.Y));
} }
#region Enumerable to Enumerable<T>
/// <summary>
/// Converts the outdated IEnumerable Controls property to a IEnumerable<T> like .NET should have done a long time ago
/// </summary>
public static IEnumerable<Control> Controls(this Control control)
{
return control.Controls
.OfType<Control>();
}
public static IEnumerable<TabPage> TabPages(this TabControl tabControl)
{
return tabControl.TabPages.Cast<TabPage>();
}
public static IEnumerable<int> SelectedIndices(this ListView listView)
{
return listView.SelectedIndices.Cast<int>();
}
#endregion
} }
public static class FormExtensions public static class FormExtensions

View File

@ -7,6 +7,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
{ {
@ -416,9 +417,9 @@ namespace BizHawk.Client.EmuHawk
(c as AnalogBindControl).Unbind_Click(null, null); (c as AnalogBindControl).Unbind_Click(null, null);
} }
if (c.Controls.Count > 0) if (c.Controls().Any())
{ {
foreach (Control child in c.Controls.OfType<Control>()) foreach (Control child in c.Controls())
{ {
ClearWidgetAndChildren(child); ClearWidgetAndChildren(child);
} }
@ -427,7 +428,7 @@ namespace BizHawk.Client.EmuHawk
private void ClearBtn_Click(object sender, EventArgs e) private void ClearBtn_Click(object sender, EventArgs e)
{ {
foreach (var c in Controls.OfType<Control>()) foreach (var c in this.Controls())
{ {
ClearWidgetAndChildren(c); ClearWidgetAndChildren(c);
} }

View File

@ -5,6 +5,7 @@ using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using BizHawk.Client.Common; using BizHawk.Client.Common;
using BizHawk.Client.EmuHawk.WinFormExtensions;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk
{ {
@ -25,8 +26,7 @@ namespace BizHawk.Client.EmuHawk
foreach (var core in coresToHide) foreach (var core in coresToHide)
{ {
PathTabControl.TabPages.Remove( PathTabControl.TabPages.Remove(
AllTabPages.FirstOrDefault(x => x.Name == core) ?? new TabPage() PathTabControl.TabPages().FirstOrDefault(x => x.Name == core) ?? new TabPage());
);
} }
} }
@ -122,7 +122,7 @@ namespace BizHawk.Client.EmuHawk
var btn = new Button var btn = new Button
{ {
Text = String.Empty, Text = string.Empty,
Image = Properties.Resources.OpenFile, Image = Properties.Resources.OpenFile,
Location = new Point(widgetOffset, _y - 1), Location = new Point(widgetOffset, _y - 1),
Width = buttonWidth, Width = buttonWidth,
@ -257,18 +257,13 @@ namespace BizHawk.Client.EmuHawk
var allPathControls = new List<Control>(); var allPathControls = new List<Control>();
foreach (TabPage tp in PathTabControl.TabPages) foreach (TabPage tp in PathTabControl.TabPages)
{ {
allPathControls.AddRange(tp.Controls.OfType<Control>()); allPathControls.AddRange(tp.Controls());
} }
return allPathControls; return allPathControls;
} }
} }
private IEnumerable<TabPage> AllTabPages
{
get { return PathTabControl.TabPages.Cast<TabPage>(); }
}
#region Events #region Events
private void NewPathConfig_Load(object sender, EventArgs e) private void NewPathConfig_Load(object sender, EventArgs e)

View File

@ -59,14 +59,9 @@ namespace BizHawk.Client.EmuHawk
public bool UpdateBefore { get { return true; } } public bool UpdateBefore { get { return true; } }
private IEnumerable<int> SelectedIndices
{
get { return LuaListView.SelectedIndices.Cast<int>(); }
}
private IEnumerable<LuaFile> SelectedItems private IEnumerable<LuaFile> SelectedItems
{ {
get { return SelectedIndices.Select(index => _luaList[index]); } get { return LuaListView.SelectedIndices().Select(index => _luaList[index]); }
} }
private IEnumerable<LuaFile> SelectedFiles private IEnumerable<LuaFile> SelectedFiles
@ -654,7 +649,7 @@ namespace BizHawk.Client.EmuHawk
RemoveScriptMenuItem.Enabled = RemoveScriptMenuItem.Enabled =
MoveUpMenuItem.Enabled = MoveUpMenuItem.Enabled =
MoveDownMenuItem.Enabled = MoveDownMenuItem.Enabled =
SelectedIndices.Any(); LuaListView.SelectedIndices().Any();
SelectAllMenuItem.Enabled = _luaList.Any(); SelectAllMenuItem.Enabled = _luaList.Any();
StopAllScriptsMenuItem.Enabled = _luaList.Any(script => script.Enabled); StopAllScriptsMenuItem.Enabled = _luaList.Any(script => script.Enabled);
@ -783,7 +778,7 @@ namespace BizHawk.Client.EmuHawk
private void InsertSeparatorMenuItem_Click(object sender, EventArgs e) private void InsertSeparatorMenuItem_Click(object sender, EventArgs e)
{ {
var indices = SelectedIndices.ToList(); var indices = LuaListView.SelectedIndices().ToList();
if (indices.Any() && indices.Last() < _luaList.Count) if (indices.Any() && indices.Last() < _luaList.Count)
{ {
_luaList.Insert(indices.Last(), LuaFile.SeparatorInstance); _luaList.Insert(indices.Last(), LuaFile.SeparatorInstance);
@ -798,7 +793,7 @@ namespace BizHawk.Client.EmuHawk
private void MoveUpMenuItem_Click(object sender, EventArgs e) private void MoveUpMenuItem_Click(object sender, EventArgs e)
{ {
var indices = SelectedIndices.ToList(); var indices = LuaListView.SelectedIndices().ToList();
if (indices.Count == 0 || indices[0] == 0) if (indices.Count == 0 || indices[0] == 0)
{ {
return; return;
@ -824,7 +819,7 @@ namespace BizHawk.Client.EmuHawk
private void MoveDownMenuItem_Click(object sender, EventArgs e) private void MoveDownMenuItem_Click(object sender, EventArgs e)
{ {
var indices = SelectedIndices.ToList(); var indices = LuaListView.SelectedIndices().ToList();
if (indices.Count == 0 || indices.Last() == _luaList.Count - 1) if (indices.Count == 0 || indices.Last() == _luaList.Count - 1)
{ {
return; return;

View File

@ -58,16 +58,6 @@ namespace BizHawk.Client.EmuHawk
} }
} }
private IEnumerable<int> SelectedIndices
{
get
{
return TasView.SelectedIndices
.OfType<int>()
.OrderBy(frame => frame);
}
}
public TasMovie CurrentMovie public TasMovie CurrentMovie
{ {
get { return _tas; } get { return _tas; }
@ -584,7 +574,7 @@ namespace BizHawk.Client.EmuHawk
DeleteFramesMenuItem.Enabled = DeleteFramesMenuItem.Enabled =
CloneMenuItem.Enabled = CloneMenuItem.Enabled =
TruncateMenuItem.Enabled = TruncateMenuItem.Enabled =
SelectedIndices.Any(); TasView.SelectedIndices().Any();
ReselectClipboardMenuItem.Enabled = ReselectClipboardMenuItem.Enabled =
PasteMenuItem.Enabled = PasteMenuItem.Enabled =
@ -604,7 +594,7 @@ namespace BizHawk.Client.EmuHawk
private void SelectBetweenMarkersMenuItem_Click(object sender, EventArgs e) private void SelectBetweenMarkersMenuItem_Click(object sender, EventArgs e)
{ {
if (SelectedIndices.Any()) if (TasView.SelectedIndices().Any())
{ {
var prevMarker = _tas.Markers.PreviousOrCurrent(LastSelectedIndex); var prevMarker = _tas.Markers.PreviousOrCurrent(LastSelectedIndex);
var nextMarker = _tas.Markers.Next(LastSelectedIndex); var nextMarker = _tas.Markers.Next(LastSelectedIndex);
@ -630,7 +620,7 @@ namespace BizHawk.Client.EmuHawk
private void CopyMenuItem_Click(object sender, EventArgs e) private void CopyMenuItem_Click(object sender, EventArgs e)
{ {
if (SelectedIndices.Any()) if (TasView.SelectedIndices().Any())
{ {
_tasClipboard.Clear(); _tasClipboard.Clear();
var list = TasView.SelectedIndices; var list = TasView.SelectedIndices;
@ -692,13 +682,13 @@ namespace BizHawk.Client.EmuHawk
private void CutMenuItem_Click(object sender, EventArgs e) private void CutMenuItem_Click(object sender, EventArgs e)
{ {
if (SelectedIndices.Any()) if (TasView.SelectedIndices().Any())
{ {
var needsToRollback = !(FirstSelectedIndex > Global.Emulator.Frame); var needsToRollback = !(FirstSelectedIndex > Global.Emulator.Frame);
var rollBackFrame = FirstSelectedIndex; var rollBackFrame = FirstSelectedIndex;
_tasClipboard.Clear(); _tasClipboard.Clear();
var list = SelectedIndices.ToArray(); var list = TasView.SelectedIndices().ToArray();
var sb = new StringBuilder(); var sb = new StringBuilder();
for (var i = 0; i < list.Length; i++) for (var i = 0; i < list.Length; i++)
{ {
@ -727,12 +717,12 @@ namespace BizHawk.Client.EmuHawk
private void ClearMenuItem_Click(object sender, EventArgs e) private void ClearMenuItem_Click(object sender, EventArgs e)
{ {
if (SelectedIndices.Any()) if (TasView.SelectedIndices().Any())
{ {
var needsToRollback = !(FirstSelectedIndex > Global.Emulator.Frame); var needsToRollback = !(FirstSelectedIndex > Global.Emulator.Frame);
var rollBackFrame = FirstSelectedIndex; var rollBackFrame = FirstSelectedIndex;
foreach (var frame in SelectedIndices) foreach (var frame in TasView.SelectedIndices())
{ {
_tas.ClearFrame(frame); _tas.ClearFrame(frame);
} }
@ -750,13 +740,13 @@ namespace BizHawk.Client.EmuHawk
private void DeleteFramesMenuItem_Click(object sender, EventArgs e) private void DeleteFramesMenuItem_Click(object sender, EventArgs e)
{ {
if (SelectedIndices.Any()) if (TasView.SelectedIndices().Any())
{ {
var needsToRollback = !(FirstSelectedIndex > Global.Emulator.Frame); var needsToRollback = !(FirstSelectedIndex > Global.Emulator.Frame);
var rollBackFrame = FirstSelectedIndex; var rollBackFrame = FirstSelectedIndex;
_tasClipboard.Clear(); _tasClipboard.Clear();
_tas.RemoveFrames(SelectedIndices.ToArray()); _tas.RemoveFrames(TasView.SelectedIndices().ToArray());
SetSplicer(); SetSplicer();
TasView.DeselectAll(); TasView.DeselectAll();
@ -773,9 +763,9 @@ namespace BizHawk.Client.EmuHawk
private void CloneMenuItem_Click(object sender, EventArgs e) private void CloneMenuItem_Click(object sender, EventArgs e)
{ {
if (SelectedIndices.Any()) if (TasView.SelectedIndices().Any())
{ {
var framesToInsert = SelectedIndices.ToList(); var framesToInsert = TasView.SelectedIndices().ToList();
var insertionFrame = LastSelectedIndex + 1; var insertionFrame = LastSelectedIndex + 1;
var needsToRollback = !(insertionFrame > Global.Emulator.Frame); var needsToRollback = !(insertionFrame > Global.Emulator.Frame);
var inputLog = new List<string>(); var inputLog = new List<string>();
@ -800,7 +790,7 @@ namespace BizHawk.Client.EmuHawk
private void InsertFrameMenuItem_Click(object sender, EventArgs e) private void InsertFrameMenuItem_Click(object sender, EventArgs e)
{ {
var insertionFrame = SelectedIndices.Any() ? LastSelectedIndex + 1 : 0; var insertionFrame = TasView.SelectedIndices().Any() ? LastSelectedIndex + 1 : 0;
var needsToRollback = !(insertionFrame > Global.Emulator.Frame); var needsToRollback = !(insertionFrame > Global.Emulator.Frame);
_tas.InsertEmptyFrame(insertionFrame); _tas.InsertEmptyFrame(insertionFrame);
@ -817,7 +807,7 @@ namespace BizHawk.Client.EmuHawk
private void InsertNumFramesMenuItem_Click(object sender, EventArgs e) private void InsertNumFramesMenuItem_Click(object sender, EventArgs e)
{ {
var insertionFrame = SelectedIndices.Any() ? LastSelectedIndex + 1 : 0; var insertionFrame = TasView.SelectedIndices().Any() ? LastSelectedIndex + 1 : 0;
var needsToRollback = !(insertionFrame > Global.Emulator.Frame); var needsToRollback = !(insertionFrame > Global.Emulator.Frame);
var framesPrompt = new FramesPrompt(); var framesPrompt = new FramesPrompt();
@ -839,7 +829,7 @@ namespace BizHawk.Client.EmuHawk
private void TruncateMenuItem_Click(object sender, EventArgs e) private void TruncateMenuItem_Click(object sender, EventArgs e)
{ {
if (SelectedIndices.Any()) if (TasView.SelectedIndices().Any())
{ {
var rollbackFrame = LastSelectedIndex + 1; var rollbackFrame = LastSelectedIndex + 1;
var needsToRollback = !(rollbackFrame > Global.Emulator.Frame); var needsToRollback = !(rollbackFrame > Global.Emulator.Frame);