/Vassal/Vassal/RegionEditForm.cs |
@@ -42,7 +42,7 @@ |
|
// import CSV regions |
Vector3 localPosition; |
Vassal.ConfiguredRegions = |
List<KeyValuePair<string, Vector3>> ConfiguredRegions = new List<KeyValuePair<string, Vector3>>( |
File.ReadAllLines(file) |
.AsParallel() |
.Select(o => new List<string>(Vassal.wasCSVToEnumerable(o))) |
@@ -51,20 +51,26 @@ |
p => |
Vector3.TryParse(p.Last(), out localPosition) |
? localPosition |
: Vector3.Zero); |
: Vector3.Zero)); |
|
Vassal.vassalForm.BeginInvoke((MethodInvoker) (() => |
{ |
Vassal.vassalForm.LoadedRegions.Items.Clear(); |
Vassal.vassalForm.LoadedRegions.Items.AddRange( |
Vassal.ConfiguredRegions.Select( |
ConfiguredRegions.Select( |
o => (object) new ListViewItem {Text = o.Key, Tag = o.Value}) |
.ToArray()); |
// Update batch restart grid view. |
Vassal.vassalForm.BatchRestartGridView.Rows.Clear(); |
foreach (KeyValuePair<string, Vector3> data in ConfiguredRegions) |
{ |
Vassal.vassalForm.BatchRestartGridView.Rows.Add(data.Key, data.Value); |
} |
})); |
|
Regions.Items.Clear(); |
Regions.Items.AddRange( |
Vassal.ConfiguredRegions.Select(o => (object)new ListViewItem { Text = o.Key + @" " + @"(" + o.Value.ToString() + @")", Tag = o }) |
ConfiguredRegions.Select(o => (object)new ListViewItem { Text = o.Key + @" " + @"(" + o.Value.ToString() + @")", Tag = o }) |
.ToArray()); |
|
mainForm.StatusText.Text = @"regions loaded"; |
@@ -105,7 +111,10 @@ |
new StreamWriter(file, false, |
Encoding.UTF8)) |
{ |
foreach (KeyValuePair<string, Vector3> region in Vassal.ConfiguredRegions) |
foreach ( |
KeyValuePair<string, Vector3> region in |
Regions.Items.Cast<ListViewItem>() |
.Select(o => (KeyValuePair<string, Vector3>) o.Tag)) |
{ |
streamWriter.Write( |
Vassal.wasEnumerableToCSV(new[] {region.Key, region.Value.ToString()})); |
@@ -132,9 +141,24 @@ |
private void RegionEditShown(object sender, EventArgs e) |
{ |
Regions.Items.Clear(); |
Regions.Items.AddRange( |
Vassal.ConfiguredRegions.Select(o => (object)new ListViewItem { Text = o.Key + @" " + @"(" + o.Value.ToString() + @")", Tag = o }) |
.ToArray()); |
// Get all the regions if they exist. |
if (File.Exists(Vassal.VASSAL_CONSTANTS.VASSAL_REGIONS)) |
{ |
Vector3 localPosition; |
List<KeyValuePair<string, Vector3>> ConfiguredRegions = new List<KeyValuePair<string, Vector3>>( |
File.ReadAllLines(Vassal.VASSAL_CONSTANTS.VASSAL_REGIONS) |
.Select(o => new List<string>(Vassal.wasCSVToEnumerable(o))) |
.Where(o => o.Count == 2) |
.ToDictionary(o => o.First(), |
p => |
Vector3.TryParse(p.Last(), out localPosition) |
? localPosition |
: Vector3.Zero).OrderBy(o => o.Key).ToDictionary(o => o.Key, o => o.Value)); |
Regions.Items.AddRange( |
ConfiguredRegions.Select( |
o => (object) new ListViewItem {Text = o.Key + @" " + @"(" + o.Value.ToString() + @")", Tag = o}) |
.ToArray()); |
} |
} |
|
private void RequestAddRegion(object sender, EventArgs e) |
@@ -159,7 +183,8 @@ |
Text = RegionName.Text + @" " + @"(" + position + @")", |
Tag = new KeyValuePair<string, Vector3>(RegionName.Text, position) |
}); |
Vassal.ConfiguredRegions.Add(RegionName.Text, position); |
|
// Update drop down box. |
Vassal.vassalForm.BeginInvoke((MethodInvoker) (() => |
{ |
Vassal.vassalForm.LoadedRegions.Items.Add(new ListViewItem |
@@ -167,6 +192,8 @@ |
Text = RegionName.Text, |
Tag = position |
}); |
// Add the row to the batch restart grid view. |
Vassal.vassalForm.BatchRestartGridView.Rows.Add(RegionName.Text, position.ToString()); |
})); |
})); |
} |
@@ -181,14 +208,18 @@ |
Regions.BackColor = Color.MistyRose; |
return; |
} |
Regions.BackColor = Color.Empty; |
|
int selectedItemIndex = Regions.SelectedIndex; |
if (selectedItemIndex == -1) |
return; |
|
Vassal.ConfiguredRegions.Remove(RegionName.Text); |
Regions.BackColor = Color.Empty; |
|
Vassal.vassalForm.BeginInvoke((MethodInvoker)(() => |
{ |
Vassal.vassalForm.LoadedRegions.Items.RemoveAt(selectedItemIndex); |
// Update the batch restart grid view. |
Vassal.vassalForm.BatchRestartGridView.Rows.RemoveAt(selectedItemIndex); |
})); |
|
Regions.Items.RemoveAt(Regions.SelectedIndex); |
@@ -204,6 +235,10 @@ |
if (listViewItem == null) |
return; |
|
int selectedItemIndex = Regions.SelectedIndex; |
if (selectedItemIndex == -1) |
return; |
|
if (string.IsNullOrEmpty(RegionName.Text)) |
{ |
RegionName.BackColor = Color.MistyRose; |
@@ -220,17 +255,28 @@ |
|
RegionName.BackColor = Color.Empty; |
RegionPosition.BackColor = Color.Empty; |
int selectedItemIndex = Regions.SelectedIndex; |
|
|
Vassal.ConfiguredRegions.Remove(RegionName.Text); |
Vassal.ConfiguredRegions.Add(RegionName.Text, position); |
Vassal.vassalForm.BeginInvoke((MethodInvoker)(() => |
{ |
Vassal.vassalForm.LoadedRegions.Items[selectedItemIndex] = new ListViewItem |
if (Vassal.vassalForm.LoadedRegions.Items.Count > selectedItemIndex) |
{ |
Text = RegionName.Text, |
Tag = position |
}; |
Vassal.vassalForm.LoadedRegions.Items[selectedItemIndex] = new ListViewItem |
{ |
Text = RegionName.Text, |
Tag = position |
}; |
} |
// Update the batch restart grid view. |
if (Vassal.vassalForm.BatchRestartGridView.Rows.Count > selectedItemIndex) |
{ |
Vassal.vassalForm.BatchRestartGridView.Rows[selectedItemIndex].Cells["BatchRestartRegionName"] |
.Value |
= RegionName.Text; |
Vassal.vassalForm.BatchRestartGridView.Rows[selectedItemIndex].Cells["BatchRestartPosition"] |
.Value |
= position.ToString(); |
} |
})); |
|
Regions.Items[selectedItemIndex] = new ListViewItem |
@@ -249,6 +295,11 @@ |
ListViewItem listViewItem = Regions.SelectedItem as ListViewItem; |
if (listViewItem == null) |
return; |
|
int selectedItemIndex = Regions.SelectedIndex; |
if (selectedItemIndex == -1) |
return; |
|
KeyValuePair<string, Vector3> region = (KeyValuePair<string, Vector3>) listViewItem.Tag; |
RegionName.Text = region.Key; |
RegionPosition.Text = region.Value.ToString(); |