Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 2423 → Rev 2424

/MKLiveView/v1.0/Source/MainWindow.xaml.cs
294,8 → 294,8
string[] sAnalogData = new string[32];
int[] iAnalogData = new int[32];
 
int[] iTimings = new int[] {100,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850,900,950,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000 };
int[] iMotors = new int[] {3,4,5,6,7,8,9,10,11,12 };
int[] iTimings = new int[] { 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000 };
int[] iMotors = new int[] { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
string[] sLiPoCells = new string[] { "3s", "4s", "5s", "6s" };
/// <summary>
/// interval for sending debugdata (multiplied by 10ms)
339,7 → 339,7
/// <summary>
/// stuff for enabeling touch zoom for the map
/// </summary>
Point pTouch1 = new Point(0,0), pTouch2 = new Point(0,0);
Point pTouch1 = new Point(0, 0), pTouch2 = new Point(0, 0);
int iFirstStylusID = -1;
public string connectButtonText
{
369,10 → 369,10
_readIni();
if (_bSaveWinStateNormal)
_setScaleSliders(false);
cBoxTimingsDebug.ItemsSource =
cBoxTimingsNav.ItemsSource =
cBoxTimingsBl.ItemsSource =
cBoxTimingsOSD.ItemsSource =
cBoxTimingsDebug.ItemsSource =
cBoxTimingsNav.ItemsSource =
cBoxTimingsBl.ItemsSource =
cBoxTimingsOSD.ItemsSource =
iTimings;
cBoxLiPoCells.ItemsSource = sLiPoCells;
cBoxLiPoCells.SelectedItem = _LipoCells.ToString() + "s";
428,7 → 428,7
dgvMotors1.DataContext = dtMotors.DefaultView;
_initDTMotors();
 
Setter setter = new Setter(ContentControl.PaddingProperty, new Thickness(5,0,5,0));
Setter setter = new Setter(ContentControl.PaddingProperty, new Thickness(5, 0, 5, 0));
Style style = new Style(typeof(System.Windows.Controls.Primitives.DataGridColumnHeader));
style.Setters.Add(setter);
setter = new Setter(ContentControl.BackgroundProperty, new SolidColorBrush(Colors.Transparent));
436,32 → 436,32
setter = new Setter(ContentControl.ForegroundProperty, new SolidColorBrush(Colors.White));
style.Setters.Add(setter);
 
dtWaypoints.Columns.Add("Index",typeof(int));
dtWaypoints.Columns.Add("Index", typeof(int));
dtWaypoints.Columns.Add("Type", typeof(int));
dtWaypoints.Columns.Add("Name",typeof(string));
dtWaypoints.Columns.Add("Latitude",typeof(double));
dtWaypoints.Columns.Add("Longitude",typeof(double));
dtWaypoints.Columns.Add("Altitude",typeof(string));
dtWaypoints.Columns.Add("Heading",typeof(string));
dtWaypoints.Columns.Add("Speed",typeof(string));
dtWaypoints.Columns.Add("ClimbRate",typeof(string));
dtWaypoints.Columns.Add("Radius",typeof(string));
dtWaypoints.Columns.Add("HoldTime",typeof(string));
dtWaypoints.Columns.Add("AutoTrigger",typeof(string));
dtWaypoints.Columns.Add("CamAngle",typeof(string));
dtWaypoints.Columns.Add("Event",typeof(string));
dtWaypoints.Columns.Add("Out1Timer",typeof(string));
dtWaypoints.Columns.Add("Status",typeof(string));
dtWaypoints.Columns.Add("Name", typeof(string));
dtWaypoints.Columns.Add("Latitude", typeof(double));
dtWaypoints.Columns.Add("Longitude", typeof(double));
dtWaypoints.Columns.Add("Altitude", typeof(string));
dtWaypoints.Columns.Add("Heading", typeof(string));
dtWaypoints.Columns.Add("Speed", typeof(string));
dtWaypoints.Columns.Add("ClimbRate", typeof(string));
dtWaypoints.Columns.Add("Radius", typeof(string));
dtWaypoints.Columns.Add("HoldTime", typeof(string));
dtWaypoints.Columns.Add("AutoTrigger", typeof(string));
dtWaypoints.Columns.Add("CamAngle", typeof(string));
dtWaypoints.Columns.Add("Event", typeof(string));
dtWaypoints.Columns.Add("Out1Timer", typeof(string));
dtWaypoints.Columns.Add("Status", typeof(string));
dtWaypoints.PrimaryKey = new DataColumn[] { dtWaypoints.Columns["Index"] };
dgvWP.ItemsSource = dtWaypoints.DefaultView;
dgvWP.ColumnHeaderStyle = new Style();
dgvWP.ColumnHeaderStyle = style;
 
dtGPX.Columns.Add("Index",typeof(int));
dtGPX.Columns.Add("Latitude",typeof(double));
dtGPX.Columns.Add("Longitude",typeof(double));
dtGPX.Columns.Add("Elevation",typeof(int));
dtGPX.Columns.Add("Time",typeof(string));
dtGPX.Columns.Add("Index", typeof(int));
dtGPX.Columns.Add("Latitude", typeof(double));
dtGPX.Columns.Add("Longitude", typeof(double));
dtGPX.Columns.Add("Elevation", typeof(int));
dtGPX.Columns.Add("Time", typeof(string));
dtGPX.PrimaryKey = new DataColumn[] { dtGPX.Columns["Index"] };
drGPX = dtGPX.NewRow();
 
492,6 → 492,7
Dispatcher.Invoke(() => imageWiFi.Source = new BitmapImage(new Uri("Images/WiFi_G.png", UriKind.Relative)));
_getVersion();
Thread.Sleep(100);
_getLic();
//_OSDMenue(0);
//Thread.Sleep(200);
//_sendSerialData();
524,10 → 525,10
if (_iLifeCounter > 0)
{
Dispatcher.Invoke(() => imageConn.Source = new BitmapImage(new Uri("Images/Data_G.png", UriKind.Relative)));
// Dispatcher.Invoke((Action)(() => rctConnection.Fill = Brushes.LightGreen));
// Dispatcher.Invoke((Action)(() => rctConnection.Fill = Brushes.LightGreen));
_iLifeCounter = 0;
_bConnErr = false;
if(_bAirborne && _bGPXLog)
if (_bAirborne && _bGPXLog)
{
drGPX[0] = dtGPX.Rows.Count;
dtGPX.Rows.Add(new object[] { drGPX[0], drGPX[1], drGPX[2], drGPX[3], drGPX[4] });
543,7 → 544,7
{
Log(LogMsgType.Error, "No communication to NC/FC!");
Dispatcher.Invoke(() => imageConn.Source = new BitmapImage(new Uri("Images/Data_R.png", UriKind.Relative)));
// Dispatcher.Invoke((Action)(() => rctConnection.Fill = Brushes.Red));
// Dispatcher.Invoke((Action)(() => rctConnection.Fill = Brushes.Red));
_bConnErr = true;
}
}
627,12 → 628,12
#region thresholds
private void sliderThresholdVoltageWarn_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if(!_init)
if (!_init)
_dThresholdVoltageWarn = sliderThresholdVoltageWarn.Value;
}
private void sliderThresholdVoltageCrit_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if(!_init)
if (!_init)
_dThresholdVoltageCrit = sliderThresholdVoltageCrit.Value;
}
private void checkBoxThresholdVoltageVoice_Click(object sender, RoutedEventArgs e)
642,7 → 643,7
 
private void sliderThresholdDistanceWarn_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if(!_init)
if (!_init)
_dThresholdDistanceWarn = sliderThresholdDistanceWarn.Value;
}
private void checkBoxThresholdDistanceVoice_Click(object sender, RoutedEventArgs e)
681,7 → 682,7
private void Window_Closing(object sender, CancelEventArgs e)
{
_writeIni();
if(_bGPXLog && dtGPX.Rows.Count > 0)
if (_bGPXLog && dtGPX.Rows.Count > 0)
_saveGPXLog();
}
private void Window_Closed(object sender, EventArgs e)
713,7 → 714,7
comboBoxMode.SelectedItem = MainMap.Manager.Mode;
 
}
 
