729,7 → 729,34 |
} |
|
} |
|
void _clearWPMarker(String text) |
{ |
for (int k = 0; k < MainMap.Markers.Count;) |
{ |
GMapMarker p = MainMap.Markers[k]; |
if (p.GetType() == typeof(CustomMarkerWP) | (p.Shape != null && p.Shape.GetType() == typeof(CustomMarkerWP))) |
if (((CustomMarkerWP)p.Shape).WPText == text) |
{ MainMap.Markers.Remove(p); break; } |
else |
k++; |
else |
k++; |
} |
} |
void _renameWPMarker(string s1, string s2) |
{ |
for (int k = 0; k < MainMap.Markers.Count;) |
{ |
GMapMarker p = MainMap.Markers[k]; |
if (p.GetType() == typeof(CustomMarkerWP) | (p.Shape != null && p.Shape.GetType() == typeof(CustomMarkerWP))) |
if (((CustomMarkerWP)p.Shape).WPText == s1) |
{ ((CustomMarkerWP)p.Shape).WPText = s2; break; } |
else |
k++; |
else |
k++; |
} |
} |
// access mode |
private void comboBoxMode_DropDownClosed(object sender, EventArgs e) |
{ |
1740,7 → 1767,7 |
Dispatcher.Invoke(() => |
{ |
DataGridRow row; |
if (_wpIndex > -1 && data[48] == 0) |
if (_wpIndex > -1 && data[48] == 0 && wpList.Count > _wpIndex) |
{ |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(_wpIndex); |
row.Background = new SolidColorBrush(Colors.Transparent); |
1892,7 → 1919,7 |
MainMap.Markers.Remove(wpActiveMarker); |
lblWPRouteDistance.Content = "0 m"; |
dtWaypoints.Rows.Clear(); |
_wpEdit = -1; |
_wpEdit = -1;_wpIndex = -1; |
}); |
} |
DataRow dr = dtWaypoints.NewRow(); |
1904,23 → 1931,7 |
if (data[1] == data[0]) |
{ |
_bGetWP = false; |
Dispatcher.Invoke(() => dgvWP.Items.Refresh()); |
|
Dispatcher.Invoke(() => |
{ |
if (comboBoxRouteColor.SelectionBoxItem != null) |
{ |
string s = comboBoxRouteColor.SelectionBoxItem.ToString(); |
mRouteWP = new GMapRoute(wpList, _getBrush(s)); |
} |
else |
mRouteWP = new GMapRoute(wpList, null); |
|
if (_bShowWPRoute) |
MainMap.Markers.Add(mRouteWP); |
}); |
MapRoute mr = new MapRoute(wpList, "WPList"); |
Dispatcher.Invoke(() => lblWPRouteDistance.Content = (mr.Distance * 1000).ToString("0 m")); |
_routeUpdate(); |
} |
|
} |
3170,7 → 3181,7 |
NumberFormatInfo nfi = new NumberFormatInfo(); |
nfi.NumberDecimalSeparator = "."; |
dtWaypoints.Rows.Clear(); |
_wpEdit = -1; |
_wpEdit = -1;_wpIndex = -1; |
_clearMapMarkers(typeof(CustomMarkerWP)); |
_clearMapMarkers(typeof(CustomMarkerWPActive)); |
wpList.Clear(); |
3353,14 → 3364,12 |
mRouteWP = new GMapRoute(wpList, null); |
|
if (_bShowWPRoute) |
Dispatcher.Invoke(() => MainMap.Markers.Add(mRouteWP)); |
MainMap.Markers.Add(mRouteWP); |
}); |
|
MapRoute mr = new MapRoute(wpList, "WPList"); |
Dispatcher.Invoke(() => lblWPRouteDistance.Content = (mr.Distance * 1000).ToString("0 m")); |
|
} |
|
GMapMarker _createWP(PointLatLng p, string name, int type) |
{ |
GMapMarker wpMarker = new GMapMarker(p); |
3532,6 → 3541,7 |
// MainMap.Markers.Remove(wpActiveMarker); |
dtWaypoints.Rows.Clear(); |
_wpEdit = -1; |
_wpIndex = -1; |
Dispatcher.Invoke(() => dgvWP.Items.Refresh()); |
Dispatcher.Invoke(() => lblWPIndex.Content = 0); |
Dispatcher.Invoke(() => lblWPCount.Content = 0); |
3557,15 → 3567,15 |
|
Dispatcher.Invoke(() => { |
DataGridRow row; |
if (_wpIndex > -1 && _wpIndex < dgvWP.ItemContainerGenerator.Items.Count) |
if (_wpEdit > -1 && _wpEdit < dgvWP.ItemContainerGenerator.Items.Count) |
{ |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(_wpIndex); |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(_wpEdit); |
row.Background = new SolidColorBrush(Colors.Transparent); |
row.BorderBrush = new SolidColorBrush(Colors.Transparent); |
row.BorderThickness = new Thickness(0); |
} |
_wpIndex = dgvWP.SelectedIndex; |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(_wpIndex); |
_wpEdit = dgvWP.SelectedIndex; |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(_wpEdit); |
row.Background = new SolidColorBrush(Color.FromArgb(80, 0, 255, 100)); |
row.BorderBrush = new SolidColorBrush(Colors.SpringGreen); |
row.BorderThickness = new Thickness(2); |
3584,9 → 3594,9 |
{ |
if (dgvWP.SelectedIndex > -1 && dgvWP.SelectedIndex < dtWaypoints.Rows.Count) |
{ |
Dispatcher.Invoke(() => { |
Dispatcher.Invoke(() => { |
DataGridRow row; |
if (_wpEdit > -1) |
if (_wpEdit > -1 && _wpEdit < dgvWP.ItemContainerGenerator.Items.Count) |
{ |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(_wpEdit); |
row.Background = new SolidColorBrush(Colors.Transparent); |
3770,7 → 3780,40 |
} |
private void btnEditWPDel_Click(object sender, RoutedEventArgs e) |
{ |
if (dgvWP.SelectedIndex > -1 && dgvWP.SelectedIndex < dtWaypoints.Rows.Count) |
{ |
int index = dgvWP.SelectedIndex; |
Dispatcher.Invoke(() => { |
DataGridRow row; |
if (_wpEdit > -1 && _wpEdit < dgvWP.ItemContainerGenerator.Items.Count) |
{ |
row = (DataGridRow)dgvWP.ItemContainerGenerator.ContainerFromIndex(_wpEdit); |
row.Background = new SolidColorBrush(Colors.Transparent); |
row.BorderBrush = new SolidColorBrush(Colors.Transparent); |
row.BorderThickness = new Thickness(0); |
} |
if ((int)dtWaypoints.Rows[index][1] == 0) |
wpList.Remove(new PointLatLng((double)dtWaypoints.Rows[index][3], (double)dtWaypoints.Rows[index][4])); |
_clearWPMarker((string)dtWaypoints.Rows[index][2]); |
dtWaypoints.Rows[index].Delete(); |
_wpIndex = -1; |
_wpEdit = -1; |
for (int i = index; i < dtWaypoints.Rows.Count; i++) //change the index of points behind deleted point + rename to new index |
{ |
dtWaypoints.Rows[i][0] = i + 1; |
string s1 = (string)dtWaypoints.Rows[i][2]; //old name of WP (Prefix + index) |
string s2 = s1.Substring(0, 1) + (i + 1).ToString(); //new name of WP |
_renameWPMarker(s1, s2); |
dtWaypoints.Rows[i][2] = s2; |
} |
lblWPCount.Content = dtWaypoints.Rows.Count; |
if (mRouteWP != null) |
MainMap.Markers.Remove(mRouteWP); |
_routeUpdate(); |
|
dgvWP.UpdateLayout(); |
}); |
} |
} |
private void tbWPEdit_TouchDown(object sender, TouchEventArgs e) |
{ |
3924,13 → 3967,7 |
o[15] = "0"; |
|
dtWaypoints.Rows.Add(o); |
GMapMarker wpMarker = new GMapMarker(new PointLatLng((double)o[3], (double)o[4])); |
wpMarker.Shape = new CustomMarkerWP(this, wpMarker, (string)o[2], (int)o[1]); |
wpMarker.Offset = new System.Windows.Point(-11.5, -11.5); |
wpMarker.ZIndex = 100; |
_setMarkerColor(wpMarker, (int)o[1]); |
MainMap.Markers.Add(wpMarker); |
wpList.Add(new PointLatLng((double)o[3], (double)o[4])); |
_createWP(new PointLatLng((double)o[3], (double)o[4]), (string)o[2], (int)o[1]); |
Dispatcher.Invoke(() => lblWPCount.Content = o[0].ToString()); |
if (mRouteWP != null) |
MainMap.Markers.Remove(mRouteWP); |