corrade-vassal

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 2  →  ?path2? @ 3
/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();