/// <summary>
/// selection of relevant map providers --> if You need more, You can change the line:
/// comboBoxMapType.ItemsSource = providerList;
733,7 → 734,7
MainMap.Manager.Mode = AccessMode.ServerAndCache;
copter = new GMapMarker(MainMap.Position);
 
copter.Shape = new CustomMarkerCopter(this, copter, MainMap.Position.Lat.ToString("0.#######°") + System.Environment.NewLine + MainMap.Position.Lng.ToString("0.#######°"),"red");
copter.Shape = new CustomMarkerCopter(this, copter, MainMap.Position.Lat.ToString("0.#######°") + System.Environment.NewLine + MainMap.Position.Lng.ToString("0.#######°"), "red");
if (comboBoxCopterColor.SelectionBoxItem != null)
{
string s = comboBoxCopterColor.SelectionBoxItem.ToString();
836,7 → 837,7
void _clearWPMarker(string name)
{
GMapMarker p = _findWPMarker(name);
if(p != null)
if (p != null)
MainMap.Markers.Remove(p);
}
void _renameWPMarker(string s1, string s2)
863,7 → 864,7
 
GMapMarker it = new GMapMarker(center);
it.ZIndex = -1;
 
cWPBound.Center = center;
cWPBound.Bound = GMap.NET.PureProjection.GetPointFromDistance(center, distance);
cWPBound.Tag = it;
989,9 → 990,9
{
if (_bFollowCopter)
_setCopterData(MainMap.Position);
if((int)sliderMapZoom.Value != MainMap.Zoom)
if ((int)sliderMapZoom.Value != MainMap.Zoom)
sliderMapZoom.Value = MainMap.Zoom;
if(cWPBound != null && cWPBound.Tag != null)
if (cWPBound != null && cWPBound.Tag != null)
UpdateCircle(cWPBound);
}
 
1010,7 → 1011,7
double d = GMapProviders.EmptyProvider.Projection.GetDistance(home.Position, copter.Position);
Dispatcher.Invoke(() => tbTopDistanceHP.Text = (d * 1000).ToString("0.0 m"));
 
if(d*1000 < _dThresholdDistanceWarn)
if (d * 1000 < _dThresholdDistanceWarn)
{
_iDistanceJitter = 0; _bVoiceDistanceActive = false;
if (stbDistanceWarnAnim != null && _bAnimDistanceActive)
1131,12 → 1132,12
#region settings
private void cBoxTimingsDebug_DropDownClosed(object sender, EventArgs e)
{
if(! _bCBInit && cBoxTimingsDebug.SelectedIndex > -1)
if (!_bCBInit && cBoxTimingsDebug.SelectedIndex > -1)
debugInterval = (byte)(Convert.ToInt16(cBoxTimingsDebug.SelectedItem) / 10);
}
private void cBoxTimingsNav_DropDownClosed(object sender, EventArgs e)
{
if(! _bCBInit && cBoxTimingsNav.SelectedIndex > -1)
if (!_bCBInit && cBoxTimingsNav.SelectedIndex > -1)
navctrlInterval = (byte)(Convert.ToInt16(cBoxTimingsNav.SelectedItem) / 10);
}
private void cBoxTimingsBl_DropDownClosed(object sender, EventArgs e)
1219,10 → 1220,10
{
Dispatcher.Invoke(() =>
{
// rtfTerminal.CaretPosition = rtfTerminal.CaretPosition.DocumentEnd;
// rtfTerminal.Foreground = new SolidColorBrush(LogMsgTypeColor[(int)msgtype]);
// rtfTerminal.AppendText(msg + "\r");
TextRange tr = new TextRange(rtfTerminal.Document.ContentEnd,rtfTerminal.Document.ContentEnd);
// rtfTerminal.CaretPosition = rtfTerminal.CaretPosition.DocumentEnd;
// rtfTerminal.Foreground = new SolidColorBrush(LogMsgTypeColor[(int)msgtype]);
// rtfTerminal.AppendText(msg + "\r");
TextRange tr = new TextRange(rtfTerminal.Document.ContentEnd, rtfTerminal.Document.ContentEnd);
tr.Text = msg;
tr.ApplyPropertyValue(TextElement.ForegroundProperty, new SolidColorBrush(LogMsgTypeColor[(int)msgtype]));
rtfTerminal.AppendText("\r");
1229,7 → 1230,7
rtfTerminal.ScrollToEnd();
});
}
private void ErrorLog(LogMsgType msgtype, string msg , string linkURL, string linkName)
private void ErrorLog(LogMsgType msgtype, string msg, string linkURL, string linkName)
{
 
Dispatcher.Invoke(() =>
1284,7 → 1285,7
if (iEnd > 0)
{
iLength = iEnd + 1;
int iHttp = searchRange.Text.IndexOf("http", iEnd);
int iHttp = searchRange.Text.IndexOf("http", iEnd);
if (iHttp == iLength)
{
int iEnd2 = searchRange.Text.IndexOf('\r', iLength);
1291,7 → 1292,7
if (iEnd2 > iLength)
{
iLength = iEnd2 + 1;
// TextRange result = new TextRange(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), GetTextPositionAtOffset(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), iLength));
// TextRange result = new TextRange(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), GetTextPositionAtOffset(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), iLength));
 
rtfError.Selection.Select(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), GetTextPositionAtOffset(rtfError.Document.ContentStart.GetPositionAtOffset(iStart), iLength));
rtfError.Selection.Text = string.Empty;
1403,9 → 1404,9
{
case 1:
Dispatcher.Invoke(() => tbCtrl.Text = "FC");
// Dispatcher.Invoke(() => buttonSwitchNC.Visibility = Visibility.Visible);
// Dispatcher.Invoke(() => labelSwitchToNavi.Visibility = Visibility.Visible);
// _setFieldsNA(); //display fields NA for FC
// Dispatcher.Invoke(() => buttonSwitchNC.Visibility = Visibility.Visible);
// Dispatcher.Invoke(() => labelSwitchToNavi.Visibility = Visibility.Visible);
// _setFieldsNA(); //display fields NA for FC
break;
case 2:
Dispatcher.Invoke(() => tbCtrl.Text = "NC");
1422,7 → 1423,7
Dispatcher.Invoke(() => tbCtrl.Text = "NA");
break;
}
// _loadLabelNames();
// _loadLabelNames();
}
// else
// Debug.Print("Address == 0?");
1450,6 → 1451,10
_processBLCtrl(data);
break;
 
case 'M'://License info
_processLicense(data);
break;
 
case 'O': //NC Data
_processNCData(data);
break;
1517,7 → 1522,7
{
if (data.Length == 66)
{
 
double v;
int index = 0;
Int16 i16 = 0;
1528,7 → 1533,7
i16 = (Int16)(i16 << 8);
iAnalogData[index] = data[i] + i16;
sAnalogData[index] = (data[i] + i16).ToString();
// dtAnalog.Rows[index].SetField(1, sAnalogData[index]);
// dtAnalog.Rows[index].SetField(1, sAnalogData[index]);
 
if (adr == 2) //NC
{
1545,7 → 1550,7
case 4: //altitude
Dispatcher.Invoke(() => tbAlt.Text = ((double)iAnalogData[index] / (double)10).ToString("0.0 m"));
Dispatcher.Invoke(() => tbTopHeight.Text = ((double)iAnalogData[index] / (double)10).ToString("0.0 m"));
Dispatcher.Invoke(() => { drGPX[3] = (double)iAnalogData[index] / (double)10; });
Dispatcher.Invoke(() => { drGPX[3] = (double)iAnalogData[index] / (double)10; });
break;
case 7: //Voltage
v = (double)iAnalogData[index] / (double)10;
1555,12 → 1560,12
if (v - _dLipoVMin < 1 | v < _dThresholdVoltageWarn)
{
if (v == _dVoltLast)
if(_iVoltJitter < 20) _iVoltJitter++;
else
{
_iVoltJitter = 0;
_dVoltLast = v;
}
if (_iVoltJitter < 20) _iVoltJitter++;
else
{
_iVoltJitter = 0;
_dVoltLast = v;
}
if (_iVoltJitter == 20)
{
Dispatcher.Invoke(() => pbTopVoltage.Foreground = Brushes.Orange);
1634,7 → 1639,7
case 20: //Earthmagnet field
Dispatcher.Invoke((Action)(() => tbMagF.Text = sAnalogData[index] + "%"));
Dispatcher.Invoke((Action)(() => tbTopEarthMag.Text = sAnalogData[index] + "%"));
 
if (Math.Abs(100 - iAnalogData[index]) < _iThresholdMagField)
{
Dispatcher.Invoke(() => imageEarthMag.Source = new BitmapImage(new Uri("Images/EarthMag.png", UriKind.Relative)));
1648,7 → 1653,7
else
{
Dispatcher.Invoke(() => imageEarthMag.Source = new BitmapImage(new Uri("Images/EarthMag_R.png", UriKind.Relative)));
if(_iMagneticFieldLast >= Math.Abs(100 - iAnalogData[index]))
if (_iMagneticFieldLast >= Math.Abs(100 - iAnalogData[index]))
{
if (_iMagneticFieldJitter < 20)
_iMagneticFieldJitter++;
1658,7 → 1663,7
_iMagneticFieldJitter = 0;
_iMagneticFieldLast = Math.Abs(100 - iAnalogData[index]);
}
if(_iMagneticFieldJitter == 20)
if (_iMagneticFieldJitter == 20)
{
if (stbMagneticFieldAnim != null && !_bAnimMagneticFieldActive)
{
1676,25 → 1681,25
}
break;
case 21: //GroundSpeed
Dispatcher.Invoke((Action)(() => tbSpeed.Text = ((double)iAnalogData[index] / (double)100).ToString("0.00 m/s")));
if (!_Simulate)
Dispatcher.Invoke((Action)(() => tbTopSpeed.Text = ((double)iAnalogData[index] / (double)100).ToString("0.00 m/s")));
Dispatcher.Invoke((Action)(() => tbSpeed.Text = ((double)iAnalogData[index] / (double)100).ToString("0.00 m/s")));
if (!_Simulate)
Dispatcher.Invoke((Action)(() => tbTopSpeed.Text = ((double)iAnalogData[index] / (double)100).ToString("0.00 m/s")));
break;
 
///********** needs testing --> not sure what position this is ***************
case 28: //Distance East from saved home position -> calculate distance with distance N + height
dTemp = Math.Pow((double)iAnalogData[index], 2) + Math.Pow((double)iAnalogData[index - 1], 2);
dTemp = Math.Sqrt(dTemp) / (double)10; //'flat' distance from HP with N/E
// lblNCDist.Invoke((Action)(() => lblNCDist.Text = dTemp.ToString("0.00")));
dTemp = Math.Pow(dTemp, 2) + Math.Pow(((double)iAnalogData[4] / (double)10), 2); //adding 'height' into calculation
dTemp = Math.Sqrt(dTemp) / (double)10;
// Dispatcher.Invoke((Action)(() => tbTopDistanceHP.Text = dTemp.ToString("0.0 m")));
Dispatcher.Invoke((Action)(() => tbHP1.Text = dTemp.ToString("0.0 m")));
dTemp = Math.Pow((double)iAnalogData[index], 2) + Math.Pow((double)iAnalogData[index - 1], 2);
dTemp = Math.Sqrt(dTemp) / (double)10; //'flat' distance from HP with N/E
// lblNCDist.Invoke((Action)(() => lblNCDist.Text = dTemp.ToString("0.00")));
dTemp = Math.Pow(dTemp, 2) + Math.Pow(((double)iAnalogData[4] / (double)10), 2); //adding 'height' into calculation
dTemp = Math.Sqrt(dTemp) / (double)10;
// Dispatcher.Invoke((Action)(() => tbTopDistanceHP.Text = dTemp.ToString("0.0 m")));
Dispatcher.Invoke((Action)(() => tbHP1.Text = dTemp.ToString("0.0 m")));
break;
 
case 31: //Sats used
Dispatcher.Invoke((Action)(() => tbSats.Text = sAnalogData[index]));
// Dispatcher.Invoke((Action)(() => tbTopSats.Text = sAnalogData[index]));
Dispatcher.Invoke((Action)(() => tbSats.Text = sAnalogData[index]));
// Dispatcher.Invoke((Action)(() => tbTopSats.Text = sAnalogData[index]));
break;
}
}
1728,16 → 1733,16
if (data[5] > 0) //error0
{
if (adr == 1)
ErrorLog(LogMsgType.Error, " FC - HW-Error " + data[5].ToString() + ": " + ((FC_HWError0)data[5]).ToString(),"","");
ErrorLog(LogMsgType.Error, " FC - HW-Error " + data[5].ToString() + ": " + ((FC_HWError0)data[5]).ToString(), "", "");
if (adr == 2)
ErrorLog(LogMsgType.Error, " NC - HW-Error " + data[5].ToString() + ": " + ((NC_HWError0)data[5]).ToString(),"","");
ErrorLog(LogMsgType.Error, " NC - HW-Error " + data[5].ToString() + ": " + ((NC_HWError0)data[5]).ToString(), "", "");
}
if (data[6] > 0) //error1
{
if (adr == 1)
ErrorLog(LogMsgType.Error, " FC - HW-Error " + data[6].ToString() + ": " + ((FC_HWError1)data[6]).ToString(),"","");
ErrorLog(LogMsgType.Error, " FC - HW-Error " + data[6].ToString() + ": " + ((FC_HWError1)data[6]).ToString(), "", "");
if (adr == 2)
ErrorLog(LogMsgType.Error, " NC - Unknown HW-ERROR: " + data[6].ToString(),"",""); //@moment NC has only one error field
ErrorLog(LogMsgType.Error, " NC - Unknown HW-ERROR: " + data[6].ToString(), "", ""); //@moment NC has only one error field
}
//if ((data[5] + data[6] == 0) && _bErrorLog)
// _clearErrorLog(adr == 1 ? "FC - HW-Error" : "NC - HW-Error");
1745,6 → 1750,20
}
check_HWError = false;
}
 
void _processLicense(byte[] data)
{
if (data.Length > 480)
{
Dispatcher.Invoke(() => {
tbDataLicenseUser.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 1, 127));
tbDataLicenseMail.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 129, 127));
tbDataLicenseFeature.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 257, 127));
tbDataLicenseExpire.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 385, 11));
tbDataLicenseLicense.Text = new string(ASCIIEncoding.ASCII.GetChars(data, 397, 16));
});
}
}
/// <summary>
/// BL-Ctrl data 'K'
/// for FC you have to use a customized firmware
2305,6 → 2324,7
Thread.Sleep(100);
_getVersion();
Thread.Sleep(100);
_getLic();
// _OSDMenue(0);
}
else
2356,6 → 2376,21
_sendControllerMessage('o', 2, new byte[1] { interval });
}
/// <summary>
/// request the license info
/// </summary>
void _getLic()
{
if (serialPortCtrl.Port.IsOpen)
{
Stream serialStream = serialPortCtrl.Port.BaseStream;
byte[] bytes = FlightControllerMessage.CreateMessage('m', 2, new byte[1] { (byte)1 });
serialStream.Write(bytes, 0, bytes.Length);
}
else
Log(LogMsgType.Error, "NOT CONNECTED!");
 
}
/// <summary>
/// get the errortext for pending NC error
/// </summary>
private void _readNCError()
3675,15 → 3710,20
GMapMarker p = ((GMapMarker)wp.DataContext);
if (p != null && index < dtWaypoints.Rows.Count)
{
//dtWaypoints.Rows[index][3] = p.Position.Lat;
//dtWaypoints.Rows[index][4] = p.Position.Lng;
//Dispatcher.Invoke(() => dgvWP.Items.Refresh());
if(wp.WPType == 0 | wp.WPType == 3)
{
wpList[index] = p.Position;
MainMap.Markers.Remove(mRouteWP);
_routeUpdate();
{
PointLatLng x = new PointLatLng((double)dtWaypoints.Rows[index][3], (double)dtWaypoints.Rows[index][4]);
int wpListIndex = wpList.IndexOf(x);
if (wpListIndex > -1)
{
wpList[wpListIndex] = p.Position;
MainMap.Markers.Remove(mRouteWP);
_routeUpdate();
}
}
dtWaypoints.Rows[index][3] = p.Position.Lat;
dtWaypoints.Rows[index][4] = p.Position.Lng;
}
}
void _updateDTWPPosFin(CustomMarkerWP wp)
4150,11 → 4190,18
dgvWP.Items.Refresh();
dgvWP.SelectedIndex = index - 1;
_dgvWPselectEditRow();
PointLatLng p = wpList[index];
wpList.RemoveAt(index);
wpList.Insert(index - 1, p);
MainMap.Markers.Remove(mRouteWP);
_routeUpdate();
if (((int)dtWaypoints.Rows[index][1] == 0 | (int)dtWaypoints.Rows[index][1] == 3) && ((int)dtWaypoints.Rows[index - 1][1] == 0 | (int)dtWaypoints.Rows[index - 1][1] == 3))// && wpList.Count > index)
{
PointLatLng x = new PointLatLng((double)dtWaypoints.Rows[index][3], (double)dtWaypoints.Rows[index][4]);
int wpListIndex = wpList.IndexOf(x);
if (wpListIndex > 0)
{
wpList.RemoveAt(wpListIndex);
wpList.Insert(wpListIndex - 1, x);
MainMap.Markers.Remove(mRouteWP);
_routeUpdate();
}
}
}
}
 
4180,11 → 4227,21
dgvWP.Items.Refresh();
dgvWP.SelectedIndex = index + 1;
_dgvWPselectEditRow();
PointLatLng p = wpList[index];
wpList.RemoveAt(index);
wpList.Insert(index + 1, p);
MainMap.Markers.Remove(mRouteWP);
_routeUpdate();
if (((int)dtWaypoints.Rows[index][1] == 0 | (int)dtWaypoints.Rows[index][1] == 3) && ((int)dtWaypoints.Rows[index+1][1] == 0 | (int)dtWaypoints.Rows[index+1][1] == 3))// && wpList.Count > index)
{
PointLatLng x = new PointLatLng((double)dtWaypoints.Rows[index][3], (double)dtWaypoints.Rows[index][4]);
int wpListIndex = wpList.IndexOf(x);
if (wpListIndex > -1)
{
wpList.RemoveAt(wpListIndex);
if (wpList.Count > wpListIndex)
wpList.Insert(wpListIndex + 1, x);
else
wpList.Add(x);
MainMap.Markers.Remove(mRouteWP);
_routeUpdate();
}
}
}
 
}