From 891f3e8220f616db23a887208673864fa821b367 Mon Sep 17 00:00:00 2001 From: Brian Tischler Date: Tue, 22 Oct 2019 00:03:19 -0600 Subject: [PATCH] Refined Guidance Bnd alarm, no tab side, lineWidth --- SourceCode/GPS/AgOpenGPS.csproj | 26 +- SourceCode/GPS/Classes/CABCurve.cs | 38 +- SourceCode/GPS/Classes/CABLine.cs | 77 +- SourceCode/GPS/Classes/CContour.cs | 65 +- SourceCode/GPS/Classes/CTurn.cs | 2 +- SourceCode/GPS/Classes/CYouTurn.cs | 5 +- .../GPS/Dependencies/Audio/Boundary.wav | Bin 0 -> 335564 bytes SourceCode/GPS/Forms/FormABCurve.Designer.cs | 140 ++- SourceCode/GPS/Forms/FormABCurve.cs | 522 ++++++------ SourceCode/GPS/Forms/FormABDraw.cs | 609 +++---------- SourceCode/GPS/Forms/FormABLine.Designer.cs | 444 +++++----- SourceCode/GPS/Forms/FormABLine.cs | 672 +++++++++------ SourceCode/GPS/Forms/FormABPick.Designer.cs | 188 ---- SourceCode/GPS/Forms/FormABPick.cs | 627 -------------- SourceCode/GPS/Forms/FormABPick.resx | 126 --- SourceCode/GPS/Forms/FormFieldDir.cs | 4 +- SourceCode/GPS/Forms/FormGPS.Designer.cs | 382 +++++---- SourceCode/GPS/Forms/FormGPS.cs | 52 +- SourceCode/GPS/Forms/FormGPS.resx | 5 +- .../GPS/Forms/FormMakeBndCon.Designer.cs | 11 +- SourceCode/GPS/Forms/FormSettings.Designer.cs | 69 +- SourceCode/GPS/Forms/FormSettings.cs | 19 +- .../GPS/Forms/FormShortcutKeys.Designer.cs | 40 +- SourceCode/GPS/Forms/FormShortcutKeys.resx | 26 + SourceCode/GPS/Forms/FormSmoothAB.cs | 2 +- SourceCode/GPS/Forms/GUI.Designer.cs | 340 +++++--- SourceCode/GPS/Forms/OpenGL.Designer.cs | 38 +- SourceCode/GPS/Forms/Position.designer.cs | 13 + SourceCode/GPS/Forms/SaveOpen.Designer.cs | 800 +++++++++++++----- SourceCode/GPS/Forms/UDPComm.Designer.cs | 285 ++++--- .../GPS/Properties/Resources.Designer.cs | 101 ++- SourceCode/GPS/Properties/Resources.resx | 552 ++++++------ .../GPS/Properties/Settings.Designer.cs | 22 +- SourceCode/GPS/Properties/Settings.settings | 7 +- SourceCode/GPS/Resources/Alarm10.wav | Bin 0 -> 335564 bytes SourceCode/GPS/aChangeLog.txt | 6 + SourceCode/GPS/app.config | 7 +- SourceCode/GPS/btnImages/ABLineCycle.png | Bin 0 -> 2972 bytes SourceCode/GPS/btnImages/ABLineTurnOff.png | Bin 0 -> 6190 bytes SourceCode/GPS/btnImages/AddNew.png | Bin 0 -> 3560 bytes SourceCode/GPS/btnImages/ArrowLeft.png | Bin 4232 -> 3693 bytes SourceCode/GPS/btnImages/ArrowRight.png | Bin 4310 -> 3778 bytes SourceCode/GPS/btnImages/CurveTurnOff.png | Bin 0 -> 3767 bytes SourceCode/GPS/btnImages/FileNewAndGo.png | Bin 0 -> 4018 bytes SourceCode/GPS/btnImages/PointStart.png | Bin 9479 -> 6936 bytes SourceCode/GPS/btnImages/SwitchOff.png | Bin 1223 -> 5039 bytes SourceCode/GPS/btnImages/SwitchOn.png | Bin 1179 -> 5257 bytes SourceCode/GPS/btnImages/displayMenu.png | Bin 0 -> 2080 bytes SourceCode/GPS/btnImages/fileMenu.png | Bin 0 -> 1293 bytes 49 files changed, 2959 insertions(+), 3363 deletions(-) create mode 100644 SourceCode/GPS/Dependencies/Audio/Boundary.wav delete mode 100644 SourceCode/GPS/Forms/FormABPick.Designer.cs delete mode 100644 SourceCode/GPS/Forms/FormABPick.cs delete mode 100644 SourceCode/GPS/Forms/FormABPick.resx create mode 100644 SourceCode/GPS/Resources/Alarm10.wav create mode 100644 SourceCode/GPS/btnImages/ABLineCycle.png create mode 100644 SourceCode/GPS/btnImages/ABLineTurnOff.png create mode 100644 SourceCode/GPS/btnImages/AddNew.png create mode 100644 SourceCode/GPS/btnImages/CurveTurnOff.png create mode 100644 SourceCode/GPS/btnImages/FileNewAndGo.png create mode 100644 SourceCode/GPS/btnImages/displayMenu.png create mode 100644 SourceCode/GPS/btnImages/fileMenu.png diff --git a/SourceCode/GPS/AgOpenGPS.csproj b/SourceCode/GPS/AgOpenGPS.csproj index ade4c7e17..b69ebe437 100644 --- a/SourceCode/GPS/AgOpenGPS.csproj +++ b/SourceCode/GPS/AgOpenGPS.csproj @@ -134,12 +134,6 @@ - - Form - - - FormABPick.cs - Form @@ -389,9 +383,6 @@ True True - - FormABPick.cs - FormNumeric.cs @@ -559,6 +550,19 @@ + + + + + + + + + + + + Always + Always @@ -718,9 +722,7 @@ - - - + F2>fohs6FBzueunP+$(!u!Qoo3v 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%0DWE~{0H$PN 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 curveArr = new List(); - //access to the main GPS form and all its variables private readonly FormGPS mf; - private string filename = ""; - public FormABCurve(Form _mf) { mf = _mf as FormGPS; InitializeComponent(); lblEnterCurveName.Text = gStr.gsEnterCurveName; - btnMulti.Text = gStr.gsShow; btnPausePlay.Text = gStr.gsPause; } private void FormABCurve_Load(object sender, EventArgs e) { btnPausePlay.Enabled = false; - btnAPoint.Enabled = true; + btnAPoint.Enabled = false; btnBPoint.Enabled = false; + btnAddToFile.Enabled = false; + btnAddAndGo.Enabled = false; + textBox1.Enabled = false; + mf.curve.isOkToAddPoints = false; if (mf.curve.refList.Count > 3) { lblCurveExists.Text = "Curve Set"; - btnABLineOk.Enabled = true; } else { mf.curve.ResetCurveLine(); lblCurveExists.Text = " > Off <"; - btnABLineOk.Enabled = false; } + lvLines.Clear(); - curveArr.Clear(); - FormABCurve_LoadCurves(); + ListViewItem itm; - this.Size = new System.Drawing.Size(280, 440); - btnMulti.Image = Properties.Resources.ArrowLeft; + foreach (var item in mf.curve.curveArr) + { + itm = new ListViewItem(item.Name); + lvLines.Items.Add(itm); + } + + // go to bottom of list - if there is a bottom + if (lvLines.Items.Count > 0) lvLines.Items[lvLines.Items.Count - 1].EnsureVisible(); + + ShowSavedPanel(true); + //this.Size = new System.Drawing.Size(280, 440); + //btnMulti.Image = Properties.Resources.ArrowLeft; } //for calculating for display the averaged new line @@ -96,109 +104,112 @@ public void SmoothAB(int smPts) } } - private void btnABLineOk_Click(object sender, System.EventArgs e) + private void btnAddToFile_Click(object sender, EventArgs e) { - if (mf.curve.refList.Count < 3) + if (mf.curve.refList.Count > 0) { - mf.curve.isCurveBtnOn = false; - mf.btnCurve.Image = Properties.Resources.CurveOff; + if (textBox1.Text.Length > 0) + { + mf.curve.curveArr.Add(new CCurveLines()); - mf.curve.ResetCurveLine(); - mf.DisableYouTurnButtons(); - mf.FileSaveCurveLine(); - Close(); + mf.curve.numCurveLines = mf.curve.curveArr.Count; + if (mf.curve.numCurveLineSelected > mf.curve.numCurveLines) mf.curve.numCurveLineSelected = mf.curve.numCurveLines; + + //array number is 1 less since it starts at zero + int cnt = mf.curve.curveArr.Count-1; + + mf.curve.curveArr[cnt].Name = textBox1.Text.Trim(); + mf.curve.curveArr[cnt].aveHeading = mf.curve.aveLineHeading; + + //write out the Curve Points + foreach (var item in mf.curve.refList) + { + mf.curve.curveArr[cnt].curvePts.Add(item); + } + + //update the listbox with new curve name + ListViewItem itm = new ListViewItem(mf.curve.curveArr[cnt].Name); + lvLines.Items.Add(itm); + lvLines.Enabled = true; + textBox1.BackColor = SystemColors.Window; + textBox1.Text = ""; + textBox1.Enabled = false; + btnAddAndGo.Enabled = false; + btnAddToFile.Enabled = false; + btnAPoint.Enabled = false; + btnCancel.Enabled = true; + btnNewCurve.Enabled = true; + lvLines.SelectedItems.Clear(); + btnNewCurve.Enabled = true; + + mf.FileSaveCurveLines(); + } } else { - mf.curve.isCurveSet = true; - mf.EnableYouTurnButtons(); - mf.FileSaveCurveLine(); - Close(); - } + var form2 = new FormTimedMessage(2000, gStr.gsNoABCurveCreated, gStr.gsCompleteAnABCurveLineFirst); + form2.Show(); + textBox1.BackColor = SystemColors.Window; + } } - - private void btnAddToFile_Click(object sender, EventArgs e) + private void btnAddAndGo_Click(object sender, EventArgs e) { - //get the directory and make sure it exists, create if not - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); + if (mf.curve.refList.Count > 0) + { + if (textBox1.Text.Length > 0) + { + mf.curve.curveArr.Add(new CCurveLines()); - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } + mf.curve.numCurveLines = mf.curve.curveArr.Count; + mf.curve.numCurveLineSelected = mf.curve.numCurveLines; - filename = directoryName + "\\CurveLines.txt"; + //array number is 1 less since it starts at zero + int idx = mf.curve.curveArr.Count - 1; - //use Streamwriter to create and overwrite existing curveLines file - using (StreamWriter writer = new StreamWriter(filename, true)) - { - try - { - if (mf.curve.refList.Count > 0) - { - if (textBox1.Text.Length > 0) - { - curveArr.Add(new CurveLineSaved()); - curveArr[curveArr.Count - 1].Name = textBox1.Text; - curveArr[curveArr.Count - 1].aveHeading = mf.curve.aveLineHeading; - - ListViewItem itm = new ListViewItem(curveArr[curveArr.Count - 1].Name); - lvLines.Items.Add(itm); - - //write out the ABLine - writer.WriteLine(textBox1.Text); - - //write out the aveheading - writer.WriteLine(mf.curve.aveLineHeading.ToString(CultureInfo.InvariantCulture)); - - //write out the points of ref line - writer.WriteLine(mf.curve.refList.Count.ToString(CultureInfo.InvariantCulture)); - - for (int j = 0; j < mf.curve.refList.Count; j++) - { - curveArr[curveArr.Count - 1].curvePts.Add(mf.curve.refList[j]); - writer.WriteLine(Math.Round(mf.curve.refList[j].easting, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(mf.curve.refList[j].northing, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(mf.curve.refList[j].heading, 5).ToString(CultureInfo.InvariantCulture)); - } - } - else - { - //MessageBox.Show("Currently no ABCurve name\n create ABCurve name"); - var form2 = new FormTimedMessage(2000, gStr.gsNoNameEntered, gStr.gsEnterUniqueABCurveName); - form2.Show(); - } - textBox1.Clear(); - } - else + mf.curve.curveArr[idx].Name = textBox1.Text.Trim(); + mf.curve.curveArr[idx].aveHeading = mf.curve.aveLineHeading; + + //write out the Curve Points + foreach (var item in mf.curve.refList) { - var form2 = new FormTimedMessage(2000, gStr.gsNoABCurveCreated, gStr.gsCompleteAnABCurveLineFirst); - form2.Show(); + mf.curve.curveArr[idx].curvePts.Add(item); } - } - catch (Exception er) - { - mf.WriteErrorLog("Saving Curve Line" + er.ToString()); - return; + mf.curve.isCurveSet = true; + + mf.FileSaveCurveLines(); + + Close(); } } + else + { + var form2 = new FormTimedMessage(2000, gStr.gsNoABCurveCreated, gStr.gsCompleteAnABCurveLineFirst); + form2.Show(); + textBox1.BackColor = SystemColors.Window; + } + + } + private void btnNewCurve_Click(object sender, EventArgs e) + { + ShowSavedPanel(false); + btnNewCurve.Enabled = false; + btnCancel.Enabled = false; + btnAPoint.Enabled = true; } private void btnAPoint_Click(object sender, System.EventArgs e) { + mf.curve.moveDistance = 0; //clear out the reference list lblCurveExists.Text = "Driving"; mf.curve.ResetCurveLine(); - mf.curve.isOkToAddPoints = true; - btnBPoint.Enabled = true; btnAPoint.Enabled = false; - btnMulti.Enabled = false; - btnABLineOk.Enabled = false; - btnCancel.Enabled = false; + mf.curve.isOkToAddPoints = true; btnPausePlay.Enabled = true; - - ShowSavedPanel(false); + btnPausePlay.Visible = true; + btnBPoint.Enabled = true; } private void btnBPoint_Click(object sender, System.EventArgs e) @@ -206,12 +217,10 @@ private void btnBPoint_Click(object sender, System.EventArgs e) mf.curve.aveLineHeading = 0; mf.curve.isOkToAddPoints = false; btnBPoint.Enabled = false; - btnAPoint.Enabled = true; - btnABLineOk.Enabled = true; + btnAPoint.Enabled = false; btnPausePlay.Enabled = false; - btnMulti.Enabled = true; - btnABLineOk.Enabled = true; - btnCancel.Enabled = true; + btnCancel.Enabled = false; + lvLines.Enabled = false; int cnt = mf.curve.refList.Count; if (cnt > 3) @@ -245,6 +254,7 @@ private void btnBPoint_Click(object sender, System.EventArgs e) x /= mf.curve.refList.Count; y /= mf.curve.refList.Count; mf.curve.aveLineHeading = Math.Atan2(y, x); + if (mf.curve.aveLineHeading < 0) mf.curve.aveLineHeading += glm.twoPI; //build the tail extensions mf.curve.AddFirstLastPoints(); @@ -253,99 +263,102 @@ private void btnBPoint_Click(object sender, System.EventArgs e) mf.curve.isCurveSet = true; mf.EnableYouTurnButtons(); - mf.FileSaveCurveLine(); + //mf.FileSaveCurveLine(); lblCurveExists.Text = "Curve Set"; + + ShowSavedPanel(true); + + btnAddAndGo.Enabled = true; + btnAddToFile.Enabled = true; + btnAPoint.Enabled = false; + btnBPoint.Enabled = false; + btnPausePlay.Enabled = false; + + textBox1.BackColor = Color.LightGreen; + textBox1.Enabled = true; + textBox1.Text = (Math.Round(glm.toDegrees(mf.curve.aveLineHeading), 1)).ToString(CultureInfo.InvariantCulture) + + "\u00B0" + FindDirection(mf.curve.aveLineHeading) + + DateTime.Now.ToString("hh:mm:ss", CultureInfo.InvariantCulture); } else { mf.curve.isCurveSet = false; mf.curve.refList?.Clear(); + lblCurveExists.Text = " > Off <"; + ShowSavedPanel(true); + btnNewCurve.Enabled = true; + btnCancel.Enabled = true; + lvLines.Enabled = true; } - //Close(); + + lvLines.SelectedItems.Clear(); + } + private void textBox1_Enter(object sender, EventArgs e) + { + textBox1.Text = ""; } private void btnCancel_Click(object sender, System.EventArgs e) { mf.curve.isOkToAddPoints = false; mf.curve.isCurveSet = false; + mf.curve.refList?.Clear(); + mf.curve.isCurveSet = false; mf.DisableYouTurnButtons(); mf.btnContourPriority.Enabled = false; //mf.curve.ResetCurveLine(); mf.curve.isCurveBtnOn = false; mf.btnCurve.Image = Properties.Resources.CurveOff; + if (mf.isAutoSteerBtnOn) mf.btnAutoSteer.PerformClick(); + if (mf.yt.isYouTurnBtnOn) mf.btnEnableAutoYouTurn.PerformClick(); + + mf.curve.numCurveLineSelected = 0; Close(); } private void btnListDelete_Click(object sender, EventArgs e) { - //get the directory and make sure it exists, create if not - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); - - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - filename = directoryName + "\\CurveLines.txt"; - - int count = lvLines.SelectedItems.Count; - if (count > 0) + if (lvLines.SelectedItems.Count > 0) { int num = lvLines.SelectedIndices[0]; - curveArr.RemoveAt(num); + mf.curve.curveArr.RemoveAt(num); lvLines.SelectedItems[0].Remove(); - } - using (StreamWriter writer = new StreamWriter(filename, false)) - { - try + + //everything changed, so make sure its right + mf.curve.numCurveLines = mf.curve.curveArr.Count; + if (mf.curve.numCurveLineSelected > mf.curve.numCurveLines) mf.curve.numCurveLineSelected = mf.curve.numCurveLines; + + //if there are no saved oned, empty out current curve line and turn off + if (mf.curve.numCurveLines == 0) { - writer.WriteLine("$CurveLines"); - for (int i = 0; i < curveArr.Count; i++) - { - //curveArrs[i].curveArr - - //write out the Name - writer.WriteLine(curveArr[i].Name); - - //write out the aveheading - writer.WriteLine(curveArr[i].aveHeading.ToString(CultureInfo.InvariantCulture)); - - //write out the points of ref line - writer.WriteLine(curveArr[i].curvePts.Count.ToString(CultureInfo.InvariantCulture)); - if (curveArr[i].curvePts.Count > 0) - { - for (int j = 0; j < curveArr[i].curvePts.Count; j++) - writer.WriteLine(Math.Round(curveArr[i].curvePts[j].easting, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(curveArr[i].curvePts[j].northing, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(curveArr[i].curvePts[j].heading, 5).ToString(CultureInfo.InvariantCulture)); - } - } + mf.curve.ResetCurveLine(); + if (mf.isAutoSteerBtnOn) mf.btnAutoSteer.PerformClick(); + if (mf.yt.isYouTurnBtnOn) mf.btnEnableAutoYouTurn.PerformClick(); } - catch (Exception er) - { - mf.WriteErrorLog("Saving Curve Line" + er.ToString()); - return; - } - } + mf.FileSaveCurveLines(); + } } private void btnListUse_Click(object sender, EventArgs e) { + mf.curve.moveDistance = 0; + int count = lvLines.SelectedItems.Count; if (count > 0) { - int aa = lvLines.SelectedIndices[0]; - - mf.curve.aveLineHeading = curveArr[aa].aveHeading; + int idx = lvLines.SelectedIndices[0]; + mf.curve.numCurveLineSelected = idx + 1; + mf.curve.aveLineHeading = mf.curve.curveArr[idx].aveHeading; mf.curve.refList?.Clear(); - - for (int i = 0; i < curveArr[aa].curvePts.Count; i++) + for (int i = 0; i < mf.curve.curveArr[idx].curvePts.Count; i++) { - mf.curve.refList.Add(curveArr[aa].curvePts[i]); + mf.curve.refList.Add(mf.curve.curveArr[idx].curvePts[i]); } + if (mf.curve.refList.Count < 3) { mf.btnCurve.PerformClick(); @@ -355,11 +368,9 @@ private void btnListUse_Click(object sender, EventArgs e) else { mf.curve.isCurveSet = true; - mf.EnableYouTurnButtons(); - mf.FileSaveCurveLine(); + //mf.EnableYouTurnButtons(); } - //can go back to Mainform without seeing ABLine form. - //DialogResult = DialogResult.Yes; + //can go back to Mainform without seeing form. Close(); } @@ -370,18 +381,6 @@ private void btnListUse_Click(object sender, EventArgs e) } } - private void BtnMulti_Click(object sender, EventArgs e) - { - if (this.Size.Width < 640) - { - ShowSavedPanel(true); - } - else - { - ShowSavedPanel(false); - } - } - private void btnPausePlay_Click(object sender, EventArgs e) { if (mf.curve.isOkToAddPoints) @@ -400,124 +399,35 @@ private void btnPausePlay_Click(object sender, EventArgs e) } } - - private void FormABCurve_LoadCurves() - { - //get the directory and make sure it exists, create if not - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); - - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - filename = directoryName + "\\CurveLines.txt"; - - if (!File.Exists(filename)) - { - using (StreamWriter writer = new StreamWriter(filename)) - { - writer.WriteLine("$CurveLines"); - } - } - - //get the file of previous AB Lines - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - if (!File.Exists(filename)) - { - mf.TimedMessageBox(2000, gStr.gsFileError, gStr.gsMissingABCurveFile); - } - else - { - using (StreamReader reader = new StreamReader(filename)) - { - try - { - ListViewItem itm; - string line; - int num = 0; - - //read header $CurveLine - line = reader.ReadLine(); - - while (!reader.EndOfStream) - { - curveArr.Add(new CurveLineSaved()); - - //read header $CurveLine - curveArr[num].Name = reader.ReadLine(); - // get the average heading - line = reader.ReadLine(); - curveArr[num].aveHeading = double.Parse(line, CultureInfo.InvariantCulture); - - line = reader.ReadLine(); - int numPoints = int.Parse(line); - - if (numPoints > 1) - { - itm = new ListViewItem(curveArr[num].Name); - lvLines.Items.Add(itm); - - curveArr[num].curvePts?.Clear(); - - for (int i = 0; i < numPoints; i++) - { - line = reader.ReadLine(); - string[] words = line.Split(','); - vec3 vecPt = new vec3(double.Parse(words[0], CultureInfo.InvariantCulture), - double.Parse(words[1], CultureInfo.InvariantCulture), - double.Parse(words[2], CultureInfo.InvariantCulture)); - curveArr[num].curvePts.Add(vecPt); - } - num++; - } - else - { - if (curveArr.Count > 0) - { - curveArr.RemoveAt(num); - } - } - } - } - catch (Exception er) - { - var form = new FormTimedMessage(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(); - mf.WriteErrorLog("Load Curve Line" + er.ToString()); - } - } - - // go to bottom of list - if there is a bottom - if (lvLines.Items.Count > 0) lvLines.Items[lvLines.Items.Count - 1].EnsureVisible(); - } - } - private void ShowSavedPanel(bool showPanel) { if (showPanel) { - this.Size = new System.Drawing.Size(650, 440); + this.Size = new System.Drawing.Size(597, 415); btnAddToFile.Visible = true; + btnAddAndGo.Visible = true; btnListDelete.Visible = true; btnListUse.Visible = true; lblEnterCurveName.Visible = true; textBox1.Visible = true; lvLines.Visible = true; - btnMulti.Text = gStr.gsHide; - btnMulti.Image = Properties.Resources.ArrowRight; + btnCancel.Visible = true; + btnNewCurve.Visible = true; + btnPausePlay.Visible = false; } else { - this.Size = new System.Drawing.Size(280, 440); + this.Size = new System.Drawing.Size(232, 350); btnAddToFile.Visible = false; + btnAddAndGo.Visible = false; btnListDelete.Visible = false; btnListUse.Visible = false; lblEnterCurveName.Visible = false; textBox1.Visible = false; lvLines.Visible = false; - btnMulti.Text = gStr.gsShow; - btnMulti.Image = Properties.Resources.ArrowLeft; + btnCancel.Visible = false; + btnNewCurve.Visible = false; + btnPausePlay.Visible = false; } } @@ -535,12 +445,92 @@ private void Timer1_Tick(object sender, EventArgs e) btnListUse.Enabled = false; } } - } - public class CurveLineSaved - { - public List curvePts = new List(); - public double aveHeading = 3; - public string Name = "aa"; + private string FindDirection(double heading) + { + if (heading < 0) heading += glm.twoPI; + + heading = glm.toDegrees(heading); + + if (heading > 337.5 || heading < 22.5) + { + return " North "; + } + if (heading > 22.5 && heading < 67.5) + { + return " N_East "; + } + if (heading > 67.5 && heading < 111.5) + { + return " East "; + } + if (heading > 111.5 && heading < 157.5) + { + return " S_East "; + } + if (heading > 157.5 && heading < 202.5) + { + return " South "; + } + if (heading > 202.5 && heading < 247.5) + { + return " S_West "; + } + if (heading > 247.5 && heading < 292.5) + { + return "West"; + } + if (heading > 292.5 && heading < 337.5) + { + return " N_West "; + } + return " Lost "; + } + + private void FormABCurve_FormClosing(object sender, FormClosingEventArgs e) + { + if (this.Width < 300) e.Cancel = true; + } + + private void lvLines_SelectedIndexChanged(object sender, EventArgs e) + { + mf.curve.moveDistance = 0; + + int count = lvLines.SelectedItems.Count; + + if (count > 0) + { + int idx = lvLines.SelectedIndices[0]; + mf.curve.numCurveLineSelected = idx + 1; + mf.curve.aveLineHeading = mf.curve.curveArr[idx].aveHeading; + + mf.curve.refList?.Clear(); + for (int i = 0; i < mf.curve.curveArr[idx].curvePts.Count; i++) + { + mf.curve.refList.Add(mf.curve.curveArr[idx].curvePts[i]); + } + + if (mf.curve.refList.Count < 3) + { + mf.btnCurve.PerformClick(); + mf.curve.ResetCurveLine(); + //mf.DisableYouTurnButtons(); + } + else + { + mf.curve.isCurveSet = true; + //mf.EnableYouTurnButtons(); + } + //can go back to Mainform without seeing form. + } + + //no item selected + else + { + return; + } + + } + } } \ No newline at end of file diff --git a/SourceCode/GPS/Forms/FormABDraw.cs b/SourceCode/GPS/Forms/FormABDraw.cs index da9ff1228..4725140f7 100644 --- a/SourceCode/GPS/Forms/FormABDraw.cs +++ b/SourceCode/GPS/Forms/FormABDraw.cs @@ -14,18 +14,12 @@ public partial class FormABDraw : Form //access to the main GPS form and all its variables private readonly FormGPS mf = null; - public List curveArr = new List(); - - public List lineArr = new List(); - private double maxFieldX, maxFieldY, minFieldX, minFieldY, fieldCenterX, fieldCenterY, maxFieldDistance; private Point fixPt; private bool isA = true, isMakingAB = false, isMakingCurve = false; public double low = 0, high = 1; - private int A, B, C, D, E, start = 99999, end = 99999; - - private int numABLines = 0, numCurves = 0, numABSelected = 0, numCurveSelected = 0; + private int A, B, C, D, E, start = 99999, end = 99999; //list of coordinates of boundary line public List turnLine = new List(); @@ -34,21 +28,21 @@ public partial class FormABDraw : Form private void FixLabelsCurve() { - lblNumCu.Text = numCurves.ToString(); - lblCurveSelected.Text = numCurveSelected.ToString(); + lblNumCu.Text = mf.curve.numCurveLines.ToString(); + lblCurveSelected.Text = mf.curve.numCurveLineSelected.ToString(); - if (numCurveSelected > 0) - lblCurveName.Text = curveArr[numCurveSelected - 1].Name; + if (mf.curve.numCurveLineSelected > 0) + lblCurveName.Text = mf.curve.curveArr[mf.curve.numCurveLineSelected - 1].Name; else lblCurveName.Text = "***"; } private void FixLabelsABLine() { - lblNumAB.Text = numABLines.ToString(); - lblABSelected.Text = numABSelected.ToString(); + lblNumAB.Text = mf.ABLine.numABLines.ToString(); + lblABSelected.Text = mf.ABLine.numABLineSelected.ToString(); - if (numABSelected > 0) lblABLineName.Text = lineArr[numABSelected - 1].Name; + if (mf.ABLine.numABLineSelected > 0) lblABLineName.Text = mf.ABLine.lineArr[mf.ABLine.numABLineSelected - 1].Name; else lblABLineName.Text = "***"; } @@ -64,7 +58,7 @@ private string FindDirection(double heading) } if (heading > 22.5 && heading < 67.5) { - return " NW "; + return " N_East "; } if (heading > 67.5 && heading < 111.5) { @@ -72,7 +66,7 @@ private string FindDirection(double heading) } if (heading > 111.5 && heading < 157.5) { - return " SE "; + return " S_East "; } if (heading > 157.5 && heading < 202.5) { @@ -80,7 +74,7 @@ private string FindDirection(double heading) } if (heading > 202.5 && heading < 247.5) { - return " SW "; + return " S_West "; } if (heading > 247.5 && heading < 292.5) { @@ -88,21 +82,21 @@ private string FindDirection(double heading) } if (heading > 292.5 && heading < 337.5) { - return " NW "; + return " N_West "; } return " Lost "; } private void btnSelectCurve_Click(object sender, EventArgs e) { - if (numCurves > 0) + if (mf.curve.numCurveLines > 0) { - numCurveSelected++; - if (numCurveSelected > numCurves) numCurveSelected = 1; + mf.curve.numCurveLineSelected++; + if (mf.curve.numCurveLineSelected > mf.curve.numCurveLines) mf.curve.numCurveLineSelected = 1; } else { - numCurveSelected = 0; + mf.curve.numCurveLineSelected = 0; } FixLabelsCurve(); @@ -110,14 +104,14 @@ private void btnSelectCurve_Click(object sender, EventArgs e) private void btnSelectABLine_Click(object sender, EventArgs e) { - if (numABLines > 0) + if (mf.ABLine.numABLines > 0) { - numABSelected++; - if (numABSelected > numABLines) numABSelected = 1; + mf.ABLine.numABLineSelected++; + if (mf.ABLine.numABLineSelected > mf.ABLine.numABLines) mf.ABLine.numABLineSelected = 1; } else { - numABSelected = 0; + mf.ABLine.numABLineSelected = 0; } FixLabelsABLine(); @@ -132,8 +126,6 @@ private void btnCancelTouch_Click(object sender, EventArgs e) isA = true; start = 99999; end = 99999; - LoadLines(); - LoadCurves(); btnCancelTouch.Enabled = false; } @@ -146,112 +138,32 @@ private void nudDistance_Enter(object sender, EventArgs e) private void btnDeleteCurve_Click(object sender, EventArgs e) { - if (curveArr.Count > 0 && numCurveSelected > 0) + if (mf.curve.curveArr.Count > 0 && mf.curve.numCurveLineSelected > 0) { - curveArr.RemoveAt(numCurveSelected - 1); - numCurves--; - - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); - - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - string filename = directoryName + "\\CurveLines.txt"; + mf.curve.curveArr.RemoveAt(mf.curve.numCurveLineSelected - 1); + mf.curve.numCurveLines--; - using (StreamWriter writer = new StreamWriter(filename, false)) - { - try - { - if (curveArr.Count > 0) - { - writer.WriteLine("$CurveLines"); - - for (int i = 0; i < curveArr.Count; i++) - { - //write out the Name - writer.WriteLine(curveArr[i].Name); - - //write out the aveheading - writer.WriteLine(curveArr[i].aveHeading.ToString(CultureInfo.InvariantCulture)); - - //write out the points of ref line - writer.WriteLine(curveArr[i].curvePts.Count.ToString(CultureInfo.InvariantCulture)); - if (curveArr[i].curvePts.Count > 0) - { - for (int j = 0; j < curveArr[i].curvePts.Count; j++) - writer.WriteLine(Math.Round(curveArr[i].curvePts[j].easting, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(curveArr[i].curvePts[j].northing, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(curveArr[i].curvePts[j].heading, 5).ToString(CultureInfo.InvariantCulture)); - } - } - } - else - { - writer.WriteLine("$CurveLines"); - } - } - catch (Exception er) - { - mf.WriteErrorLog("Saving Curve Line" + er.ToString()); - - return; - } - } } - if (numCurves > 0) numCurveSelected = 1; - else numCurveSelected = 0; + if (mf.curve.numCurveLines > 0) mf.curve.numCurveLineSelected = 1; + else mf.curve.numCurveLineSelected = 0; FixLabelsCurve(); } private void btnDeleteABLine_Click(object sender, EventArgs e) { - if (lineArr.Count > 0 && numABSelected > 0) + if (mf.ABLine.lineArr.Count > 0 && mf.ABLine.numABLineSelected > 0) { - lineArr.RemoveAt(numABSelected - 1); - numABLines--; - numABSelected--; - - //make sure at least a global blank AB Line file exists - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); - - //get the file of previous AB Lines - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - string filename = directoryName + "\\ABLines.txt"; - - using (StreamWriter writer = new StreamWriter(filename, false)) - { - if (numABLines > 0) - { - for (int i = 0; i < numABLines; i++) - { - foreach (var item in lineArr) - { - //make it culture invariant - string line = item.Name - + ',' + (Math.Round(glm.toDegrees(item.heading), 8)).ToString(CultureInfo.InvariantCulture) - + ',' + (Math.Round(item.origin.easting, 3)).ToString(CultureInfo.InvariantCulture) - + ',' + (Math.Round(item.origin.northing, 3)).ToString(CultureInfo.InvariantCulture); - - //write out to file - writer.WriteLine(line); - } - } - } - } + mf.ABLine.lineArr.RemoveAt(mf.ABLine.numABLineSelected - 1); + mf.ABLine.numABLines--; + mf.ABLine.numABLineSelected--; } - if (numABLines > 0) numABSelected = 1; - else numABSelected = 0; + if (mf.ABLine.numABLines > 0) mf.ABLine.numABLineSelected = 1; + else mf.ABLine.numABLineSelected = 0; FixLabelsABLine(); - - //LoadLines(); } public vec3 pint = new vec3(0.0, 1.0, 0.0); @@ -268,7 +180,6 @@ public FormABDraw(Form callingForm) label5.Text = gStr.gsToolWidth; nudDistance.Controls[0].Enabled = false; - } private void FormABDraw_Load(object sender, EventArgs e) @@ -290,11 +201,9 @@ private void FormABDraw_Load(object sender, EventArgs e) arr[i].heading = mf.bnd.bndArr[0].bndLine[i - cnt].heading; } - curveArr?.Clear(); - lineArr?.Clear(); - LoadCurves(); - LoadLines(); nudDistance.Value = (decimal)(mf.vehicle.toolWidth * 100); + FixLabelsABLine(); + FixLabelsCurve(); } private void oglSelf_MouseDown(object sender, MouseEventArgs e) @@ -412,180 +321,11 @@ private void oglSelf_MouseDown(object sender, MouseEventArgs e) } } - private void LoadLines() - { - lineArr?.Clear(); - numABLines = 0; - - //make sure at least a global blank AB Line file exists - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); - - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - string filename = directoryName + "\\ABLines.txt"; - - if (!File.Exists(filename)) - { - using (StreamWriter writer = new StreamWriter(filename)) - { - } - } - - if (!File.Exists(filename)) - { - mf.TimedMessageBox(2000, gStr.gsFileError, gStr.gsMissingABLinesFile); - } - else - { - using (StreamReader reader = new StreamReader(filename)) - { - try - { - string line; - numABLines = 0; - - //read all the lines - for (int i = 0; !reader.EndOfStream; i++) - { - - line = reader.ReadLine(); - string[] words = line.Split(','); - - if (words.Length != 4) break; - - lineArr.Add(new ABLinePick()); - - lineArr[i].Name = words[0]; - - - lineArr[i].heading = glm.toRadians(double.Parse(words[1], CultureInfo.InvariantCulture)); - lineArr[i].origin.easting = double.Parse(words[2], CultureInfo.InvariantCulture); - lineArr[i].origin.northing = double.Parse(words[3], CultureInfo.InvariantCulture); - - lineArr[i].ref1.easting = lineArr[i].origin.easting - (Math.Sin(lineArr[i].heading) * 2000.0); - lineArr[i].ref1.northing = lineArr[i].origin.northing - (Math.Cos(lineArr[i].heading) * 2000.0); - - lineArr[i].ref2.easting = lineArr[i].origin.easting + (Math.Sin(lineArr[i].heading) * 2000.0); - lineArr[i].ref2.northing = lineArr[i].origin.northing + (Math.Cos(lineArr[i].heading) * 2000.0); - numABLines++; - } - } - catch (Exception er) - { - var form = new FormTimedMessage(2000, gStr.gsABLineFileIsCorrupt, "Please delete it!!!"); - form.Show(); - mf.WriteErrorLog("FieldOpen, Loading ABLine, Corrupt ABLine File" + er); - } - } - } - - if (numABLines > 0) numABSelected = 1; - else numABSelected = 0; - - FixLabelsABLine(); } - - private void LoadCurves() - { - curveArr?.Clear(); - numCurves = 0; - - //get the directory and make sure it exists, create if not - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); - - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - string filename = directoryName + "\\CurveLines.txt"; - - if (!File.Exists(filename)) - { - using (StreamWriter writer = new StreamWriter(filename)) - { - writer.WriteLine("$CurveLines"); - } - } - - //get the file of previous AB Lines - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - if (!File.Exists(filename)) - { - mf.TimedMessageBox(2000, gStr.gsFileError, gStr.gsMissingABCurveFile); - } - else - { - using (StreamReader reader = new StreamReader(filename)) - { - try - { - string line; - numCurves = 0; - - //read header $CurveLine - line = reader.ReadLine(); - - while (!reader.EndOfStream) - { - curveArr.Add(new CurveLinePick()); - - //read header $CurveLine - curveArr[numCurves].Name = reader.ReadLine(); - // get the average heading - line = reader.ReadLine(); - curveArr[numCurves].aveHeading = double.Parse(line, CultureInfo.InvariantCulture); - - line = reader.ReadLine(); - int numPoints = int.Parse(line); - - if (numPoints > 1) - { - curveArr[numCurves].curvePts?.Clear(); - - for (int i = 0; i < numPoints; i++) - { - line = reader.ReadLine(); - string[] words = line.Split(','); - vec3 vecPt = new vec3(double.Parse(words[0], CultureInfo.InvariantCulture), - double.Parse(words[1], CultureInfo.InvariantCulture), - double.Parse(words[2], CultureInfo.InvariantCulture)); - curveArr[numCurves].curvePts.Add(vecPt); - } - numCurves++; - } - else - { - if (curveArr.Count > 0) - { - curveArr.RemoveAt(numCurves); - } - } - } - } - catch (Exception er) - { - var form = new FormTimedMessage(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(); - mf.WriteErrorLog("Load Curve Line" + er.ToString()); - } - } - } - - if (numCurves > 0) numCurveSelected = 1; - else numCurveSelected = 0; - - FixLabelsCurve(); - } - private void BtnMakeCurve_Click(object sender, EventArgs e) { btnCancelTouch.Enabled = false; mf.curve.refList?.Clear(); - vec3 chk = new vec3(arr[start]); for (int i = start; i < end; i++) @@ -619,6 +359,7 @@ private void BtnMakeCurve_Click(object sender, EventArgs e) //calculate average heading of line double x = 0, y = 0; mf.curve.isCurveSet = true; + foreach (var pt in mf.curve.refList) { x += Math.Cos(pt.heading); @@ -627,6 +368,7 @@ private void BtnMakeCurve_Click(object sender, EventArgs e) x /= mf.curve.refList.Count; y /= mf.curve.refList.Count; mf.curve.aveLineHeading = Math.Atan2(y, x); + if (mf.curve.aveLineHeading < 0) mf.curve.aveLineHeading += glm.twoPI; //build the tail extensions mf.curve.AddFirstLastPoints(); @@ -638,14 +380,15 @@ private void BtnMakeCurve_Click(object sender, EventArgs e) double offset = ((double)nudDistance.Value) / 200.0; //calculate the heading 90 degrees to ref ABLine heading - double headingAt90 = glm.PIBy2 + mf.curve.aveLineHeading; + double headingAt90 = mf.curve.aveLineHeading + glm.PIBy2; chk.easting = (Math.Sin(headingAt90) * Math.Abs(offset)) + chk.easting; chk.northing = (Math.Cos(headingAt90) * Math.Abs(offset)) + chk.northing; - if (!mf.bnd.bndArr[0].IsPointInsideBoundary(chk)) headingAt90 *=-1; + if (!mf.bnd.bndArr[0].IsPointInsideBoundary(chk)) headingAt90 = mf.curve.aveLineHeading - glm.PIBy2; cnt = mf.curve.refList.Count; + vec3[] arrMove = new vec3[cnt]; mf.curve.refList.CopyTo(arrMove); mf.curve.refList.Clear(); @@ -657,70 +400,35 @@ private void BtnMakeCurve_Click(object sender, EventArgs e) mf.curve.refList.Add(arrMove[i]); } - mf.FileSaveCurveLine(); + mf.curve.curveArr.Add(new CCurveLines()); + mf.curve.numCurveLines = mf.curve.curveArr.Count; + mf.curve.numCurveLineSelected = mf.curve.numCurveLines; - btnMakeABLine.Enabled = false; - btnMakeCurve.Enabled = false; - - isMakingCurve = true; - isMakingAB = false; + //array number is 1 less since it starts at zero + int idx = mf.curve.curveArr.Count - 1; - //get the directory and make sure it exists, create if not - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); + //create a name + mf.curve.curveArr[idx].Name = (Math.Round(glm.toDegrees(mf.curve.aveLineHeading), 1)).ToString(CultureInfo.InvariantCulture) + + "\u00B0" + FindDirection(mf.curve.aveLineHeading) + DateTime.Now.ToString("hh:mm:ss", CultureInfo.InvariantCulture); - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } + mf.curve.curveArr[idx].aveHeading = mf.curve.aveLineHeading; - string filename = directoryName + "\\CurveLines.txt"; - - if (!File.Exists(filename)) + //write out the Curve Points + foreach (var item in mf.curve.refList) { - using (StreamWriter writer = new StreamWriter(filename)) - { - writer.WriteLine("$CurveLines"); - } + mf.curve.curveArr[idx].curvePts.Add(item); } - //use Streamwriter to append to curveLines file - using (StreamWriter writer = new StreamWriter(filename, true)) - { - try - { - //write out the ABLine - writer.WriteLine(mf.curve.refList.Count.ToString() + "_Pts " - + DateTime.Now.ToString("mm_ss", CultureInfo.InvariantCulture)); - - //write out the aveheading - writer.WriteLine(mf.curve.aveLineHeading.ToString(CultureInfo.InvariantCulture)); - - //write out the points of ref line - writer.WriteLine(mf.curve.refList.Count.ToString(CultureInfo.InvariantCulture)); - - for (int j = 0; j < mf.curve.refList.Count; j++) - { - writer.WriteLine(Math.Round(mf.curve.refList[j].easting, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(mf.curve.refList[j].northing, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(mf.curve.refList[j].heading, 5).ToString(CultureInfo.InvariantCulture)); - } - } - catch (Exception er) - { - Console.WriteLine(er.Message + "\n Cannot write to file."); - mf.WriteErrorLog("Saving Curve Line" + er.ToString()); - return; - } - } + mf.FileSaveCurveLines(); //update the arrays - LoadCurves(); - numCurveSelected = numCurves; - - FixLabelsCurve(); - + btnMakeABLine.Enabled = false; + btnMakeCurve.Enabled = false; isMakingCurve = false; isMakingAB = false; start = 99999; end = 99999; + + FixLabelsCurve(); } else { @@ -742,76 +450,43 @@ private void BtnMakeABLine_Click(object sender, EventArgs e) double headingCalc = abHead + glm.PIBy2; - lineArr.Add(new ABLinePick()); - numABLines++; - numABSelected = numABLines; + mf.ABLine.lineArr.Add(new CABLines()); + mf.ABLine.numABLines = mf.ABLine.lineArr.Count; + mf.ABLine.numABLineSelected = mf.ABLine.numABLines; - int idx = numABLines - 1; + int idx = mf.ABLine.numABLines - 1; - lineArr[idx].heading = abHead; + mf.ABLine.lineArr[idx].heading = abHead; //calculate the new points for the reference line and points - lineArr[idx].origin.easting = (Math.Sin(headingCalc) * Math.Abs(offset)) + arr[A].easting; - lineArr[idx].origin.northing = (Math.Cos(headingCalc) * Math.Abs(offset)) + arr[A].northing; + mf.ABLine.lineArr[idx].origin.easting = (Math.Sin(headingCalc) * Math.Abs(offset)) + arr[A].easting; + mf.ABLine.lineArr[idx].origin.northing = (Math.Cos(headingCalc) * Math.Abs(offset)) + arr[A].northing; - if (!mf.bnd.bndArr[0].IsPointInsideBoundary(lineArr[idx].origin)) + if (!mf.bnd.bndArr[0].IsPointInsideBoundary(mf.ABLine.lineArr[idx].origin)) { headingCalc = abHead - glm.PIBy2; - lineArr[idx].origin.easting = (Math.Sin(headingCalc) * Math.Abs(offset)) + arr[A].easting; - lineArr[idx].origin.northing = (Math.Cos(headingCalc) * Math.Abs(offset)) + arr[A].northing; + mf.ABLine.lineArr[idx].origin.easting = (Math.Sin(headingCalc) * Math.Abs(offset)) + arr[A].easting; + mf.ABLine.lineArr[idx].origin.northing = (Math.Cos(headingCalc) * Math.Abs(offset)) + arr[A].northing; } //sin x cos z for endpoints, opposite for additional lines - lineArr[idx].ref1.easting = lineArr[idx].origin.easting - (Math.Sin(lineArr[idx].heading) * 2000.0); - lineArr[idx].ref1.northing = lineArr[idx].origin.northing - (Math.Cos(lineArr[idx].heading) * 2000.0); - lineArr[idx].ref2.easting = lineArr[idx].origin.easting + (Math.Sin(lineArr[idx].heading) * 2000.0); - lineArr[idx].ref2.northing = lineArr[idx].origin.northing + (Math.Cos(lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref1.easting = mf.ABLine.lineArr[idx].origin.easting - (Math.Sin(mf.ABLine.lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref1.northing = mf.ABLine.lineArr[idx].origin.northing - (Math.Cos(mf.ABLine.lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref2.easting = mf.ABLine.lineArr[idx].origin.easting + (Math.Sin(mf.ABLine.lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref2.northing = mf.ABLine.lineArr[idx].origin.northing + (Math.Cos(mf.ABLine.lineArr[idx].heading) * 2000.0); //create a name - lineArr[idx].Name = (Math.Round(glm.toDegrees(lineArr[idx].heading), 1)).ToString(CultureInfo.InvariantCulture) - + FindDirection(lineArr[idx].heading) + DateTime.Now.ToString("mm_ss", CultureInfo.InvariantCulture); + mf.ABLine.lineArr[idx].Name = (Math.Round(glm.toDegrees(mf.ABLine.lineArr[idx].heading), 1)).ToString(CultureInfo.InvariantCulture) + + "\u00B0" + FindDirection(mf.ABLine.lineArr[idx].heading) + DateTime.Now.ToString("hh:mm:ss", CultureInfo.InvariantCulture); //clean up gui btnMakeABLine.Enabled = false; btnMakeCurve.Enabled = false; - isMakingCurve = false; - isMakingAB = true; - - //make sure at least a global blank AB Line file exists - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); - - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - string filename = directoryName + "\\ABLines.txt"; - - using (StreamWriter writer = new StreamWriter(filename, true)) - { - try - { - //make it culture invariant - string line = lineArr[idx].Name.Trim() - + ',' + (Math.Round(glm.toDegrees(lineArr[idx].heading), 8)).ToString(CultureInfo.InvariantCulture) - + ',' + (Math.Round(lineArr[idx].origin.easting, 3)).ToString(CultureInfo.InvariantCulture) - + ',' + (Math.Round(lineArr[idx].origin.northing, 3)).ToString(CultureInfo.InvariantCulture); - - //write out to file - writer.WriteLine(line); - } - catch (Exception er) - { - Console.WriteLine(er.Message + "\n Cannot write to file."); - mf.WriteErrorLog("Saving ABLines Draw append" + er.ToString()); - return; - } - } isMakingCurve = false; isMakingAB = false; + start = 99999; end = 99999; FixLabelsABLine(); - - start = 99999; end = 99999; } private void oglSelf_Paint(object sender, PaintEventArgs e) @@ -838,38 +513,9 @@ private void oglSelf_Paint(object sender, PaintEventArgs e) if (start != 99999 || end != 99999) DrawABTouchLine(); //draw the actual built lines - if (start == 99999 && end == 99999) DrawBuiltLines(); - { - - ////draw the ABLine - //if (mf.ABLine.isABLineLoaded) - //{ - // //Draw reference AB line ref - // GL.LineWidth(2); - // GL.Enable(EnableCap.LineStipple); - // GL.LineStipple(1, 0x00F0); - // GL.Begin(PrimitiveType.Lines); - // GL.Color3(0.9f, 0.915f, 0.17f); - // GL.Vertex3(mf.ABLine.refABLineP1.easting, mf.ABLine.refABLineP1.northing, 0); - // GL.Color3(0.92f, 0.95f, 0.17f); - // GL.Vertex3(mf.ABLine.refABLineP2.easting, mf.ABLine.refABLineP2.northing, 0); - // GL.End(); - // GL.Disable(EnableCap.LineStipple); - - //} - - ////if (mf.curve.isCurveSet) - //{ - // int ptCount = mf.curve.refList.Count; - // if (ptCount > 0) - // { - // GL.LineWidth(2); - // GL.Color3(0.30f, 0.7692f, 0.760f); - // GL.Begin(PrimitiveType.LineStrip); - // for (int h = 0; h < ptCount; h++) GL.Vertex3(mf.curve.refList[h].easting, mf.curve.refList[h].northing, 0); - // GL.End(); - // } - //} + if (start == 99999 && end == 99999) + { + DrawBuiltLines(); } GL.Flush(); @@ -878,7 +524,7 @@ private void oglSelf_Paint(object sender, PaintEventArgs e) private void DrawBuiltLines() { - int numLines = lineArr.Count; + int numLines = mf.ABLine.lineArr.Count; if (numLines > 0) { @@ -891,7 +537,7 @@ private void DrawBuiltLines() GL.LineWidth(2); GL.Begin(PrimitiveType.Lines); - foreach (var item in lineArr) + foreach (var item in mf.ABLine.lineArr) { GL.Vertex3(item.ref1.easting, item.ref1.northing, 0); GL.Vertex3(item.ref2.easting, item.ref2.northing, 0); @@ -901,23 +547,23 @@ private void DrawBuiltLines() GL.Disable(EnableCap.LineStipple); - if (numABSelected > 0) + if (mf.ABLine.numABLineSelected > 0) { GL.Color3(1.0f, 0.0f, 0.0f); GL.LineWidth(4); GL.Begin(PrimitiveType.Lines); - foreach (var item in lineArr) + foreach (var item in mf.ABLine.lineArr) { - GL.Vertex3(lineArr[numABSelected - 1].ref1.easting, lineArr[numABSelected - 1].ref1.northing, 0); - GL.Vertex3(lineArr[numABSelected - 1].ref2.easting, lineArr[numABSelected - 1].ref2.northing, 0); + GL.Vertex3(mf.ABLine.lineArr[mf.ABLine.numABLineSelected - 1].ref1.easting, mf.ABLine.lineArr[mf.ABLine.numABLineSelected - 1].ref1.northing, 0); + GL.Vertex3(mf.ABLine.lineArr[mf.ABLine.numABLineSelected - 1].ref2.easting, mf.ABLine.lineArr[mf.ABLine.numABLineSelected - 1].ref2.northing, 0); } GL.End(); } } - int numCurv = curveArr.Count; + int numCurv = mf.curve.curveArr.Count; if (numCurv > 0) { @@ -929,7 +575,7 @@ private void DrawBuiltLines() GL.LineWidth(2); GL.Color3(0.0f, 1.0f, 0.0f); GL.Begin(PrimitiveType.LineStrip); - foreach (var item in curveArr[i].curvePts) + foreach (var item in mf.curve.curveArr[i].curvePts) { GL.Vertex3(item.easting, item.northing, 0); } @@ -938,18 +584,17 @@ private void DrawBuiltLines() GL.Disable(EnableCap.LineStipple); - if (numCurveSelected > 0) + if (mf.curve.numCurveLineSelected > 0) { GL.LineWidth(4); GL.Color3(0.0f, 1.0f, 0.0f); GL.Begin(PrimitiveType.LineStrip); - foreach (var item in curveArr[numCurveSelected - 1].curvePts) + foreach (var item in mf.curve.curveArr[mf.curve.numCurveLineSelected - 1].curvePts) { GL.Vertex3(item.easting, item.northing, 0); } GL.End(); } - } } @@ -996,43 +641,75 @@ private void timer1_Tick(object sender, EventArgs e) private void btnExit_Click(object sender, EventArgs e) { - if (numABSelected > 0) + if (mf.ABLine.numABLineSelected > 0 ) { - mf.ABLine.refPoint1 = lineArr[numABSelected - 1].origin; - //mf.ABLine.refPoint2 = lineArr[numABSelected - 1].ref2; - mf.ABLine.abHeading = lineArr[numABSelected - 1].heading; + mf.ABLine.refPoint1 = mf.ABLine.lineArr[mf.ABLine.numABLineSelected - 1].origin; + mf.ABLine.abHeading = mf.ABLine.lineArr[mf.ABLine.numABLineSelected - 1].heading; mf.ABLine.SetABLineByHeading(); - mf.FileSaveABLine(); - mf.ABLine.isABLineSet = false; - mf.ABLine.isABLineLoaded = true; + + if (mf.ABLine.isBtnABLineOn) + { + mf.ABLine.isABLineSet = true; + mf.ABLine.isABLineLoaded = true; + } + else + { + mf.ABLine.isABLineSet = false; + } } else { + mf.ABLine.DeleteAB(); mf.ABLine.isABLineSet = false; mf.ABLine.isABLineLoaded = false; } + mf.FileSaveABLines(); + //curve - if (numCurveSelected > 0) + if (mf.curve.numCurveLineSelected > 0) + { + int idx = mf.curve.numCurveLineSelected - 1; + mf.curve.aveLineHeading = mf.curve.curveArr[idx].aveHeading; + mf.curve.refList?.Clear(); + foreach (vec3 v in mf.curve.curveArr[idx].curvePts) mf.curve.refList.Add(v); + mf.curve.isCurveSet = true; + } + else { - int aa = numCurveSelected - 1; - mf.curve.aveLineHeading = curveArr[aa].aveHeading; - mf.curve.refList?.Clear(); + mf.curve.isCurveSet = false; + } + + mf.FileSaveCurveLines(); - for (int i = 0; i < curveArr[aa].curvePts.Count; i++) + if (mf.ABLine.isBtnABLineOn) + { + if (mf.ABLine.numABLineSelected == 0) { - mf.curve.refList.Add(curveArr[aa].curvePts[i]); + if (mf.isAutoSteerBtnOn) mf.btnAutoSteer.PerformClick(); + if (mf.yt.isYouTurnBtnOn) mf.btnEnableAutoYouTurn.PerformClick(); + mf.ABLine.isABLineSet = false; + mf.ABLine.isABLineLoaded = false; + mf.btnABLine.Image = Properties.Resources.ABLineOff; + mf.ABLine.isBtnABLineOn = false; } - mf.curve.isCurveSet = true; - mf.FileSaveCurveLine(); } - else + + if (mf.curve.isCurveBtnOn) { - mf.curve.isCurveSet = false; - mf.curve.refList?.Clear(); + if (mf.curve.numCurveLineSelected == 0) + { + if (mf.isAutoSteerBtnOn) mf.btnAutoSteer.PerformClick(); + if (mf.yt.isYouTurnBtnOn) mf.btnEnableAutoYouTurn.PerformClick(); + mf.curve.isCurveSet = false; + mf.curve.refList?.Clear(); + mf.curve.isCurveBtnOn = false; + mf.btnCurve.Image = Properties.Resources.CurveOff; + } } + Close(); } @@ -1140,20 +817,4 @@ private void CalculateMinMax() } } } - - public class CurveLinePick - { - public List curvePts = new List(); - public double aveHeading = 3; - public string Name = "aa"; - } - - public class ABLinePick - { - public vec2 ref1 = new vec2(); - public vec2 ref2 = new vec2(); - public vec2 origin = new vec2(); - public double heading = 0; - public string Name = "aa"; - } } \ No newline at end of file diff --git a/SourceCode/GPS/Forms/FormABLine.Designer.cs b/SourceCode/GPS/Forms/FormABLine.Designer.cs index 3d3ecaa53..b6776427a 100644 --- a/SourceCode/GPS/Forms/FormABLine.Designer.cs +++ b/SourceCode/GPS/Forms/FormABLine.Designer.cs @@ -36,27 +36,22 @@ private void InitializeComponent() this.nudBasedOnPass = new System.Windows.Forms.NumericUpDown(); this.nudTramRepeats = new System.Windows.Forms.NumericUpDown(); this.label3 = new System.Windows.Forms.Label(); - this.btnTurnOffAB = new System.Windows.Forms.Button(); - this.btnBPoint = new System.Windows.Forms.Button(); - this.btnAPoint = new System.Windows.Forms.Button(); - this.btnABLineOk = new System.Windows.Forms.Button(); - this.btnAddToFile = new System.Windows.Forms.Button(); this.tboxHeading = new System.Windows.Forms.TextBox(); - this.lvLines = new System.Windows.Forms.ListView(); - this.chName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.chAngle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.chEasting = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.chNorthing = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.btnListDelete = new System.Windows.Forms.Button(); - this.btnListUse = new System.Windows.Forms.Button(); - this.btnPlus90 = new System.Windows.Forms.Button(); this.btnDnABHeadingBy1 = new System.Windows.Forms.Button(); this.btnUpABHeadingBy1 = new System.Windows.Forms.Button(); - this.btnShow = new System.Windows.Forms.Button(); - this.btnNewABLine = new System.Windows.Forms.Button(); this.lblEnterName = new System.Windows.Forms.Label(); this.tboxABLineName = new System.Windows.Forms.TextBox(); - this.btnGetABForm = new System.Windows.Forms.Button(); + this.lvLines = new System.Windows.Forms.ListView(); + this.chField = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.label1 = new System.Windows.Forms.Label(); + this.btnAddAndGo = new System.Windows.Forms.Button(); + this.btnNewABLine = new System.Windows.Forms.Button(); + this.btnListUse = new System.Windows.Forms.Button(); + this.btnListDelete = new System.Windows.Forms.Button(); + this.btnAddToFile = new System.Windows.Forms.Button(); + this.btnTurnOffAB = new System.Windows.Forms.Button(); + this.btnBPoint = new System.Windows.Forms.Button(); + this.btnAPoint = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.nudBasedOnPass)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudTramRepeats)).BeginInit(); this.SuspendLayout(); @@ -64,7 +59,7 @@ private void InitializeComponent() // timer1 // this.timer1.Enabled = true; - this.timer1.Interval = 200; + this.timer1.Interval = 500; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // // lblFixHeading @@ -72,7 +67,7 @@ private void InitializeComponent() this.lblFixHeading.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lblFixHeading.AutoSize = true; this.lblFixHeading.Font = new System.Drawing.Font("Tahoma", 20.25F, System.Drawing.FontStyle.Bold); - this.lblFixHeading.Location = new System.Drawing.Point(541, 6); + this.lblFixHeading.Location = new System.Drawing.Point(379, 3); this.lblFixHeading.Name = "lblFixHeading"; this.lblFixHeading.Size = new System.Drawing.Size(32, 33); this.lblFixHeading.TabIndex = 64; @@ -83,7 +78,7 @@ private void InitializeComponent() this.lblKeepGoing.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lblKeepGoing.AutoSize = true; this.lblKeepGoing.Font = new System.Drawing.Font("Tahoma", 15.75F); - this.lblKeepGoing.Location = new System.Drawing.Point(711, 6); + this.lblKeepGoing.Location = new System.Drawing.Point(533, 6); this.lblKeepGoing.Name = "lblKeepGoing"; this.lblKeepGoing.Size = new System.Drawing.Size(22, 25); this.lblKeepGoing.TabIndex = 74; @@ -94,7 +89,7 @@ private void InitializeComponent() this.label2.Anchor = System.Windows.Forms.AnchorStyles.Top; this.label2.AutoSize = true; this.label2.Font = new System.Drawing.Font("Tahoma", 12F); - this.label2.Location = new System.Drawing.Point(162, 406); + this.label2.Location = new System.Drawing.Point(154, 385); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(64, 19); this.label2.TabIndex = 76; @@ -105,7 +100,7 @@ private void InitializeComponent() this.nudBasedOnPass.Anchor = System.Windows.Forms.AnchorStyles.Top; this.nudBasedOnPass.BackColor = System.Drawing.Color.MediumOrchid; this.nudBasedOnPass.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudBasedOnPass.Location = new System.Drawing.Point(69, 410); + this.nudBasedOnPass.Location = new System.Drawing.Point(70, 389); this.nudBasedOnPass.Minimum = new decimal(new int[] { 100, 0, @@ -121,7 +116,7 @@ private void InitializeComponent() this.nudTramRepeats.Anchor = System.Windows.Forms.AnchorStyles.Top; this.nudTramRepeats.BackColor = System.Drawing.Color.Lime; this.nudTramRepeats.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudTramRepeats.Location = new System.Drawing.Point(232, 410); + this.nudTramRepeats.Location = new System.Drawing.Point(224, 389); this.nudTramRepeats.Name = "nudTramRepeats"; this.nudTramRepeats.Size = new System.Drawing.Size(67, 52); this.nudTramRepeats.TabIndex = 75; @@ -132,189 +127,35 @@ private void InitializeComponent() this.label3.Anchor = System.Windows.Forms.AnchorStyles.Top; this.label3.AutoSize = true; this.label3.Font = new System.Drawing.Font("Tahoma", 12F); - this.label3.Location = new System.Drawing.Point(21, 406); + this.label3.Location = new System.Drawing.Point(-67, 406); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(42, 19); this.label3.TabIndex = 78; this.label3.Text = "Start"; // - // btnTurnOffAB - // - this.btnTurnOffAB.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnTurnOffAB.BackColor = System.Drawing.Color.Transparent; - this.btnTurnOffAB.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold); - this.btnTurnOffAB.ForeColor = System.Drawing.SystemColors.ControlText; - this.btnTurnOffAB.Image = global::AgOpenGPS.Properties.Resources.Cancel64; - this.btnTurnOffAB.Location = new System.Drawing.Point(509, 383); - this.btnTurnOffAB.Name = "btnTurnOffAB"; - this.btnTurnOffAB.Size = new System.Drawing.Size(100, 80); - this.btnTurnOffAB.TabIndex = 0; - this.btnTurnOffAB.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnTurnOffAB.UseVisualStyleBackColor = false; - this.btnTurnOffAB.Click += new System.EventHandler(this.btnTurnOffAB_Click); - // - // btnBPoint - // - this.btnBPoint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBPoint.Font = new System.Drawing.Font("Tahoma", 14.25F); - this.btnBPoint.Image = global::AgOpenGPS.Properties.Resources.LetterBBlue; - this.btnBPoint.Location = new System.Drawing.Point(664, 38); - this.btnBPoint.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); - this.btnBPoint.Name = "btnBPoint"; - this.btnBPoint.Size = new System.Drawing.Size(100, 80); - this.btnBPoint.TabIndex = 58; - this.btnBPoint.UseVisualStyleBackColor = true; - this.btnBPoint.Click += new System.EventHandler(this.btnBPoint_Click); - // - // btnAPoint - // - this.btnAPoint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnAPoint.Font = new System.Drawing.Font("Tahoma", 14.25F); - this.btnAPoint.Image = global::AgOpenGPS.Properties.Resources.LetterABlue; - this.btnAPoint.Location = new System.Drawing.Point(506, 38); - this.btnAPoint.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); - this.btnAPoint.Name = "btnAPoint"; - this.btnAPoint.Size = new System.Drawing.Size(100, 80); - this.btnAPoint.TabIndex = 57; - this.btnAPoint.UseVisualStyleBackColor = true; - this.btnAPoint.Click += new System.EventHandler(this.btnAPoint_Click); - // - // btnABLineOk - // - this.btnABLineOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnABLineOk.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.btnABLineOk.Image = global::AgOpenGPS.Properties.Resources.OK64; - this.btnABLineOk.Location = new System.Drawing.Point(642, 382); - this.btnABLineOk.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); - this.btnABLineOk.Name = "btnABLineOk"; - this.btnABLineOk.Size = new System.Drawing.Size(125, 80); - this.btnABLineOk.TabIndex = 62; - this.btnABLineOk.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnABLineOk.UseVisualStyleBackColor = true; - this.btnABLineOk.Click += new System.EventHandler(this.btnABLineOk_Click); - // - // btnAddToFile - // - this.btnAddToFile.BackColor = System.Drawing.Color.Transparent; - this.btnAddToFile.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold); - this.btnAddToFile.ForeColor = System.Drawing.SystemColors.ControlText; - this.btnAddToFile.Image = global::AgOpenGPS.Properties.Resources.FileNew; - this.btnAddToFile.ImageAlign = System.Drawing.ContentAlignment.TopCenter; - this.btnAddToFile.Location = new System.Drawing.Point(7, 17); - this.btnAddToFile.Name = "btnAddToFile"; - this.btnAddToFile.Size = new System.Drawing.Size(95, 88); - this.btnAddToFile.TabIndex = 82; - this.btnAddToFile.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnAddToFile.UseVisualStyleBackColor = false; - this.btnAddToFile.Click += new System.EventHandler(this.btnAddToFile_Click); - // // tboxHeading // this.tboxHeading.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.tboxHeading.BackColor = System.Drawing.Color.AliceBlue; this.tboxHeading.Font = new System.Drawing.Font("Tahoma", 21.75F); - this.tboxHeading.Location = new System.Drawing.Point(547, 135); + this.tboxHeading.Location = new System.Drawing.Point(379, 142); this.tboxHeading.MaxLength = 10; this.tboxHeading.Name = "tboxHeading"; - this.tboxHeading.Size = new System.Drawing.Size(176, 43); + this.tboxHeading.Size = new System.Drawing.Size(185, 43); this.tboxHeading.TabIndex = 83; this.tboxHeading.Text = "359.123456"; this.tboxHeading.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.tboxHeading.TextChanged += new System.EventHandler(this.tboxHeading_TextChanged); this.tboxHeading.Enter += new System.EventHandler(this.TboxHeading_Enter); // - // lvLines - // - this.lvLines.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lvLines.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.chName, - this.chAngle, - this.chEasting, - this.chNorthing}); - this.lvLines.Font = new System.Drawing.Font("Tahoma", 15.75F); - this.lvLines.FullRowSelect = true; - this.lvLines.GridLines = true; - this.lvLines.HideSelection = false; - this.lvLines.ImeMode = System.Windows.Forms.ImeMode.Off; - this.lvLines.Location = new System.Drawing.Point(113, 93); - this.lvLines.MultiSelect = false; - this.lvLines.Name = "lvLines"; - this.lvLines.Size = new System.Drawing.Size(359, 264); - this.lvLines.TabIndex = 84; - this.lvLines.UseCompatibleStateImageBehavior = false; - this.lvLines.View = System.Windows.Forms.View.Details; - // - // chName - // - this.chName.Text = "Name"; - this.chName.Width = 260; - // - // chAngle - // - this.chAngle.Text = "Angle"; - this.chAngle.Width = 100; - // - // chEasting - // - this.chEasting.Text = "X"; - this.chEasting.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.chEasting.Width = 100; - // - // chNorthing - // - this.chNorthing.Text = "Y"; - this.chNorthing.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.chNorthing.Width = 100; - // - // btnListDelete - // - this.btnListDelete.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold); - this.btnListDelete.Image = global::AgOpenGPS.Properties.Resources.FileDelete; - this.btnListDelete.ImageAlign = System.Drawing.ContentAlignment.TopCenter; - this.btnListDelete.Location = new System.Drawing.Point(7, 156); - this.btnListDelete.Name = "btnListDelete"; - this.btnListDelete.Size = new System.Drawing.Size(95, 93); - this.btnListDelete.TabIndex = 85; - this.btnListDelete.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnListDelete.UseVisualStyleBackColor = true; - this.btnListDelete.Click += new System.EventHandler(this.btnListDelete_Click); - // - // btnListUse - // - this.btnListUse.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold); - this.btnListUse.Image = global::AgOpenGPS.Properties.Resources.FileUse; - this.btnListUse.ImageAlign = System.Drawing.ContentAlignment.TopCenter; - this.btnListUse.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnListUse.Location = new System.Drawing.Point(7, 281); - this.btnListUse.Name = "btnListUse"; - this.btnListUse.Size = new System.Drawing.Size(95, 88); - this.btnListUse.TabIndex = 86; - this.btnListUse.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnListUse.UseVisualStyleBackColor = true; - this.btnListUse.Click += new System.EventHandler(this.btnListUse_Click); - // - // btnPlus90 - // - this.btnPlus90.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnPlus90.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnPlus90.ImageAlign = System.Drawing.ContentAlignment.TopCenter; - this.btnPlus90.Location = new System.Drawing.Point(693, 198); - this.btnPlus90.Name = "btnPlus90"; - this.btnPlus90.Size = new System.Drawing.Size(70, 51); - this.btnPlus90.TabIndex = 87; - this.btnPlus90.Text = "+90"; - this.btnPlus90.UseVisualStyleBackColor = true; - this.btnPlus90.Click += new System.EventHandler(this.btnPlus90_Click); - // // btnDnABHeadingBy1 // this.btnDnABHeadingBy1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnDnABHeadingBy1.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnDnABHeadingBy1.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnDnABHeadingBy1.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.btnDnABHeadingBy1.Location = new System.Drawing.Point(601, 198); + this.btnDnABHeadingBy1.Location = new System.Drawing.Point(484, 202); this.btnDnABHeadingBy1.Name = "btnDnABHeadingBy1"; - this.btnDnABHeadingBy1.Size = new System.Drawing.Size(70, 51); + this.btnDnABHeadingBy1.Size = new System.Drawing.Size(80, 51); this.btnDnABHeadingBy1.TabIndex = 73; this.btnDnABHeadingBy1.Text = "+0.1"; this.btnDnABHeadingBy1.UseVisualStyleBackColor = true; @@ -323,104 +164,207 @@ private void InitializeComponent() // btnUpABHeadingBy1 // this.btnUpABHeadingBy1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnUpABHeadingBy1.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnUpABHeadingBy1.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnUpABHeadingBy1.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.btnUpABHeadingBy1.Location = new System.Drawing.Point(509, 198); + this.btnUpABHeadingBy1.Location = new System.Drawing.Point(377, 202); this.btnUpABHeadingBy1.Name = "btnUpABHeadingBy1"; - this.btnUpABHeadingBy1.Size = new System.Drawing.Size(70, 51); + this.btnUpABHeadingBy1.Size = new System.Drawing.Size(80, 51); this.btnUpABHeadingBy1.TabIndex = 72; this.btnUpABHeadingBy1.Text = "-0.1"; this.btnUpABHeadingBy1.UseVisualStyleBackColor = true; this.btnUpABHeadingBy1.Click += new System.EventHandler(this.BtnUpABHeadingBy1_Click); // - // btnShow - // - this.btnShow.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnShow.BackColor = System.Drawing.SystemColors.ControlLight; - this.btnShow.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnShow.Image = global::AgOpenGPS.Properties.Resources.ArrowRight; - this.btnShow.ImageAlign = System.Drawing.ContentAlignment.TopCenter; - this.btnShow.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnShow.Location = new System.Drawing.Point(509, 276); - this.btnShow.Name = "btnShow"; - this.btnShow.Size = new System.Drawing.Size(100, 80); - this.btnShow.TabIndex = 148; - this.btnShow.Text = "Show"; - this.btnShow.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnShow.UseVisualStyleBackColor = false; - this.btnShow.Click += new System.EventHandler(this.BtnShow_Click); + // lblEnterName + // + this.lblEnterName.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblEnterName.Location = new System.Drawing.Point(108, 8); + this.lblEnterName.Margin = new System.Windows.Forms.Padding(0); + this.lblEnterName.Name = "lblEnterName"; + this.lblEnterName.Size = new System.Drawing.Size(246, 61); + this.lblEnterName.TabIndex = 151; + this.lblEnterName.Text = "Enter Line Name"; + this.lblEnterName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblEnterName.Visible = false; + // + // tboxABLineName + // + this.tboxABLineName.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tboxABLineName.Location = new System.Drawing.Point(104, 72); + this.tboxABLineName.Name = "tboxABLineName"; + this.tboxABLineName.Size = new System.Drawing.Size(255, 33); + this.tboxABLineName.TabIndex = 152; + this.tboxABLineName.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tboxABLineName.Enter += new System.EventHandler(this.tboxABLineName_Enter); + // + // lvLines + // + this.lvLines.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.lvLines.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.chField}); + this.lvLines.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lvLines.FullRowSelect = true; + this.lvLines.GridLines = true; + this.lvLines.HideSelection = false; + this.lvLines.ImeMode = System.Windows.Forms.ImeMode.Off; + this.lvLines.LabelWrap = false; + this.lvLines.Location = new System.Drawing.Point(104, 117); + this.lvLines.Margin = new System.Windows.Forms.Padding(0); + this.lvLines.MultiSelect = false; + this.lvLines.Name = "lvLines"; + this.lvLines.Size = new System.Drawing.Size(255, 245); + this.lvLines.TabIndex = 153; + this.lvLines.TileSize = new System.Drawing.Size(240, 40); + this.lvLines.UseCompatibleStateImageBehavior = false; + this.lvLines.View = System.Windows.Forms.View.Tile; + this.lvLines.Visible = false; + this.lvLines.SelectedIndexChanged += new System.EventHandler(this.lvLines_SelectedIndexChanged); + // + // chField + // + this.chField.Text = "CurveLines"; + this.chField.Width = 239; + // + // label1 + // + this.label1.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Tahoma", 12F); + this.label1.Location = new System.Drawing.Point(13, 385); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(46, 19); + this.label1.TabIndex = 154; + this.label1.Text = "Skips"; + // + // btnAddAndGo + // + this.btnAddAndGo.BackColor = System.Drawing.Color.Transparent; + this.btnAddAndGo.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold); + this.btnAddAndGo.ForeColor = System.Drawing.SystemColors.ControlText; + this.btnAddAndGo.Image = global::AgOpenGPS.Properties.Resources.FileNewAndGo; + this.btnAddAndGo.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.btnAddAndGo.Location = new System.Drawing.Point(7, 6); + this.btnAddAndGo.Name = "btnAddAndGo"; + this.btnAddAndGo.Size = new System.Drawing.Size(78, 74); + this.btnAddAndGo.TabIndex = 155; + this.btnAddAndGo.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnAddAndGo.UseVisualStyleBackColor = false; + this.btnAddAndGo.Click += new System.EventHandler(this.btnAddAndGo_Click); // // btnNewABLine // this.btnNewABLine.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnNewABLine.BackColor = System.Drawing.SystemColors.ControlLight; this.btnNewABLine.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnNewABLine.Image = global::AgOpenGPS.Properties.Resources.back_button; - this.btnNewABLine.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.btnNewABLine.Image = global::AgOpenGPS.Properties.Resources.AddNew; this.btnNewABLine.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnNewABLine.Location = new System.Drawing.Point(664, 276); + this.btnNewABLine.Location = new System.Drawing.Point(484, 282); this.btnNewABLine.Name = "btnNewABLine"; - this.btnNewABLine.Size = new System.Drawing.Size(100, 80); + this.btnNewABLine.Size = new System.Drawing.Size(80, 80); this.btnNewABLine.TabIndex = 149; - this.btnNewABLine.Text = "New"; this.btnNewABLine.TextAlign = System.Drawing.ContentAlignment.BottomCenter; this.btnNewABLine.UseVisualStyleBackColor = false; this.btnNewABLine.Click += new System.EventHandler(this.BtnNewABLine_Click); // - // lblEnterName + // btnListUse // - this.lblEnterName.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblEnterName.Location = new System.Drawing.Point(146, 8); - this.lblEnterName.Margin = new System.Windows.Forms.Padding(0); - this.lblEnterName.Name = "lblEnterName"; - this.lblEnterName.Size = new System.Drawing.Size(246, 39); - this.lblEnterName.TabIndex = 151; - this.lblEnterName.Text = "Enter Line Name"; - this.lblEnterName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.lblEnterName.Visible = false; + this.btnListUse.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold); + this.btnListUse.Image = global::AgOpenGPS.Properties.Resources.FileUse; + this.btnListUse.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.btnListUse.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.btnListUse.Location = new System.Drawing.Point(7, 291); + this.btnListUse.Name = "btnListUse"; + this.btnListUse.Size = new System.Drawing.Size(78, 74); + this.btnListUse.TabIndex = 86; + this.btnListUse.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnListUse.UseVisualStyleBackColor = true; + this.btnListUse.Click += new System.EventHandler(this.btnListUse_Click); // - // tboxABLineName + // btnListDelete // - this.tboxABLineName.Location = new System.Drawing.Point(151, 52); - this.tboxABLineName.Name = "tboxABLineName"; - this.tboxABLineName.Size = new System.Drawing.Size(228, 30); - this.tboxABLineName.TabIndex = 152; - this.tboxABLineName.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.btnListDelete.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold); + this.btnListDelete.Image = global::AgOpenGPS.Properties.Resources.FileDelete; + this.btnListDelete.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.btnListDelete.Location = new System.Drawing.Point(7, 187); + this.btnListDelete.Name = "btnListDelete"; + this.btnListDelete.Size = new System.Drawing.Size(78, 74); + this.btnListDelete.TabIndex = 85; + this.btnListDelete.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnListDelete.UseVisualStyleBackColor = true; + this.btnListDelete.Click += new System.EventHandler(this.btnListDelete_Click); + // + // btnAddToFile + // + this.btnAddToFile.BackColor = System.Drawing.Color.Transparent; + this.btnAddToFile.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold); + this.btnAddToFile.ForeColor = System.Drawing.SystemColors.ControlText; + this.btnAddToFile.Image = global::AgOpenGPS.Properties.Resources.FileNew; + this.btnAddToFile.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.btnAddToFile.Location = new System.Drawing.Point(7, 82); + this.btnAddToFile.Name = "btnAddToFile"; + this.btnAddToFile.Size = new System.Drawing.Size(78, 74); + this.btnAddToFile.TabIndex = 82; + this.btnAddToFile.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnAddToFile.UseVisualStyleBackColor = false; + this.btnAddToFile.Click += new System.EventHandler(this.btnAddToFile_Click); + // + // btnTurnOffAB + // + this.btnTurnOffAB.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnTurnOffAB.BackColor = System.Drawing.Color.Transparent; + this.btnTurnOffAB.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold); + this.btnTurnOffAB.ForeColor = System.Drawing.SystemColors.ControlText; + this.btnTurnOffAB.Image = global::AgOpenGPS.Properties.Resources.SwitchOff; + this.btnTurnOffAB.Location = new System.Drawing.Point(377, 282); + this.btnTurnOffAB.Name = "btnTurnOffAB"; + this.btnTurnOffAB.Size = new System.Drawing.Size(80, 80); + this.btnTurnOffAB.TabIndex = 0; + this.btnTurnOffAB.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnTurnOffAB.UseVisualStyleBackColor = false; + this.btnTurnOffAB.Click += new System.EventHandler(this.btnTurnOffAB_Click); + // + // btnBPoint + // + this.btnBPoint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnBPoint.Font = new System.Drawing.Font("Tahoma", 14.25F); + this.btnBPoint.Image = global::AgOpenGPS.Properties.Resources.LetterBBlue; + this.btnBPoint.Location = new System.Drawing.Point(484, 38); + this.btnBPoint.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); + this.btnBPoint.Name = "btnBPoint"; + this.btnBPoint.Size = new System.Drawing.Size(80, 80); + this.btnBPoint.TabIndex = 58; + this.btnBPoint.UseVisualStyleBackColor = true; + this.btnBPoint.Click += new System.EventHandler(this.btnBPoint_Click); // - // btnGetABForm - // - this.btnGetABForm.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnGetABForm.BackColor = System.Drawing.SystemColors.ControlLight; - this.btnGetABForm.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnGetABForm.Image = global::AgOpenGPS.Properties.Resources.PointStart; - this.btnGetABForm.ImageAlign = System.Drawing.ContentAlignment.TopCenter; - this.btnGetABForm.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnGetABForm.Location = new System.Drawing.Point(379, 387); - this.btnGetABForm.Name = "btnGetABForm"; - this.btnGetABForm.Size = new System.Drawing.Size(80, 69); - this.btnGetABForm.TabIndex = 149; - this.btnGetABForm.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnGetABForm.UseVisualStyleBackColor = false; - this.btnGetABForm.Click += new System.EventHandler(this.BtnGetABForm_Click); + // btnAPoint + // + this.btnAPoint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnAPoint.Font = new System.Drawing.Font("Tahoma", 14.25F); + this.btnAPoint.Image = global::AgOpenGPS.Properties.Resources.LetterABlue; + this.btnAPoint.Location = new System.Drawing.Point(377, 38); + this.btnAPoint.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); + this.btnAPoint.Name = "btnAPoint"; + this.btnAPoint.Size = new System.Drawing.Size(80, 80); + this.btnAPoint.TabIndex = 57; + this.btnAPoint.UseVisualStyleBackColor = true; + this.btnAPoint.Click += new System.EventHandler(this.btnAPoint_Click); // // FormABLine // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.BackColor = System.Drawing.SystemColors.InactiveBorder; - this.ClientSize = new System.Drawing.Size(768, 462); + this.ClientSize = new System.Drawing.Size(572, 371); this.ControlBox = false; + this.Controls.Add(this.btnAddAndGo); + this.Controls.Add(this.label1); + this.Controls.Add(this.lvLines); this.Controls.Add(this.tboxABLineName); this.Controls.Add(this.lblEnterName); - this.Controls.Add(this.btnGetABForm); this.Controls.Add(this.btnNewABLine); - this.Controls.Add(this.btnShow); this.Controls.Add(this.lblFixHeading); - this.Controls.Add(this.btnPlus90); this.Controls.Add(this.btnListUse); this.Controls.Add(this.btnListDelete); this.Controls.Add(this.label3); - this.Controls.Add(this.lvLines); this.Controls.Add(this.nudTramRepeats); this.Controls.Add(this.tboxHeading); this.Controls.Add(this.nudBasedOnPass); @@ -432,10 +376,8 @@ private void InitializeComponent() this.Controls.Add(this.btnTurnOffAB); this.Controls.Add(this.btnBPoint); this.Controls.Add(this.btnAPoint); - this.Controls.Add(this.btnABLineOk); this.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.HelpButton = true; this.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); this.MaximizeBox = false; this.MinimizeBox = false; @@ -445,6 +387,7 @@ private void InitializeComponent() this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "AB Line"; this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormABLine_FormClosing); this.Load += new System.EventHandler(this.FormABLine_Load); ((System.ComponentModel.ISupportInitialize)(this.nudBasedOnPass)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudTramRepeats)).EndInit(); @@ -458,7 +401,6 @@ private void InitializeComponent() private System.Windows.Forms.Button btnTurnOffAB; private System.Windows.Forms.Button btnBPoint; private System.Windows.Forms.Button btnAPoint; - private System.Windows.Forms.Button btnABLineOk; private System.Windows.Forms.Timer timer1; private System.Windows.Forms.Label lblFixHeading; private System.Windows.Forms.Label lblKeepGoing; @@ -468,20 +410,16 @@ private void InitializeComponent() private System.Windows.Forms.Label label3; private System.Windows.Forms.Button btnAddToFile; private System.Windows.Forms.TextBox tboxHeading; - private System.Windows.Forms.ListView lvLines; - private System.Windows.Forms.ColumnHeader chName; - private System.Windows.Forms.ColumnHeader chAngle; private System.Windows.Forms.Button btnListDelete; private System.Windows.Forms.Button btnListUse; - private System.Windows.Forms.ColumnHeader chEasting; - private System.Windows.Forms.ColumnHeader chNorthing; - private System.Windows.Forms.Button btnPlus90; private System.Windows.Forms.Button btnDnABHeadingBy1; private System.Windows.Forms.Button btnUpABHeadingBy1; - private System.Windows.Forms.Button btnShow; private System.Windows.Forms.Button btnNewABLine; private System.Windows.Forms.Label lblEnterName; private System.Windows.Forms.TextBox tboxABLineName; - private System.Windows.Forms.Button btnGetABForm; + private System.Windows.Forms.ListView lvLines; + private System.Windows.Forms.ColumnHeader chField; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button btnAddAndGo; } } \ No newline at end of file diff --git a/SourceCode/GPS/Forms/FormABLine.cs b/SourceCode/GPS/Forms/FormABLine.cs index 4e02a5774..1c8c4e037 100644 --- a/SourceCode/GPS/Forms/FormABLine.cs +++ b/SourceCode/GPS/Forms/FormABLine.cs @@ -1,6 +1,7 @@ //Please, if you use this, share the improvements using System; +using System.Drawing; using System.Globalization; using System.IO; using System.Text.RegularExpressions; @@ -14,9 +15,7 @@ public partial class FormABLine : Form private readonly FormGPS mf = null; private double upDnHeading = 0; - - //the abline stored file - private string filename = ""; + private bool isFullPanel; public FormABLine(Form callingForm) { @@ -26,36 +25,29 @@ public FormABLine(Form callingForm) InitializeComponent(); lblEnterName.Text = gStr.gsEnterLineName; - btnNewABLine.Text = gStr.gsNew; - btnShow.Text = gStr.gsShow; + //btnNewABLine.Text = gStr.gsNew; } private void FormABLine_Load(object sender, EventArgs e) { - lvLines.Visible = false; - label2.Visible = false; - label3.Visible = false; - lblEnterName.Visible = false; - tboxABLineName.Visible = false; - nudBasedOnPass.Visible = false; - nudTramRepeats.Visible = false; - btnListDelete.Visible = false; - btnListUse.Visible = false; - btnAddToFile.Visible = false; - btnShow.Text = gStr.gsShow; - btnShow.Image = Properties.Resources.ArrowLeft; - - + //tboxABLineName.Enabled = false; + btnAddToFile.Enabled = false; + btnAddAndGo.Enabled = false; + btnAPoint.Enabled = false; + btnBPoint.Enabled = false; + btnUpABHeadingBy1.Enabled = false; + btnDnABHeadingBy1.Enabled = false; + tboxHeading.Enabled = false; + tboxABLineName.Text = ""; + tboxABLineName.Enabled = false; + //small window - this.Size = new System.Drawing.Size(304, 510); - + ShowFullPanel(true); //different start based on AB line already set or not if (mf.ABLine.isABLineSet) { //AB line is on screen and set - btnAPoint.Enabled = false; - btnBPoint.Enabled = true; upDnHeading = Math.Round(glm.toDegrees(mf.ABLine.abHeading), 6); nudTramRepeats.Value = mf.ABLine.tramPassEvery; nudBasedOnPass.Value = mf.ABLine.passBasedOn; @@ -66,9 +58,8 @@ private void FormABLine_Load(object sender, EventArgs e) else { //no AB line - btnAPoint.Enabled = true; + btnAPoint.Enabled = false; btnBPoint.Enabled = false; - btnABLineOk.Enabled = false; upDnHeading = Math.Round(glm.toDegrees(mf.fixHeading), 6); nudTramRepeats.Value = 0; nudBasedOnPass.Value = 0; @@ -76,108 +67,51 @@ private void FormABLine_Load(object sender, EventArgs e) mf.ABLine.passBasedOn = 0; } - //make sure at least a global blank AB Line file exists - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); - - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - filename = directoryName + "\\ABLines.txt"; + lvLines.Clear(); + ListViewItem itm; - - if (!File.Exists(filename)) + foreach (var item in mf.ABLine.lineArr) { - using (StreamWriter writer = new StreamWriter(filename)) - { - } + itm = new ListViewItem(item.Name); + lvLines.Items.Add(itm); } - if (!File.Exists(filename)) - { - mf.TimedMessageBox(2000, gStr.gsFileError, gStr.gsMissingABLinesFile); - } - else - { - using (StreamReader reader = new StreamReader(filename)) - { - try - { - string line; - ListViewItem itm; - - //read all the lines - while (!reader.EndOfStream) - { - line = reader.ReadLine(); - string[] words = line.Split(','); - //listboxLines.Items.Add(line); - itm = new ListViewItem(words); - lvLines.Items.Add(itm); - - //coords.easting = double.Parse(words[0], CultureInfo.InvariantCulture); - //coords.northing = double.Parse(words[1], CultureInfo.InvariantCulture); - //youFileList.Add(coords); - } - } - catch (Exception er) - { - var form = new FormTimedMessage(2000, "ABLine File is Corrupt", "Please delete it!!!"); - form.Show(); - mf.WriteErrorLog("FieldOpen, Loading ABLine, Corrupt ABLine File" + er); - } - } - - // go to bottom of list - if there is a bottom - if (lvLines.Items.Count > 0) lvLines.Items[lvLines.Items.Count - 1].EnsureVisible(); - } + // go to bottom of list - if there is a bottom + if (lvLines.Items.Count > 0) lvLines.Items[lvLines.Items.Count - 1].EnsureVisible(); } - private void BtnNewABLine_Click(object sender, EventArgs e) + + private void btnAPoint_Click(object sender, EventArgs e) { - this.tboxHeading.TextChanged -= new System.EventHandler(this.tboxHeading_TextChanged); - tboxHeading.Text = ""; - this.tboxHeading.TextChanged += new System.EventHandler(this.tboxHeading_TextChanged); + vec3 fix = new vec3(); + fix = mf.pivotAxlePos; - mf.ABLine.DeleteAB(); - btnAPoint.Enabled = true; - btnBPoint.Enabled = false; - btnABLineOk.Enabled = false; - nudTramRepeats.Value = 0; - nudBasedOnPass.Value = 0; - mf.ABLine.tramPassEvery = 0; - mf.ABLine.passBasedOn = 0; + tboxHeading.Enabled = true; + btnNewABLine.Image = Properties.Resources.OK64; + btnNewABLine.Text = "+"; + btnUpABHeadingBy1.Enabled = true; + btnDnABHeadingBy1.Enabled = true; + btnNewABLine.Enabled = true; - //save the no ABLine; - mf.FileSaveABLine(); - } + mf.ABLine.moveDistance = 0; + mf.ABLine.refPoint1.easting = fix.easting; + mf.ABLine.refPoint1.northing = fix.northing; + mf.ABLine.abHeading = fix.heading; + mf.ABLine.SetABLineByHeading(); - private void btnAPoint_Click(object sender, EventArgs e) - { -#pragma warning disable CS1690 // Accessing a member on a field of a marshal-by-reference class may cause a runtime exception - mf.ABLine.refPoint1.easting = mf.pivotAxlePos.easting; - mf.ABLine.refPoint1.northing = mf.pivotAxlePos.northing; - mf.ABLine.abHeading = mf.pivotAxlePos.heading; -#pragma warning restore CS1690 // Accessing a member on a field of a marshal-by-reference class may cause a runtime exception btnAPoint.Enabled = false; upDnHeading = Math.Round(glm.toDegrees(mf.fixHeading), 1); this.tboxHeading.TextChanged -= new System.EventHandler(this.tboxHeading_TextChanged); tboxHeading.Text = upDnHeading.ToString(); this.tboxHeading.TextChanged += new System.EventHandler(this.tboxHeading_TextChanged); - btnABLineOk.Enabled = false; - btnShow.Enabled = false; - mf.ABLine.SetABLineByHeading(); - ShowSavedPanel(false); + ShowFullPanel(false); } private void btnBPoint_Click(object sender, EventArgs e) { mf.ABLine.SetABLineByBPoint(); - btnABLineOk.Enabled = true; - btnShow.Enabled = true; - btnTurnOffAB.Enabled = true; upDnHeading = Math.Round(glm.toDegrees(mf.fixHeading), 3); //update the default @@ -186,179 +120,87 @@ private void btnBPoint_Click(object sender, EventArgs e) this.tboxHeading.TextChanged -= new System.EventHandler(this.tboxHeading_TextChanged); tboxHeading.Text = glm.toDegrees(mf.ABLine.abHeading).ToString("N4"); this.tboxHeading.TextChanged += new System.EventHandler(this.tboxHeading_TextChanged); + //mf.ABLine.SetABLineByHeading(); + //ShowSavedPanel(true); + //tboxABLineName.BackColor = Color.LightGreen; } - private void btnABLineOk_Click(object sender, EventArgs e) - { - //save the ABLine - mf.FileSaveABLine(); - - if (mf.ABLine.isABLineLoaded) - { - //save the ABLine - mf.EnableYouTurnButtons(); - } - else - { - mf.DisableYouTurnButtons(); - } - - if (mf.ABLine.tramPassEvery == 0) mf.mc.relayData[mf.mc.rdTramLine] = 0; - Close(); - } - - private void timer1_Tick(object sender, EventArgs e) - { - lblFixHeading.Text = Convert.ToString(Math.Round(glm.toDegrees(mf.fixHeading), 1)) + "°"; - lblKeepGoing.Text = ""; - - //make sure we go at least 3 or so meters before allowing B reference point - if (!btnAPoint.Enabled && !btnBPoint.Enabled) - { - double pointAToFixDistance = - Math.Pow(mf.ABLine.refPoint1.easting - mf.pn.fix.easting, 2) - + Math.Pow(mf.ABLine.refPoint1.northing - mf.pn.fix.northing, 2); - if (pointAToFixDistance > 100) btnBPoint.Enabled = true; - else lblKeepGoing.Text = Convert.ToInt16(100 - pointAToFixDistance).ToString(); - } + //private void btnPlus90_Click(object sender, EventArgs e) + //{ + // mf.ABLine.moveDistance = 0; + // upDnHeading += 90; + // if (upDnHeading > 359.999999) upDnHeading -= 360; + // mf.ABLine.abHeading = glm.toRadians(upDnHeading); + // mf.ABLine.SetABLineByHeading(); + // tboxHeading.Text = Convert.ToString(upDnHeading, CultureInfo.InvariantCulture); + //} - int count = lvLines.SelectedItems.Count; - if (count > 0) - { - btnListDelete.Enabled = true; - btnListUse.Enabled = true; - } - else - { - btnListDelete.Enabled = false; - btnListUse.Enabled = false; - } - } - - private void nudTramRepeats_ValueChanged(object sender, EventArgs e) - { - mf.ABLine.tramPassEvery = (int)nudTramRepeats.Value; - } - - private void nudBasedOnPass_ValueChanged(object sender, EventArgs e) - { - mf.ABLine.passBasedOn = (int)nudBasedOnPass.Value; - } - - private void btnAddToFile_Click(object sender, EventArgs e) + private void BtnNewABLine_Click(object sender, EventArgs e) { - using (StreamWriter writer = new StreamWriter(filename, true)) + //is button for adding ABLine set + if (btnNewABLine.Text == "+") { - if (mf.ABLine.isABLineSet) - { - if (tboxABLineName.Text.Length > 0) - { - //make it culture invariant - string line = tboxABLineName.Text.Trim() - + ',' + (Math.Round(glm.toDegrees(mf.ABLine.abHeading), 8)).ToString(CultureInfo.InvariantCulture) - + ',' + (Math.Round(mf.ABLine.refPoint1.easting, 3)).ToString(CultureInfo.InvariantCulture) - + ',' + (Math.Round(mf.ABLine.refPoint1.northing, 3)).ToString(CultureInfo.InvariantCulture); - - //write out to file - writer.WriteLine(line); - - //update the list box - ListViewItem itm; - string[] words = line.Split(','); - itm = new ListViewItem(words); - lvLines.Items.Add(itm); - - // go to bottom of list - if there is a bottom - if (lvLines.Items.Count > 0) lvLines.Items[lvLines.Items.Count - 1].EnsureVisible(); - } - else - { - //MessageBox.Show("Currently no ABCurve name\n create ABCurve name"); - var form2 = new FormTimedMessage(2000, gStr.gsNoNameEntered, gStr.gsEnterLineName); - form2.Show(); - } - } - else - { - //MessageBox.Show("Currently no ABCurve name\n create ABCurve name"); - var form2 = new FormTimedMessage(2000, gStr.gsNoABLineActive, gStr.gsPleaseCompleteABLine); - form2.Show(); - } - tboxABLineName.Clear(); + btnNewABLine.Text = ""; + btnNewABLine.Image = Properties.Resources.AddNew; + ShowFullPanel(true); + tboxABLineName.BackColor = Color.LightGreen; + //create a name + tboxABLineName.Enabled = true; - } - } + tboxHeading.Enabled = false; + btnAddToFile.Enabled = true; + btnAddAndGo.Enabled = true; - private void btnListDelete_Click(object sender, EventArgs e) - { - int count = lvLines.SelectedItems.Count; - if (count > 0) - { - lvLines.SelectedItems[0].Remove(); + btnAPoint.Enabled = false; + btnBPoint.Enabled = false; + btnUpABHeadingBy1.Enabled = false; + btnDnABHeadingBy1.Enabled = false; + btnNewABLine.Enabled = false; + btnTurnOffAB.Enabled = false; + btnNewABLine.Enabled = false; + + lvLines.Enabled = false; + btnAddToFile.Focus(); + tboxABLineName.Text = (Math.Round(glm.toDegrees(mf.ABLine.abHeading), 1)).ToString(CultureInfo.InvariantCulture) + + "\u00B0" + + FindDirection(mf.ABLine.abHeading) + DateTime.Now.ToString("hh:mm:ss", CultureInfo.InvariantCulture); } - using (StreamWriter writer = new StreamWriter(filename)) + else // or used to initiate a new line { - string words; - count = lvLines.Items.Count; - if (count > 0) - { - for (int i = 0; i < count; i++) - { - words = lvLines.Items[i].SubItems[0].Text + "," + - lvLines.Items[i].SubItems[1].Text + "," + - lvLines.Items[i].SubItems[2].Text + "," + - lvLines.Items[i].SubItems[3].Text; - //out to file - writer.WriteLine(words); - } - } - } - } + this.tboxHeading.TextChanged -= new System.EventHandler(this.tboxHeading_TextChanged); + tboxHeading.Text = ""; + this.tboxHeading.TextChanged += new System.EventHandler(this.tboxHeading_TextChanged); + tboxHeading.Enabled = false; - private void btnListUse_Click(object sender, EventArgs e) - { - int count = lvLines.SelectedItems.Count; - if (count > 0) - { - double temp = double.Parse(lvLines.SelectedItems[0].SubItems[1].Text, CultureInfo.InvariantCulture); - mf.ABLine.abHeading = glm.toRadians(temp); - temp = double.Parse(lvLines.SelectedItems[0].SubItems[2].Text, CultureInfo.InvariantCulture); - mf.ABLine.refPoint1.easting = temp; - temp = double.Parse(lvLines.SelectedItems[0].SubItems[3].Text, CultureInfo.InvariantCulture); - mf.ABLine.refPoint1.northing = temp; - mf.ABLine.SetABLineByHeading(); + mf.ABLine.DeleteAB(); + lvLines.SelectedItems.Clear(); + + btnAPoint.Enabled = true; + btnBPoint.Enabled = false; + btnUpABHeadingBy1.Enabled = false; + btnDnABHeadingBy1.Enabled = false; + btnNewABLine.Enabled = false; + btnTurnOffAB.Enabled = false; - //save the ABLine - mf.FileSaveABLine(); + nudTramRepeats.Value = 0; + nudBasedOnPass.Value = 0; - mf.EnableYouTurnButtons(); - //Go back with Line enabled - Close(); - } + mf.ABLine.tramPassEvery = 0; + mf.ABLine.passBasedOn = 0; + mf.ABLine.isABLineSet = false; + mf.ABLine.isABLineLoaded = false; - //no item selected - else - { - return; + ShowFullPanel(false); } } - private void btnPlus90_Click(object sender, EventArgs e) - { - upDnHeading += 90; - if (upDnHeading > 359.999999) upDnHeading -= 360; - mf.ABLine.abHeading = glm.toRadians(upDnHeading); - mf.ABLine.SetABLineByHeading(); - tboxHeading.Text = Convert.ToString(upDnHeading, CultureInfo.InvariantCulture); - btnABLineOk.Enabled = true; - } - private void BtnUpABHeadingBy1_Click(object sender, EventArgs e) { - upDnHeading-=0.1; + mf.ABLine.moveDistance = 0; + upDnHeading -= 0.1; upDnHeading = Math.Round(upDnHeading, 1); if (upDnHeading < 0) { @@ -366,11 +208,12 @@ private void BtnUpABHeadingBy1_Click(object sender, EventArgs e) } mf.ABLine.abHeading = glm.toRadians(upDnHeading); tboxHeading.Text = Convert.ToString(upDnHeading, CultureInfo.InvariantCulture); - btnABLineOk.Enabled = true; } private void BtnDnABHeadingBy1_Click(object sender, EventArgs e) { + mf.ABLine.moveDistance = 0; + upDnHeading += 0.1; upDnHeading = Math.Round(upDnHeading, 1); if ((upDnHeading) > 359.9) @@ -380,8 +223,7 @@ private void BtnDnABHeadingBy1_Click(object sender, EventArgs e) //upDnHeading = (int)upDnHeading; mf.ABLine.abHeading = glm.toRadians(upDnHeading); tboxHeading.Text = Convert.ToString(upDnHeading, CultureInfo.InvariantCulture); - btnABLineOk.Enabled = true; - } + } private void TboxHeading_Enter(object sender, EventArgs e) { @@ -402,6 +244,7 @@ private void TboxHeading_Enter(object sender, EventArgs e) btnTurnOffAB.Focus(); } + private void tboxHeading_TextChanged(object sender, EventArgs e) { var textboxSender = (TextBox)sender; @@ -414,36 +257,206 @@ private void tboxHeading_TextChanged(object sender, EventArgs e) upDnHeading = double.Parse(line, CultureInfo.InvariantCulture); mf.ABLine.abHeading = glm.toRadians(Math.Round(upDnHeading, 6)); mf.ABLine.SetABLineByHeading(); + //ShowSavedPanel(true); + tboxABLineName.BackColor = Color.LightGreen; } - private void BtnShow_Click(object sender, EventArgs e) + private void btnAddToFile_Click(object sender, EventArgs e) { - if (this.Size.Width < 790) + if (mf.ABLine.isABLineSet) { - ShowSavedPanel(true); + if (tboxABLineName.Text.Length > 0) + { + mf.ABLine.lineArr.Add(new CABLines()); + mf.ABLine.numABLines = mf.ABLine.lineArr.Count; + mf.ABLine.numABLineSelected = mf.ABLine.numABLines; + + //index to last one. + int idx = mf.ABLine.lineArr.Count - 1; + + mf.ABLine.lineArr[idx].heading = mf.ABLine.abHeading; + //calculate the new points for the reference line and points + mf.ABLine.lineArr[idx].origin.easting = mf.ABLine.refPoint1.easting; + mf.ABLine.lineArr[idx].origin.northing = mf.ABLine.refPoint1.northing; + + //sin x cos z for endpoints, opposite for additional lines + mf.ABLine.lineArr[idx].ref1.easting = mf.ABLine.lineArr[idx].origin.easting - (Math.Sin(mf.ABLine.lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref1.northing = mf.ABLine.lineArr[idx].origin.northing - (Math.Cos(mf.ABLine.lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref2.easting = mf.ABLine.lineArr[idx].origin.easting + (Math.Sin(mf.ABLine.lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref2.northing = mf.ABLine.lineArr[idx].origin.northing + (Math.Cos(mf.ABLine.lineArr[idx].heading) * 2000.0); + + + mf.ABLine.lineArr[idx].Name = tboxABLineName.Text.Trim(); + + //update the list box + ListViewItem itm; + itm = new ListViewItem(mf.ABLine.lineArr[idx].Name); + lvLines.Items.Add(itm); + + // go to bottom of list - if there is a bottom + if (lvLines.Items.Count > 0) lvLines.Items[lvLines.Items.Count - 1].EnsureVisible(); + + mf.FileSaveABLines(); + + tboxABLineName.BackColor = SystemColors.Window; + tboxABLineName.Text = ""; + + btnAddToFile.Enabled = false; + btnAddAndGo.Enabled = false; + btnNewABLine.Enabled = true; + + tboxABLineName.Enabled = false; + btnTurnOffAB.Enabled = true; + lvLines.Enabled = false; + tboxABLineName.Enabled = false; + lvLines.Enabled = true; + lvLines.Focus(); + } + else + { + //MessageBox.Show("Currently no ABCurve name\n create ABCurve name"); + var form2 = new FormTimedMessage(2000, gStr.gsNoNameEntered, gStr.gsEnterLineName); + form2.Show(); + } + } + else + { + //MessageBox.Show("Currently no ABCurve name\n create ABCurve name"); + var form2 = new FormTimedMessage(2000, gStr.gsNoABLineActive, gStr.gsPleaseCompleteABLine); + form2.Show(); + } + + tboxABLineName.Clear(); + } + + private void btnAddAndGo_Click(object sender, EventArgs e) + { + if (mf.ABLine.isABLineSet) + { + if (tboxABLineName.Text.Length > 0) + { + mf.ABLine.lineArr.Add(new CABLines()); + mf.ABLine.numABLines = mf.ABLine.lineArr.Count; + mf.ABLine.numABLineSelected = mf.ABLine.numABLines; + + //index to last one. + int idx = mf.ABLine.lineArr.Count - 1; + + mf.ABLine.lineArr[idx].heading = mf.ABLine.abHeading; + //calculate the new points for the reference line and points + mf.ABLine.lineArr[idx].origin.easting = mf.ABLine.refPoint1.easting; + mf.ABLine.lineArr[idx].origin.northing = mf.ABLine.refPoint1.northing; + + //sin x cos z for endpoints, opposite for additional lines + mf.ABLine.lineArr[idx].ref1.easting = mf.ABLine.lineArr[idx].origin.easting - (Math.Sin(mf.ABLine.lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref1.northing = mf.ABLine.lineArr[idx].origin.northing - (Math.Cos(mf.ABLine.lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref2.easting = mf.ABLine.lineArr[idx].origin.easting + (Math.Sin(mf.ABLine.lineArr[idx].heading) * 2000.0); + mf.ABLine.lineArr[idx].ref2.northing = mf.ABLine.lineArr[idx].origin.northing + (Math.Cos(mf.ABLine.lineArr[idx].heading) * 2000.0); + + + mf.ABLine.lineArr[idx].Name = tboxABLineName.Text.Trim(); + + mf.FileSaveABLines(); + + //Often only 1 ABLine so just return to field + //if (mf.ABLine.numABLines == 1) + mf.ABLine.abHeading = mf.ABLine.lineArr[idx].heading; + mf.ABLine.refPoint1 = mf.ABLine.lineArr[idx].origin; + mf.ABLine.SetABLineByHeading(); + mf.EnableYouTurnButtons(); + + Close();//Go back with Line enabled + } + else + { + //MessageBox.Show("Currently no ABCurve name\n create ABCurve name"); + var form2 = new FormTimedMessage(2000, gStr.gsNoNameEntered, gStr.gsEnterLineName); + form2.Show(); + } + } + else + { + //MessageBox.Show("Currently no ABCurve name\n create ABCurve name"); + var form2 = new FormTimedMessage(2000, gStr.gsNoABLineActive, gStr.gsPleaseCompleteABLine); + form2.Show(); + } + + tboxABLineName.Clear(); + } + + private void btnListDelete_Click(object sender, EventArgs e) + { + if (lvLines.SelectedItems.Count > 0) + { + int num = lvLines.SelectedIndices[0]; + mf.ABLine.lineArr.RemoveAt(num); + lvLines.SelectedItems[0].Remove(); + + mf.ABLine.numABLines = mf.ABLine.lineArr.Count; + if (mf.ABLine.numABLineSelected > mf.ABLine.numABLines) mf.ABLine.numABLineSelected = mf.ABLine.numABLines; + + if (mf.ABLine.numABLines == 0) + { + mf.ABLine.DeleteAB(); + if (mf.isAutoSteerBtnOn) mf.btnAutoSteer.PerformClick(); + if (mf.yt.isYouTurnBtnOn) mf.btnEnableAutoYouTurn.PerformClick(); + } + mf.FileSaveABLines(); + } + else + { + if (mf.isAutoSteerBtnOn) mf.btnAutoSteer.PerformClick(); + if (mf.yt.isYouTurnBtnOn) mf.btnEnableAutoYouTurn.PerformClick(); + } + } + + private void btnListUse_Click(object sender, EventArgs e) + { + mf.ABLine.moveDistance = 0; + + int idx = lvLines.SelectedIndices[0]; + mf.ABLine.numABLineSelected = idx + 1; + + if (lvLines.SelectedItems.Count > 0) + { + mf.ABLine.abHeading = mf.ABLine.lineArr[idx].heading; + mf.ABLine.refPoint1 = mf.ABLine.lineArr[idx].origin; + + mf.ABLine.SetABLineByHeading(); + + //mf.EnableYouTurnButtons(); + + //Go back with Line enabled + Close(); } + + //no item selected else { - ShowSavedPanel(false); + return; } } private void btnTurnOffAB_Click(object sender, EventArgs e) { - mf.ABLine.isABLineSet = false; mf.ABLine.tramPassEvery = 0; mf.ABLine.passBasedOn = 0; mf.btnABLine.Image = Properties.Resources.ABLineOff; mf.ABLine.isBtnABLineOn = false; + mf.ABLine.isABLineSet = false; + mf.ABLine.isABLineLoaded = false; + mf.ABLine.numABLineSelected = 0; + if (mf.isAutoSteerBtnOn) mf.btnAutoSteer.PerformClick(); + if (mf.yt.isYouTurnBtnOn) mf.btnEnableAutoYouTurn.PerformClick(); Close(); - } - private void ShowSavedPanel(bool showPanel) + private void ShowFullPanel(bool showPanel) { if (showPanel) { - this.Size = new System.Drawing.Size(820, 510); + isFullPanel = true; + this.Size = new System.Drawing.Size(588, 410); lvLines.Visible = true; label2.Visible = true; label3.Visible = true; @@ -454,13 +467,13 @@ private void ShowSavedPanel(bool showPanel) btnListDelete.Visible = true; btnListUse.Visible = true; btnAddToFile.Visible = true; - btnShow.Text = gStr.gsHide; - btnShow.Image = Properties.Resources.ArrowRight; + btnAddAndGo.Visible = true; } else //hide the panel { - this.Size = new System.Drawing.Size(304, 510); + isFullPanel = false; + this.Size = new System.Drawing.Size(218, 410); lvLines.Visible = false; label2.Visible = false; label3.Visible = false; @@ -471,16 +484,119 @@ private void ShowSavedPanel(bool showPanel) btnListDelete.Visible = false; btnListUse.Visible = false; btnAddToFile.Visible = false; - btnShow.Text = gStr.gsShow; - btnShow.Image = Properties.Resources.ArrowLeft; + btnAddAndGo.Visible = false; + } + } + private void timer1_Tick(object sender, EventArgs e) + { + lblFixHeading.Text = Convert.ToString(Math.Round(glm.toDegrees(mf.fixHeading), 1)) + "°"; + lblKeepGoing.Text = ""; + + if (!isFullPanel) + { + //make sure we go at least 3 or so meters before allowing B reference point + if (!btnAPoint.Enabled && !btnBPoint.Enabled) + { + double pointAToFixDistance = + Math.Pow(mf.ABLine.refPoint1.easting - mf.pn.fix.easting, 2) + + Math.Pow(mf.ABLine.refPoint1.northing - mf.pn.fix.northing, 2); + + if (pointAToFixDistance > 100) btnBPoint.Enabled = true; + else lblKeepGoing.Text = Convert.ToInt16(100 - pointAToFixDistance).ToString(); + } + } + else + { + int count = lvLines.SelectedItems.Count; + if (count > 0) + { + btnListDelete.Enabled = true; + btnListUse.Enabled = true; + } + else + { + btnListDelete.Enabled = false; + btnListUse.Enabled = false; + } } } - private void BtnGetABForm_Click(object sender, EventArgs e) + private string FindDirection(double heading) { - Close(); - mf.GetAB(); - + if (heading < 0) heading += glm.twoPI; + + heading = glm.toDegrees(heading); + + if (heading > 337.5 || heading < 22.5) + { + return " North "; + } + if (heading > 22.5 && heading < 67.5) + { + return " N_East "; + } + if (heading > 67.5 && heading < 111.5) + { + return " East "; + } + if (heading > 111.5 && heading < 157.5) + { + return " S_East "; + } + if (heading > 157.5 && heading < 202.5) + { + return " South "; + } + if (heading > 202.5 && heading < 247.5) + { + return " S_West "; + } + if (heading > 247.5 && heading < 292.5) + { + return "West"; + } + if (heading > 292.5 && heading < 337.5) + { + return " N_West "; + } + return " Lost "; + } + + private void tboxABLineName_Enter(object sender, EventArgs e) + { + tboxABLineName.Text = ""; + } + + private void FormABLine_FormClosing(object sender, FormClosingEventArgs e) + { + if (this.Width < 300) e.Cancel = true; + } + + private void nudTramRepeats_ValueChanged(object sender, EventArgs e) + { + mf.ABLine.tramPassEvery = (int)nudTramRepeats.Value; } + + private void nudBasedOnPass_ValueChanged(object sender, EventArgs e) + { + mf.ABLine.passBasedOn = (int)nudBasedOnPass.Value; + } + + private void lvLines_SelectedIndexChanged(object sender, EventArgs e) + { + //mf.ABLine.numABLineSelected = idx + 1; + + if (lvLines.SelectedItems.Count > 0) + { + int idx = lvLines.SelectedIndices[0]; + mf.ABLine.abHeading = mf.ABLine.lineArr[idx].heading; + mf.ABLine.refPoint1 = mf.ABLine.lineArr[idx].origin; + + mf.ABLine.SetABLineByHeading(); + + } + //lvLines.SelectedItems.Clear(); + } + } -} \ No newline at end of file +} diff --git a/SourceCode/GPS/Forms/FormABPick.Designer.cs b/SourceCode/GPS/Forms/FormABPick.Designer.cs deleted file mode 100644 index f2a7452d0..000000000 --- a/SourceCode/GPS/Forms/FormABPick.Designer.cs +++ /dev/null @@ -1,188 +0,0 @@ -namespace AgOpenGPS -{ - partial class FormABPick - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.oglSelf = new OpenTK.GLControl(); - this.timer1 = new System.Windows.Forms.Timer(this.components); - this.btnExit = new System.Windows.Forms.Button(); - this.btnMakeABLine = new System.Windows.Forms.Button(); - this.btnMakeCurve = new System.Windows.Forms.Button(); - this.lblLineName = new System.Windows.Forms.Label(); - this.tboxABLineSaveName = new System.Windows.Forms.TextBox(); - this.btnSaveABLine = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // oglSelf - // - this.oglSelf.BackColor = System.Drawing.Color.Black; - this.oglSelf.Cursor = System.Windows.Forms.Cursors.Cross; - this.oglSelf.Location = new System.Drawing.Point(5, 6); - this.oglSelf.Margin = new System.Windows.Forms.Padding(0); - this.oglSelf.Name = "oglSelf"; - this.oglSelf.Size = new System.Drawing.Size(700, 700); - this.oglSelf.TabIndex = 183; - this.oglSelf.VSync = false; - this.oglSelf.Load += new System.EventHandler(this.oglSelf_Load); - this.oglSelf.Paint += new System.Windows.Forms.PaintEventHandler(this.oglSelf_Paint); - this.oglSelf.MouseDown += new System.Windows.Forms.MouseEventHandler(this.oglSelf_MouseDown); - this.oglSelf.Resize += new System.EventHandler(this.oglSelf_Resize); - // - // timer1 - // - this.timer1.Enabled = true; - this.timer1.Interval = 500; - this.timer1.Tick += new System.EventHandler(this.timer1_Tick); - // - // btnExit - // - this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnExit.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnExit.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnExit.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(64)))), ((int)(((byte)(0))))); - this.btnExit.Image = global::AgOpenGPS.Properties.Resources.OK64; - this.btnExit.Location = new System.Drawing.Point(875, 623); - this.btnExit.Name = "btnExit"; - this.btnExit.Size = new System.Drawing.Size(90, 82); - this.btnExit.TabIndex = 234; - this.btnExit.UseVisualStyleBackColor = true; - this.btnExit.Click += new System.EventHandler(this.btnExit_Click); - // - // btnMakeABLine - // - this.btnMakeABLine.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnMakeABLine.BackColor = System.Drawing.Color.Lavender; - this.btnMakeABLine.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.btnMakeABLine.Enabled = false; - this.btnMakeABLine.FlatAppearance.BorderColor = System.Drawing.SystemColors.HotTrack; - this.btnMakeABLine.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnMakeABLine.Font = new System.Drawing.Font("Tahoma", 14.25F); - this.btnMakeABLine.Image = global::AgOpenGPS.Properties.Resources.ABLineOn; - this.btnMakeABLine.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnMakeABLine.Location = new System.Drawing.Point(733, 12); - this.btnMakeABLine.Name = "btnMakeABLine"; - this.btnMakeABLine.Size = new System.Drawing.Size(94, 95); - this.btnMakeABLine.TabIndex = 311; - this.btnMakeABLine.UseVisualStyleBackColor = false; - // - // btnMakeCurve - // - this.btnMakeCurve.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnMakeCurve.BackColor = System.Drawing.Color.Lavender; - this.btnMakeCurve.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.btnMakeCurve.Enabled = false; - this.btnMakeCurve.FlatAppearance.BorderColor = System.Drawing.SystemColors.HotTrack; - this.btnMakeCurve.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnMakeCurve.Font = new System.Drawing.Font("Tahoma", 14.25F); - this.btnMakeCurve.Image = global::AgOpenGPS.Properties.Resources.CurveOn; - this.btnMakeCurve.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnMakeCurve.Location = new System.Drawing.Point(864, 12); - this.btnMakeCurve.Name = "btnMakeCurve"; - this.btnMakeCurve.Size = new System.Drawing.Size(94, 95); - this.btnMakeCurve.TabIndex = 313; - this.btnMakeCurve.UseVisualStyleBackColor = false; - // - // lblLineName - // - this.lblLineName.Enabled = false; - this.lblLineName.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblLineName.Location = new System.Drawing.Point(718, 118); - this.lblLineName.Margin = new System.Windows.Forms.Padding(0); - this.lblLineName.Name = "lblLineName"; - this.lblLineName.Size = new System.Drawing.Size(246, 39); - this.lblLineName.TabIndex = 314; - this.lblLineName.Text = "Enter Line Name"; - this.lblLineName.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - // - // tboxABLineSaveName - // - this.tboxABLineSaveName.Enabled = false; - this.tboxABLineSaveName.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tboxABLineSaveName.Location = new System.Drawing.Point(733, 164); - this.tboxABLineSaveName.Name = "tboxABLineSaveName"; - this.tboxABLineSaveName.Size = new System.Drawing.Size(225, 30); - this.tboxABLineSaveName.TabIndex = 312; - this.tboxABLineSaveName.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - // - // btnSaveABLine - // - this.btnSaveABLine.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnSaveABLine.BackColor = System.Drawing.Color.Lavender; - this.btnSaveABLine.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.btnSaveABLine.Enabled = false; - this.btnSaveABLine.FlatAppearance.BorderColor = System.Drawing.SystemColors.HotTrack; - this.btnSaveABLine.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnSaveABLine.Font = new System.Drawing.Font("Tahoma", 14.25F); - this.btnSaveABLine.Image = global::AgOpenGPS.Properties.Resources.FileNew; - this.btnSaveABLine.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnSaveABLine.Location = new System.Drawing.Point(785, 212); - this.btnSaveABLine.Name = "btnSaveABLine"; - this.btnSaveABLine.Size = new System.Drawing.Size(129, 76); - this.btnSaveABLine.TabIndex = 319; - this.btnSaveABLine.UseVisualStyleBackColor = false; - // - // FormABPick - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.SystemColors.InactiveCaption; - this.ClientSize = new System.Drawing.Size(974, 712); - this.ControlBox = false; - this.Controls.Add(this.btnSaveABLine); - this.Controls.Add(this.tboxABLineSaveName); - this.Controls.Add(this.btnMakeCurve); - this.Controls.Add(this.btnMakeABLine); - this.Controls.Add(this.btnExit); - this.Controls.Add(this.oglSelf); - this.Controls.Add(this.lblLineName); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "FormABPick"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Click 2 points on the Boundary to Begin"; - this.TopMost = true; - this.Load += new System.EventHandler(this.FormABPick_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private OpenTK.GLControl oglSelf; - private System.Windows.Forms.Timer timer1; - private System.Windows.Forms.Button btnExit; - private System.Windows.Forms.Button btnMakeABLine; - private System.Windows.Forms.Button btnMakeCurve; - private System.Windows.Forms.Label lblLineName; - private System.Windows.Forms.TextBox tboxABLineSaveName; - private System.Windows.Forms.Button btnSaveABLine; - } -} \ No newline at end of file diff --git a/SourceCode/GPS/Forms/FormABPick.cs b/SourceCode/GPS/Forms/FormABPick.cs deleted file mode 100644 index c3821fc51..000000000 --- a/SourceCode/GPS/Forms/FormABPick.cs +++ /dev/null @@ -1,627 +0,0 @@ -using OpenTK; -using OpenTK.Graphics.OpenGL; -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Globalization; -using System.IO; -using System.Windows.Forms; - -namespace AgOpenGPS -{ - public partial class FormABPick : Form - { - //access to the main GPS form and all its variables - private readonly FormGPS mf = null; - - //Array of all saved lines - public List curveArr = new List(); - - public List lineArr = new List(); - - private string filename = ""; - - private double maxFieldX, maxFieldY, minFieldX, minFieldY, fieldCenterX, fieldCenterY, maxFieldDistance, gain = 1; - private Point fixPt; - - private bool isA = true, isB = false; - public double low = 0, high = 1; - private int A, B, C, D, E, start=99999, end=99999; - //list of coordinates of boundary line - public List turnLine = new List(); - - private vec3[] arr; - - //the click point in ogl - public vec3 pint = new vec3(0.0, 1.0, 0.0); - - public vec2 lastABLineP2 = new vec2(0.0, 1.0); - - public FormABPick(Form callingForm) - { - //get copy of the calling main form - mf = callingForm as FormGPS; - - InitializeComponent(); - - lblLineName.Text = gStr.gsEnterLineName; - } - - private void FormABPick_Load(object sender, EventArgs e) - { - - int cnt = mf.bnd.bndArr[0].bndLine.Count; - arr = new vec3[cnt*2]; - - for (int i = 0; i < cnt; i++) - { - arr[i].easting = mf.bnd.bndArr[0].bndLine[i].easting; - arr[i].northing = mf.bnd.bndArr[0].bndLine[i].northing; - arr[i].heading = mf.bnd.bndArr[0].bndLine[i].northing; - } - - for (int i = cnt; i < cnt*2; i++) - { - arr[i].easting = mf.bnd.bndArr[0].bndLine[i-cnt].easting; - arr[i].northing = mf.bnd.bndArr[0].bndLine[i-cnt].northing; - arr[i].heading = mf.bnd.bndArr[0].bndLine[i-cnt].heading; - } - - curveArr.Clear(); - LoadCurves(); - LoadLines(); - - } - - private void oglSelf_MouseDown(object sender, MouseEventArgs e) - { - start = 99999; end = 99999; - - btnMakeABLine.Enabled = false; - btnMakeCurve.Enabled = false; - tboxABLineSaveName.Enabled = false; - btnSaveABLine.Enabled = false; - - Point pt = oglSelf.PointToClient(Cursor.Position); - - fixPt.X = pt.X - 350; - fixPt.Y = (700 - pt.Y - 350); - vec3 plotPt = new vec3 - { - //convert screen coordinates to field coordinates - easting = ((double)fixPt.X) * (double)maxFieldDistance / 632 * gain, - northing = ((double)fixPt.Y) * (double)maxFieldDistance / 632.0 * gain, - heading = 0 - }; - - plotPt.easting += fieldCenterX; - plotPt.northing += fieldCenterY; - - pint.easting = plotPt.easting; - pint.northing = plotPt.northing; - - if (isA) - { - double minDistA = 1000000, minDistB = 1000000; - - int ptCount = arr.Length; - - if (ptCount > 0) - { - //find the closest 2 points to current fix - for (int t = 0; t < ptCount; t++) - { - double dist = ((pint.easting - arr[t].easting) * (pint.easting - arr[t].easting)) - + ((pint.northing - arr[t].northing) * (pint.northing - arr[t].northing)); - if (dist < minDistA) - { - minDistB = minDistA; - B = A; - minDistA = dist; - A = t; - } - else if (dist < minDistB) - { - minDistB = dist; - B = t; - } - } - - //just need to make sure the points continue ascending or heading switches all over the place - if (A > B) { E = A; A = B; B = E; } - - start = A; - } - - isA = false; - isB = true; - } - - - else if (isB) - { - double minDistA = 1000000, minDistB = 1000000; - - int ptCount = arr.Length; - - if (ptCount > 0) - { - //find the closest 2 points to current fix - for (int t = 0; t < ptCount; t++) - { - double dist = ((pint.easting - arr[t].easting) * (pint.easting - arr[t].easting)) - + ((pint.northing - arr[t].northing) * (pint.northing - arr[t].northing)); - if (dist < minDistA) - { - minDistB = minDistA; - D = C; - minDistA = dist; - C = t; - } - else if (dist < minDistB) - { - minDistB = dist; - D = t; - } - } - - //just need to make sure the points continue ascending or heading switches all over the place - if (C > D) { E = C; C = D; D = E; } - } - - isB = false; - isA = true; - int[] dubs = new int[4]; - - int A1 = Math.Abs(A-C); - int B1 = Math.Abs(A-D); - int C1 = Math.Abs(B-C); - int D1 = Math.Abs(B-D); - - if (A1 <= B1 && A1 <= C1 && A1 <= D1) { start = A; end = C; } - else if (B1 <= A1 && B1 <= C1 && B1 <= D1) { start = A; end = D; } - else if (C1 <= B1 && C1 <= A1 && C1 <= D1) { start = B; end = C; } - else if (D1 <= B1 && D1 <= C1 && D1 <= A1) { start = B; end = D; } - - - if (start > end) { E = start; start = end; end = E; } - - btnMakeABLine.Enabled = true; - btnMakeCurve.Enabled = true; - } - } - - private void BtnHelp_Click(object sender, EventArgs e) - { - MessageBox.Show("Click 2 Points on the boundary then Choose either AB Line or Curve \r\n " + - "Enter a name and Click Save if Required.\r\n" + - " Click new points make more lines"); - } - - - - private void LoadLines() - { - //make sure at least a global blank AB Line file exists - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); - - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - filename = directoryName + "\\ABLines.txt"; - - - if (!File.Exists(filename)) - { - using (StreamWriter writer = new StreamWriter(filename)) - { - } - } - - if (!File.Exists(filename)) - { - mf.TimedMessageBox(2000, gStr.gsFileError, gStr.gsMissingABLinesFile); - } - else - { - using (StreamReader reader = new StreamReader(filename)) - { - try - { - string line; - - //read all the lines - for (int num = 0; !reader.EndOfStream; num++) - { - lineArr.Add(new ABLinePick()); - - line = reader.ReadLine(); - string[] words = line.Split(','); - - lineArr[num].Name = words[0]; - - lineArr[num].heading = glm.toRadians(double.Parse(words[1], CultureInfo.InvariantCulture)); - lineArr[num].origin.easting = double.Parse(words[2], CultureInfo.InvariantCulture); - lineArr[num].origin.northing = double.Parse(words[3], CultureInfo.InvariantCulture); - - lineArr[num].ref1.easting = lineArr[num].origin.easting - (Math.Sin(lineArr[num].heading) * 2000.0); - lineArr[num].ref1.northing = lineArr[num].origin.northing - (Math.Cos(lineArr[num].heading) * 2000.0); - - lineArr[num].ref2.easting = lineArr[num].origin.easting + (Math.Sin(lineArr[num].heading) * 2000.0); - lineArr[num].ref2.northing = lineArr[num].origin.northing + (Math.Cos(lineArr[num].heading) * 2000.0); - } - } - catch (Exception er) - { - var form = new FormTimedMessage(2000, gStr.gsABLineFileIsCorrupt, "Please delete it!!!"); - form.Show(); - mf.WriteErrorLog("FieldOpen, Loading ABLine, Corrupt ABLine File" + er); - } - } - } - } - - private void LoadCurves() - { - //get the directory and make sure it exists, create if not - string dirField = mf.fieldsDirectory + mf.currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); - - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - - filename = directoryName + "\\CurveLines.txt"; - - if (!File.Exists(filename)) - { - using (StreamWriter writer = new StreamWriter(filename)) - { - writer.WriteLine("$CurveLines"); - } - } - - //get the file of previous AB Lines - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } - if (!File.Exists(filename)) - { - mf.TimedMessageBox(2000, gStr.gsFileError, gStr.gsMissingABCurveFile); - } - else - { - using (StreamReader reader = new StreamReader(filename)) - { - try - { - string line; - int num = 0; - Random rnd = new Random(); - - //read header $CurveLine - line = reader.ReadLine(); - - while (!reader.EndOfStream) - { - curveArr.Add(new CurveLinePick()); - - //read header $CurveLine - curveArr[num].Name = reader.ReadLine(); - // get the average heading - line = reader.ReadLine(); - curveArr[num].aveHeading = double.Parse(line, CultureInfo.InvariantCulture); - - line = reader.ReadLine(); - int numPoints = int.Parse(line); - - if (numPoints > 1) - { - curveArr[num].curvePts?.Clear(); - - for (int i = 0; i < numPoints; i++) - { - line = reader.ReadLine(); - string[] words = line.Split(','); - vec3 vecPt = new vec3(double.Parse(words[0], CultureInfo.InvariantCulture), - double.Parse(words[1], CultureInfo.InvariantCulture), - double.Parse(words[2], CultureInfo.InvariantCulture)); - curveArr[num].curvePts.Add(vecPt); - } - num++; - } - - else - { - if (curveArr.Count > 0) - { - curveArr.RemoveAt(num); - } - } - } - } - catch (Exception er) - { - var form = new FormTimedMessage(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(); - mf.WriteErrorLog("Load Curve Line" + er.ToString()); - } - } - } - } - - private void btnExit_Click(object sender, EventArgs e) - { - Close(); - } - - private void oglSelf_Paint(object sender, PaintEventArgs e) - { - oglSelf.MakeCurrent(); - - GL.Clear(ClearBufferMask.DepthBufferBit | ClearBufferMask.ColorBufferBit); - GL.LoadIdentity(); // Reset The View - - CalculateMinMax(); - - //back the camera up - GL.Translate(0, 0, -maxFieldDistance * gain); - - //translate to that spot in the world - GL.Translate(-fieldCenterX, -fieldCenterY, 0); - - GL.Color3(0, 0.6, 0.4); - - //draw the ABLine - //if (mf.ABLine.isABLineLoaded) - //{ - // //Draw reference AB line ref - // GL.LineWidth(2); - // GL.Enable(EnableCap.LineStipple); - // GL.LineStipple(1, 0x00F0); - // GL.Begin(PrimitiveType.Lines); - // GL.Color3(0.9f, 0.915f, 0.17f); - // GL.Vertex3(mf.ABLine.refABLineP1.easting, mf.ABLine.refABLineP1.northing, 0); - // GL.Color3(0.92f, 0.95f, 0.17f); - // GL.Vertex3(mf.ABLine.refABLineP2.easting, mf.ABLine.refABLineP2.northing, 0); - // GL.End(); - // GL.Disable(EnableCap.LineStipple); - - //} - - //if (mf.curve.isCurveSet) - //{ - // int ptCount = mf.curve.refList.Count; - // if (ptCount > 0) - // { - // GL.LineWidth(2); - // GL.Color3(0.30f, 0.7692f, 0.760f); - // GL.Begin(PrimitiveType.LineStrip); - // for (int h = 0; h < ptCount; h++) GL.Vertex3(mf.curve.refList[h].easting, mf.curve.refList[h].northing, 0); - // GL.End(); - // } - //} - - int numLines = lineArr.Count; - - if (numLines > 2) - { - GL.Enable(EnableCap.LineStipple); - GL.LineStipple(1, 0x00F0); - GL.Color3(1.0f, 0.0f, 0.0f); - - for (int i = 2; i < numLines; i++) - { - - GL.LineWidth(4); - GL.Begin(PrimitiveType.Lines); - - foreach (var item in lineArr) - { - GL.Vertex3(item.ref1.easting, item.ref1.northing, 0); - GL.Vertex3(item.ref2.easting, item.ref2.northing, 0); - - } - GL.End(); - } - - GL.Disable(EnableCap.LineStipple); - } - - - - int numCurves = curveArr.Count; - - if (numCurves > 0 ) - { - for (int i = 0; i < numCurves; i++) - { - - GL.LineWidth(4); - GL.Color3(0,1,0); - GL.Begin(PrimitiveType.LineStrip); - foreach (var item in curveArr[i].curvePts) - { - GL.Vertex3(item.easting, item.northing, 0); - - } - GL.End(); - } - } - - //draw all the boundaries - mf.bnd.DrawBoundaryLines(); - DrawABTouchLine(); - - GL.Flush(); - oglSelf.SwapBuffers(); - } - - - public void DrawABTouchLine() - { - GL.Color3(0.65, 0.650, 0.0); - GL.PointSize(8); - GL.Begin(PrimitiveType.Points); - - GL.Color3(0.95, 0.0, 0.0); - if (start != 99999) GL.Vertex3(arr[A].easting, arr[A].northing, 0); - - GL.Color3(0.0, 096.0, 0.0); - if (end != 99999) GL.Vertex3(arr[C].easting, arr[C].northing, 0); - GL.End(); - - if (end == 99999) return; - - GL.LineWidth(4.0f); - GL.Begin(PrimitiveType.LineStrip); - ////draw the turn line oject - //int i = 0; - int ptCount = arr.Length; - - if (ptCount < 1) return; - - int h = (int)(low * ptCount); - ptCount = (int)(high * ptCount); - - for (int c = start; c < end; c++) GL.Vertex3(arr[c].easting, arr[c].northing, 0); - - GL.End(); - - - GL.LineWidth(2.0f); - GL.Begin(PrimitiveType.Lines); - GL.Color3(0.95, 0.50, 0.0); - if (start != 99999) GL.Vertex3(arr[A].easting, arr[A].northing, 0); - - GL.Color3(0.0, 0.460, 0.90); - if (end != 99999) GL.Vertex3(arr[C].easting, arr[C].northing, 0); - GL.End(); - } - - private void timer1_Tick(object sender, EventArgs e) - { - oglSelf.Refresh(); - - //if (start == 99999 || end == 99999) - //{ - // btnMakeABLine.Enabled = false; - // btnMakeCurve.Enabled = false; - //} - - //else - //{ - // btnMakeABLine.Enabled = true; - // btnMakeCurve.Enabled = true; - //} - - //if (String.IsNullOrEmpty(tboxABLineSaveName.Text)) btnSaveABLine.Enabled = false; - //else btnSaveABLine.Enabled = true; - //if (String.IsNullOrEmpty(tboxCurveSaveName.Text)) btnSaveABCurve.Enabled = false; - //else btnSaveABCurve.Enabled = true; - } - - private void oglSelf_Resize(object sender, EventArgs e) - { - oglSelf.MakeCurrent(); - GL.MatrixMode(MatrixMode.Projection); - GL.LoadIdentity(); - - //58 degrees view - Matrix4 mat = Matrix4.CreatePerspectiveFieldOfView(1.01f, 1.0f, 1.0f, 20000); - GL.LoadMatrix(ref mat); - - GL.MatrixMode(MatrixMode.Modelview); - } - - private void oglSelf_Load(object sender, EventArgs e) - { - oglSelf.MakeCurrent(); - GL.Enable(EnableCap.CullFace); - GL.CullFace(CullFaceMode.Back); - GL.ClearColor(0.23122f, 0.2318f, 0.2315f, 1.0f); - } - - //determine mins maxs of patches and whole field. - private void CalculateMinMax() - { - minFieldX = 9999999; minFieldY = 9999999; - maxFieldX = -9999999; maxFieldY = -9999999; - - //draw patches j= # of sections - for (int j = 0; j < mf.vehicle.numSuperSection; j++) - { - //every time the section turns off and on is a new patch - int patchCount = mf.section[j].patchList.Count; - - if (patchCount > 0) - { - //for every new chunk of patch - foreach (var triList in mf.section[j].patchList) - { - int count2 = triList.Count; - for (int i = 0; i < count2; i += 3) - { - double x = triList[i].easting; - double y = triList[i].northing; - - //also tally the max/min of field x and z - if (minFieldX > x) minFieldX = x; - if (maxFieldX < x) maxFieldX = x; - if (minFieldY > y) minFieldY = y; - if (maxFieldY < y) maxFieldY = y; - } - } - } - - //min max of the boundary - if (mf.bnd.bndArr[0].isSet) - { - int bndCnt = mf.bnd.bndArr[0].bndLine.Count; - for (int i = 0; i < bndCnt; i++) - { - double x = mf.bnd.bndArr[0].bndLine[i].easting; - double y = mf.bnd.bndArr[0].bndLine[i].northing; - - //also tally the max/min of field x and z - if (minFieldX > x) minFieldX = x; - if (maxFieldX < x) maxFieldX = x; - if (minFieldY > y) minFieldY = y; - if (maxFieldY < y) maxFieldY = y; - } - } - - if (maxFieldX == -9999999 || minFieldX == 9999999 || maxFieldY == -9999999 || minFieldY == 9999999) - { - maxFieldX = 0; minFieldX = 0; maxFieldY = 0; minFieldY = 0; - } - else - { - //the largest distancew across field - double dist = Math.Abs(minFieldX - maxFieldX); - double dist2 = Math.Abs(minFieldY - maxFieldY); - - if (dist > dist2) maxFieldDistance = dist; - else maxFieldDistance = dist2; - - if (maxFieldDistance < 100) maxFieldDistance = 100; - if (maxFieldDistance > 19900) maxFieldDistance = 19900; - //lblMax.Text = ((int)maxFieldDistance).ToString(); - - fieldCenterX = (maxFieldX + minFieldX) / 2.0; - fieldCenterY = (maxFieldY + minFieldY) / 2.0; - } - - //if (isMetric) - //{ - // lblFieldWidthEastWest.Text = Math.Abs((maxFieldX - minFieldX)).ToString("N0") + " m"; - // lblFieldWidthNorthSouth.Text = Math.Abs((maxFieldY - minFieldY)).ToString("N0") + " m"; - //} - //else - //{ - // lblFieldWidthEastWest.Text = Math.Abs((maxFieldX - minFieldX) * glm.m2ft).ToString("N0") + " ft"; - // lblFieldWidthNorthSouth.Text = Math.Abs((maxFieldY - minFieldY) * glm.m2ft).ToString("N0") + " ft"; - //} - } - } - } -} \ No newline at end of file diff --git a/SourceCode/GPS/Forms/FormABPick.resx b/SourceCode/GPS/Forms/FormABPick.resx deleted file mode 100644 index 3a9e5f0a3..000000000 --- a/SourceCode/GPS/Forms/FormABPick.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - - 25 - - \ No newline at end of file diff --git a/SourceCode/GPS/Forms/FormFieldDir.cs b/SourceCode/GPS/Forms/FormFieldDir.cs index 9a9321396..34b914c58 100644 --- a/SourceCode/GPS/Forms/FormFieldDir.cs +++ b/SourceCode/GPS/Forms/FormFieldDir.cs @@ -191,8 +191,8 @@ private void btnSave_Click(object sender, EventArgs e) mf.FileCreateContour(); mf.FileCreateElevation(); mf.FileSaveFlags(); - mf.FileSaveABLine(); - mf.FileSaveCurveLine(); + //mf.FileSaveABLine(); + //mf.FileSaveCurveLine(); //mf.FileSaveHeadland(); } } diff --git a/SourceCode/GPS/Forms/FormGPS.Designer.cs b/SourceCode/GPS/Forms/FormGPS.Designer.cs index a4c6fd56d..e9f3d9499 100644 --- a/SourceCode/GPS/Forms/FormGPS.Designer.cs +++ b/SourceCode/GPS/Forms/FormGPS.Designer.cs @@ -35,6 +35,7 @@ private void InitializeComponent() this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); this.googleEarthOpenGLContextMenu = new System.Windows.Forms.ToolStripMenuItem(); this.txtDistanceOffABLine = new System.Windows.Forms.TextBox(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); this.menustripLanguage = new System.Windows.Forms.ToolStripMenuItem(); @@ -76,7 +77,6 @@ private void InitializeComponent() this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); this.simulatorOnToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.tmrWatchdog = new System.Windows.Forms.Timer(this.components); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripBatman = new System.Windows.Forms.ToolStripDropDownButton(); @@ -152,8 +152,9 @@ private void InitializeComponent() this.btnFileExplorer = new System.Windows.Forms.Button(); this.btnPerimeter = new System.Windows.Forms.Button(); this.DataPage = new System.Windows.Forms.TabPage(); + this.label17 = new System.Windows.Forms.Label(); + this.lblMoveDistance = new System.Windows.Forms.Label(); this.lblTimeRemaining = new System.Windows.Forms.Label(); - this.btnTinyAutoSteerConfig = new System.Windows.Forms.Button(); this.pbarFieldAreaRemainPercent = new System.Windows.Forms.ProgressBar(); this.label13 = new System.Windows.Forms.Label(); this.label12 = new System.Windows.Forms.Label(); @@ -189,12 +190,14 @@ private void InitializeComponent() this.label10 = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label(); this.label8 = new System.Windows.Forms.Label(); - this.btnGPSData = new System.Windows.Forms.Button(); this.lblPercentRemaining = new System.Windows.Forms.Label(); + this.btnTinyAutoSteerConfig = new System.Windows.Forms.Button(); + this.btnGPSData = new System.Windows.Forms.Button(); this.cboxpRowWidth = new System.Windows.Forms.ComboBox(); this.oglZoom = new OpenTK.GLControl(); - this.lblFixQuality = new System.Windows.Forms.Label(); this.panelBatman = new System.Windows.Forms.Panel(); + this.label11 = new System.Windows.Forms.Label(); + this.lblMoveDistanceBatman = new System.Windows.Forms.Label(); this.label26 = new System.Windows.Forms.Label(); this.pbarUDPSmall = new System.Windows.Forms.ProgressBar(); this.pbarSteerSmall = new System.Windows.Forms.ProgressBar(); @@ -246,8 +249,8 @@ private void InitializeComponent() this.oglMain = new OpenTK.GLControl(); this.oglBack = new OpenTK.GLControl(); this.lblHz = new System.Windows.Forms.Label(); + this.btnCycleLines = new System.Windows.Forms.Button(); this.btnMakeLinesFromBoundary = new System.Windows.Forms.Button(); - this.btnZoomExtents = new System.Windows.Forms.Button(); this.btnZoomIn = new ProXoft.WinForms.RepeatButton(); this.btnZoomOut = new ProXoft.WinForms.RepeatButton(); this.btnSwapDirection = new System.Windows.Forms.Button(); @@ -323,7 +326,7 @@ private void InitializeComponent() this.txtDistanceOffABLine.BorderStyle = System.Windows.Forms.BorderStyle.None; this.txtDistanceOffABLine.Font = new System.Drawing.Font("Tahoma", 21.75F); this.txtDistanceOffABLine.ForeColor = System.Drawing.Color.Green; - this.txtDistanceOffABLine.Location = new System.Drawing.Point(579, 3); + this.txtDistanceOffABLine.Location = new System.Drawing.Point(616, 3); this.txtDistanceOffABLine.Margin = new System.Windows.Forms.Padding(0, 0, 0, 4); this.txtDistanceOffABLine.Name = "txtDistanceOffABLine"; this.txtDistanceOffABLine.ReadOnly = true; @@ -332,6 +335,21 @@ private void InitializeComponent() this.txtDistanceOffABLine.Text = "00000"; this.txtDistanceOffABLine.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; // + // menuStrip1 + // + this.menuStrip1.AutoSize = false; + this.menuStrip1.BackColor = System.Drawing.SystemColors.ScrollBar; + this.menuStrip1.Font = new System.Drawing.Font("Tahoma", 22F); + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem, + this.settingsToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Padding = new System.Windows.Forms.Padding(0); + this.menuStrip1.Size = new System.Drawing.Size(1091, 40); + this.menuStrip1.TabIndex = 49; + this.menuStrip1.Text = "menuStrip1"; + // // fileToolStripMenuItem // this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -348,10 +366,11 @@ private void InitializeComponent() this.fieldToolStripMenuItem, this.aboutToolStripMenuItem, this.shortcutKeysToolStripMenuItem}); + this.fileToolStripMenuItem.Image = global::AgOpenGPS.Properties.Resources.fileMenu; + this.fileToolStripMenuItem.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; this.fileToolStripMenuItem.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.fileToolStripMenuItem.Size = new System.Drawing.Size(69, 40); - this.fileToolStripMenuItem.Text = "File"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(108, 40); // // toolStripSeparator9 // @@ -516,10 +535,11 @@ private void InitializeComponent() this.toolStripSeparator6, this.simulatorOnToolStripMenuItem, this.toolStripSeparator7}); + this.settingsToolStripMenuItem.Image = global::AgOpenGPS.Properties.Resources.displayMenu; + this.settingsToolStripMenuItem.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; this.settingsToolStripMenuItem.Padding = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.settingsToolStripMenuItem.Size = new System.Drawing.Size(118, 40); - this.settingsToolStripMenuItem.Text = "Display"; + this.settingsToolStripMenuItem.Size = new System.Drawing.Size(108, 40); // // toolStripSeparator1 // @@ -664,21 +684,6 @@ private void InitializeComponent() this.toolStripSeparator7.Name = "toolStripSeparator7"; this.toolStripSeparator7.Size = new System.Drawing.Size(260, 6); // - // menuStrip1 - // - this.menuStrip1.AutoSize = false; - this.menuStrip1.BackColor = System.Drawing.SystemColors.ScrollBar; - this.menuStrip1.Font = new System.Drawing.Font("Tahoma", 22F); - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.settingsToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Padding = new System.Windows.Forms.Padding(0); - this.menuStrip1.Size = new System.Drawing.Size(1017, 40); - this.menuStrip1.TabIndex = 49; - this.menuStrip1.Text = "menuStrip1"; - // // tmrWatchdog // this.tmrWatchdog.Interval = 15; @@ -703,7 +708,7 @@ private void InitializeComponent() this.statusStrip1.Location = new System.Drawing.Point(0, 645); this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional; - this.statusStrip1.Size = new System.Drawing.Size(1017, 56); + this.statusStrip1.Size = new System.Drawing.Size(1091, 56); this.statusStrip1.TabIndex = 95; this.statusStrip1.Text = "statusStrip1"; // @@ -848,7 +853,7 @@ private void InitializeComponent() this.stripEqWidth.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.stripEqWidth.Margin = new System.Windows.Forms.Padding(0); this.stripEqWidth.Name = "stripEqWidth"; - this.stripEqWidth.Size = new System.Drawing.Size(331, 56); + this.stripEqWidth.Size = new System.Drawing.Size(270, 56); this.stripEqWidth.Spring = true; this.stripEqWidth.Text = "Width"; // @@ -1078,7 +1083,7 @@ private void InitializeComponent() this.toolstripField.Image = global::AgOpenGPS.Properties.Resources.JobActive; this.toolstripField.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolstripField.Name = "toolstripField"; - this.toolstripField.Size = new System.Drawing.Size(300, 70); + this.toolstripField.Size = new System.Drawing.Size(316, 86); this.toolstripField.Text = "Field"; this.toolstripField.Click += new System.EventHandler(this.toolstripField_Click); // @@ -1089,7 +1094,7 @@ private void InitializeComponent() this.toolstripBoundary.Image = global::AgOpenGPS.Properties.Resources.BoundaryMenu; this.toolstripBoundary.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolstripBoundary.Name = "toolstripBoundary"; - this.toolstripBoundary.Size = new System.Drawing.Size(300, 70); + this.toolstripBoundary.Size = new System.Drawing.Size(316, 86); this.toolstripBoundary.Text = "Boundary"; this.toolstripBoundary.Click += new System.EventHandler(this.toolstripBoundary_Click); // @@ -1100,17 +1105,17 @@ private void InitializeComponent() this.toolstripResetTrip.Image = global::AgOpenGPS.Properties.Resources.Cancel64; this.toolstripResetTrip.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolstripResetTrip.Name = "toolstripResetTrip"; - this.toolstripResetTrip.Size = new System.Drawing.Size(300, 70); + this.toolstripResetTrip.Size = new System.Drawing.Size(316, 86); this.toolstripResetTrip.Text = ">0< Trip"; this.toolstripResetTrip.Click += new System.EventHandler(this.toolstripResetTrip_Click_1); // // toolstripExit // this.toolstripExit.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.toolstripExit.Image = global::AgOpenGPS.Properties.Resources.Start64; + this.toolstripExit.Image = global::AgOpenGPS.Properties.Resources.SwitchOff; this.toolstripExit.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.toolstripExit.Name = "toolstripExit"; - this.toolstripExit.Size = new System.Drawing.Size(300, 70); + this.toolstripExit.Size = new System.Drawing.Size(316, 86); this.toolstripExit.Text = "Exit"; this.toolstripExit.Click += new System.EventHandler(this.ToolstripExit_Click); // @@ -1154,7 +1159,7 @@ private void InitializeComponent() this.lblSpeed.BackColor = System.Drawing.Color.Transparent; this.lblSpeed.Font = new System.Drawing.Font("Tahoma", 20F, System.Drawing.FontStyle.Bold); this.lblSpeed.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblSpeed.Location = new System.Drawing.Point(777, 5); + this.lblSpeed.Location = new System.Drawing.Point(851, 5); this.lblSpeed.Name = "lblSpeed"; this.lblSpeed.Size = new System.Drawing.Size(87, 31); this.lblSpeed.TabIndex = 116; @@ -1301,7 +1306,7 @@ private void InitializeComponent() this.lblSpeedUnits.BackColor = System.Drawing.SystemColors.ScrollBar; this.lblSpeedUnits.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Bold); this.lblSpeedUnits.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblSpeedUnits.Location = new System.Drawing.Point(863, 13); + this.lblSpeedUnits.Location = new System.Drawing.Point(937, 13); this.lblSpeedUnits.Name = "lblSpeedUnits"; this.lblSpeedUnits.Size = new System.Drawing.Size(38, 17); this.lblSpeedUnits.TabIndex = 139; @@ -1314,7 +1319,7 @@ private void InitializeComponent() this.lblHeading.BackColor = System.Drawing.Color.Transparent; this.lblHeading.Font = new System.Drawing.Font("Tahoma", 20.25F, System.Drawing.FontStyle.Bold); this.lblHeading.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblHeading.Location = new System.Drawing.Point(906, 5); + this.lblHeading.Location = new System.Drawing.Point(980, 5); this.lblHeading.Name = "lblHeading"; this.lblHeading.Size = new System.Drawing.Size(109, 31); this.lblHeading.TabIndex = 117; @@ -1391,10 +1396,10 @@ private void InitializeComponent() this.tabControl1.Font = new System.Drawing.Font("Tahoma", 20.25F); this.tabControl1.ImageList = this.imageList1; this.tabControl1.ItemSize = new System.Drawing.Size(110, 68); - this.tabControl1.Location = new System.Drawing.Point(-3, 41); + this.tabControl1.Location = new System.Drawing.Point(-3, 47); this.tabControl1.Name = "tabControl1"; this.tabControl1.SelectedIndex = 0; - this.tabControl1.Size = new System.Drawing.Size(340, 601); + this.tabControl1.Size = new System.Drawing.Size(340, 595); this.tabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; this.tabControl1.TabIndex = 150; // @@ -1409,7 +1414,7 @@ private void InitializeComponent() this.autoPage4.ImageIndex = 3; this.autoPage4.Location = new System.Drawing.Point(4, 72); this.autoPage4.Name = "autoPage4"; - this.autoPage4.Size = new System.Drawing.Size(332, 525); + this.autoPage4.Size = new System.Drawing.Size(332, 519); this.autoPage4.TabIndex = 4; // // nudElevation @@ -1518,7 +1523,7 @@ private void InitializeComponent() this.configPage1.Location = new System.Drawing.Point(4, 72); this.configPage1.Name = "configPage1"; this.configPage1.Padding = new System.Windows.Forms.Padding(3); - this.configPage1.Size = new System.Drawing.Size(332, 525); + this.configPage1.Size = new System.Drawing.Size(332, 519); this.configPage1.TabIndex = 0; // // btnFixOffset @@ -1626,8 +1631,9 @@ private void InitializeComponent() // DataPage // this.DataPage.BackColor = System.Drawing.SystemColors.ControlLight; + this.DataPage.Controls.Add(this.label17); + this.DataPage.Controls.Add(this.lblMoveDistance); this.DataPage.Controls.Add(this.lblTimeRemaining); - this.DataPage.Controls.Add(this.btnTinyAutoSteerConfig); this.DataPage.Controls.Add(this.pbarFieldAreaRemainPercent); this.DataPage.Controls.Add(this.label13); this.DataPage.Controls.Add(this.label12); @@ -1667,49 +1673,55 @@ private void InitializeComponent() this.DataPage.Controls.Add(this.label8); this.DataPage.Controls.Add(this.lblEasting); this.DataPage.Controls.Add(this.lblNorthing); - this.DataPage.Controls.Add(this.btnGPSData); this.DataPage.Controls.Add(this.lblPercentRemaining); + this.DataPage.Controls.Add(this.btnTinyAutoSteerConfig); + this.DataPage.Controls.Add(this.btnGPSData); this.DataPage.Cursor = System.Windows.Forms.Cursors.Arrow; this.DataPage.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.DataPage.ImageIndex = 1; this.DataPage.Location = new System.Drawing.Point(4, 72); this.DataPage.Name = "DataPage"; - this.DataPage.Size = new System.Drawing.Size(332, 525); + this.DataPage.Size = new System.Drawing.Size(332, 519); this.DataPage.TabIndex = 3; // + // label17 + // + this.label17.AutoSize = true; + this.label17.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.label17.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label17.Location = new System.Drawing.Point(180, 322); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(32, 19); + this.label17.TabIndex = 317; + this.label17.Text = "cm"; + // + // lblMoveDistance + // + this.lblMoveDistance.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblMoveDistance.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.lblMoveDistance.Location = new System.Drawing.Point(106, 319); + this.lblMoveDistance.Name = "lblMoveDistance"; + this.lblMoveDistance.Size = new System.Drawing.Size(74, 23); + this.lblMoveDistance.TabIndex = 314; + this.lblMoveDistance.Text = "0.0"; + this.lblMoveDistance.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // // lblTimeRemaining // this.lblTimeRemaining.AutoSize = true; this.lblTimeRemaining.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); this.lblTimeRemaining.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblTimeRemaining.Location = new System.Drawing.Point(4, 426); + this.lblTimeRemaining.Location = new System.Drawing.Point(4, 417); this.lblTimeRemaining.Name = "lblTimeRemaining"; this.lblTimeRemaining.Size = new System.Drawing.Size(106, 19); this.lblTimeRemaining.TabIndex = 313; this.lblTimeRemaining.Text = "13.56 Hours"; // - // btnTinyAutoSteerConfig - // - this.btnTinyAutoSteerConfig.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnTinyAutoSteerConfig.BackColor = System.Drawing.Color.Lavender; - this.btnTinyAutoSteerConfig.BackgroundImage = global::AgOpenGPS.Properties.Resources.AutoSteerConf; - this.btnTinyAutoSteerConfig.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.btnTinyAutoSteerConfig.FlatAppearance.BorderColor = System.Drawing.SystemColors.HotTrack; - this.btnTinyAutoSteerConfig.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnTinyAutoSteerConfig.Font = new System.Drawing.Font("Tahoma", 14.25F); - this.btnTinyAutoSteerConfig.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnTinyAutoSteerConfig.Location = new System.Drawing.Point(4, 461); - this.btnTinyAutoSteerConfig.Name = "btnTinyAutoSteerConfig"; - this.btnTinyAutoSteerConfig.Size = new System.Drawing.Size(70, 60); - this.btnTinyAutoSteerConfig.TabIndex = 310; - this.btnTinyAutoSteerConfig.UseVisualStyleBackColor = false; - this.btnTinyAutoSteerConfig.Click += new System.EventHandler(this.BtnTinyAutoSteerConfig_Click); - // // pbarFieldAreaRemainPercent // this.pbarFieldAreaRemainPercent.BackColor = System.Drawing.Color.Maroon; this.pbarFieldAreaRemainPercent.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.pbarFieldAreaRemainPercent.Location = new System.Drawing.Point(6, 447); + this.pbarFieldAreaRemainPercent.Location = new System.Drawing.Point(6, 438); this.pbarFieldAreaRemainPercent.Name = "pbarFieldAreaRemainPercent"; this.pbarFieldAreaRemainPercent.Size = new System.Drawing.Size(322, 5); this.pbarFieldAreaRemainPercent.Step = 1; @@ -1721,7 +1733,7 @@ private void InitializeComponent() this.label13.AutoSize = true; this.label13.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label13.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label13.Location = new System.Drawing.Point(150, 483); + this.label13.Location = new System.Drawing.Point(150, 474); this.label13.Name = "label13"; this.label13.Size = new System.Drawing.Size(34, 13); this.label13.TabIndex = 309; @@ -1732,7 +1744,7 @@ private void InitializeComponent() this.label12.AutoSize = true; this.label12.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label12.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label12.Location = new System.Drawing.Point(157, 505); + this.label12.Location = new System.Drawing.Point(157, 496); this.label12.Name = "label12"; this.label12.Size = new System.Drawing.Size(27, 13); this.label12.TabIndex = 308; @@ -1743,7 +1755,7 @@ private void InitializeComponent() this.label7.AutoSize = true; this.label7.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label7.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label7.Location = new System.Drawing.Point(151, 460); + this.label7.Location = new System.Drawing.Point(151, 451); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(33, 13); this.label7.TabIndex = 307; @@ -1754,7 +1766,7 @@ private void InitializeComponent() this.pbarUDPComm.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.pbarUDPComm.BackColor = System.Drawing.Color.Maroon; this.pbarUDPComm.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.pbarUDPComm.Location = new System.Drawing.Point(187, 506); + this.pbarUDPComm.Location = new System.Drawing.Point(187, 491); this.pbarUDPComm.Name = "pbarUDPComm"; this.pbarUDPComm.Size = new System.Drawing.Size(60, 10); this.pbarUDPComm.TabIndex = 306; @@ -1764,7 +1776,7 @@ private void InitializeComponent() this.pbarAutoSteerComm.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.pbarAutoSteerComm.BackColor = System.Drawing.Color.Maroon; this.pbarAutoSteerComm.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.pbarAutoSteerComm.Location = new System.Drawing.Point(187, 462); + this.pbarAutoSteerComm.Location = new System.Drawing.Point(187, 447); this.pbarAutoSteerComm.Name = "pbarAutoSteerComm"; this.pbarAutoSteerComm.Size = new System.Drawing.Size(60, 10); this.pbarAutoSteerComm.TabIndex = 305; @@ -1774,7 +1786,7 @@ private void InitializeComponent() this.pbarRelayComm.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.pbarRelayComm.BackColor = System.Drawing.Color.Maroon; this.pbarRelayComm.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.pbarRelayComm.Location = new System.Drawing.Point(187, 484); + this.pbarRelayComm.Location = new System.Drawing.Point(187, 469); this.pbarRelayComm.Name = "pbarRelayComm"; this.pbarRelayComm.Size = new System.Drawing.Size(60, 10); this.pbarRelayComm.TabIndex = 304; @@ -1793,7 +1805,7 @@ private void InitializeComponent() // this.lblActualSteerAngle2.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold); this.lblActualSteerAngle2.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblActualSteerAngle2.Location = new System.Drawing.Point(76, 494); + this.lblActualSteerAngle2.Location = new System.Drawing.Point(76, 485); this.lblActualSteerAngle2.Margin = new System.Windows.Forms.Padding(0); this.lblActualSteerAngle2.Name = "lblActualSteerAngle2"; this.lblActualSteerAngle2.Size = new System.Drawing.Size(69, 23); @@ -1805,7 +1817,7 @@ private void InitializeComponent() // this.lblSetpointSteerAngle2.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold); this.lblSetpointSteerAngle2.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblSetpointSteerAngle2.Location = new System.Drawing.Point(76, 463); + this.lblSetpointSteerAngle2.Location = new System.Drawing.Point(76, 454); this.lblSetpointSteerAngle2.Margin = new System.Windows.Forms.Padding(0); this.lblSetpointSteerAngle2.Name = "lblSetpointSteerAngle2"; this.lblSetpointSteerAngle2.Size = new System.Drawing.Size(69, 23); @@ -2114,6 +2126,34 @@ private void InitializeComponent() this.label8.TabIndex = 2; this.label8.Text = "GPS:"; // + // lblPercentRemaining + // + this.lblPercentRemaining.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.lblPercentRemaining.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.lblPercentRemaining.Location = new System.Drawing.Point(240, 417); + this.lblPercentRemaining.Name = "lblPercentRemaining"; + this.lblPercentRemaining.Size = new System.Drawing.Size(83, 19); + this.lblPercentRemaining.TabIndex = 312; + this.lblPercentRemaining.Text = "55.6885"; + this.lblPercentRemaining.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // btnTinyAutoSteerConfig + // + this.btnTinyAutoSteerConfig.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnTinyAutoSteerConfig.BackColor = System.Drawing.Color.Lavender; + this.btnTinyAutoSteerConfig.BackgroundImage = global::AgOpenGPS.Properties.Resources.AutoSteerConf; + this.btnTinyAutoSteerConfig.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.btnTinyAutoSteerConfig.FlatAppearance.BorderColor = System.Drawing.SystemColors.HotTrack; + this.btnTinyAutoSteerConfig.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnTinyAutoSteerConfig.Font = new System.Drawing.Font("Tahoma", 14.25F); + this.btnTinyAutoSteerConfig.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.btnTinyAutoSteerConfig.Location = new System.Drawing.Point(4, 452); + this.btnTinyAutoSteerConfig.Name = "btnTinyAutoSteerConfig"; + this.btnTinyAutoSteerConfig.Size = new System.Drawing.Size(70, 60); + this.btnTinyAutoSteerConfig.TabIndex = 310; + this.btnTinyAutoSteerConfig.UseVisualStyleBackColor = false; + this.btnTinyAutoSteerConfig.Click += new System.EventHandler(this.BtnTinyAutoSteerConfig_Click); + // // btnGPSData // this.btnGPSData.BackColor = System.Drawing.Color.Lavender; @@ -2124,7 +2164,7 @@ private void InitializeComponent() this.btnGPSData.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnGPSData.ImageAlign = System.Drawing.ContentAlignment.TopCenter; this.btnGPSData.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnGPSData.Location = new System.Drawing.Point(256, 459); + this.btnGPSData.Location = new System.Drawing.Point(256, 450); this.btnGPSData.Name = "btnGPSData"; this.btnGPSData.Size = new System.Drawing.Size(72, 64); this.btnGPSData.TabIndex = 138; @@ -2132,17 +2172,6 @@ private void InitializeComponent() this.btnGPSData.UseVisualStyleBackColor = false; this.btnGPSData.Click += new System.EventHandler(this.btnGPSData_Click); // - // lblPercentRemaining - // - this.lblPercentRemaining.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); - this.lblPercentRemaining.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblPercentRemaining.Location = new System.Drawing.Point(240, 426); - this.lblPercentRemaining.Name = "lblPercentRemaining"; - this.lblPercentRemaining.Size = new System.Drawing.Size(83, 19); - this.lblPercentRemaining.TabIndex = 312; - this.lblPercentRemaining.Text = "55.6885"; - this.lblPercentRemaining.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // // cboxpRowWidth // this.cboxpRowWidth.BackColor = System.Drawing.Color.Lavender; @@ -2172,7 +2201,7 @@ private void InitializeComponent() // oglZoom // this.oglZoom.BackColor = System.Drawing.Color.Black; - this.oglZoom.Location = new System.Drawing.Point(0, 2); + this.oglZoom.Location = new System.Drawing.Point(0, 1); this.oglZoom.Margin = new System.Windows.Forms.Padding(0); this.oglZoom.Name = "oglZoom"; this.oglZoom.Size = new System.Drawing.Size(240, 240); @@ -2182,23 +2211,13 @@ private void InitializeComponent() this.oglZoom.Paint += new System.Windows.Forms.PaintEventHandler(this.oglZoom_Paint); this.oglZoom.Resize += new System.EventHandler(this.oglZoom_Resize); // - // lblFixQuality - // - this.lblFixQuality.AutoSize = true; - this.lblFixQuality.BackColor = System.Drawing.Color.Transparent; - this.lblFixQuality.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold); - this.lblFixQuality.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblFixQuality.Location = new System.Drawing.Point(365, 9); - this.lblFixQuality.Name = "lblFixQuality"; - this.lblFixQuality.Size = new System.Drawing.Size(53, 25); - this.lblFixQuality.TabIndex = 181; - this.lblFixQuality.Text = "PPS"; - // // panelBatman // this.panelBatman.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.panelBatman.BackColor = System.Drawing.SystemColors.ScrollBar; + this.panelBatman.Controls.Add(this.label11); + this.panelBatman.Controls.Add(this.lblMoveDistanceBatman); this.panelBatman.Controls.Add(this.label26); this.panelBatman.Controls.Add(this.pbarUDPSmall); this.panelBatman.Controls.Add(this.pbarSteerSmall); @@ -2233,12 +2252,34 @@ private void InitializeComponent() this.panelBatman.Controls.Add(this.label14); this.panelBatman.Controls.Add(this.label20); this.panelBatman.Controls.Add(this.label15); - this.panelBatman.Location = new System.Drawing.Point(0, 40); + this.panelBatman.Location = new System.Drawing.Point(0, 46); this.panelBatman.Name = "panelBatman"; - this.panelBatman.Size = new System.Drawing.Size(241, 600); + this.panelBatman.Size = new System.Drawing.Size(241, 592); this.panelBatman.TabIndex = 182; this.panelBatman.Visible = false; // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.label11.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label11.Location = new System.Drawing.Point(132, 428); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(32, 19); + this.label11.TabIndex = 316; + this.label11.Text = "cm"; + // + // lblMoveDistanceBatman + // + this.lblMoveDistanceBatman.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblMoveDistanceBatman.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.lblMoveDistanceBatman.Location = new System.Drawing.Point(66, 425); + this.lblMoveDistanceBatman.Name = "lblMoveDistanceBatman"; + this.lblMoveDistanceBatman.Size = new System.Drawing.Size(64, 23); + this.lblMoveDistanceBatman.TabIndex = 315; + this.lblMoveDistanceBatman.Text = "0.0"; + this.lblMoveDistanceBatman.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // // label26 // this.label26.AutoSize = true; @@ -2255,7 +2296,7 @@ private void InitializeComponent() this.pbarUDPSmall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.pbarUDPSmall.BackColor = System.Drawing.Color.Maroon; this.pbarUDPSmall.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.pbarUDPSmall.Location = new System.Drawing.Point(22, 523); + this.pbarUDPSmall.Location = new System.Drawing.Point(22, 515); this.pbarUDPSmall.Name = "pbarUDPSmall"; this.pbarUDPSmall.Size = new System.Drawing.Size(60, 10); this.pbarUDPSmall.TabIndex = 308; @@ -2265,7 +2306,7 @@ private void InitializeComponent() this.pbarSteerSmall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.pbarSteerSmall.BackColor = System.Drawing.Color.Maroon; this.pbarSteerSmall.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.pbarSteerSmall.Location = new System.Drawing.Point(22, 511); + this.pbarSteerSmall.Location = new System.Drawing.Point(22, 503); this.pbarSteerSmall.Name = "pbarSteerSmall"; this.pbarSteerSmall.Size = new System.Drawing.Size(60, 10); this.pbarSteerSmall.TabIndex = 307; @@ -2280,7 +2321,7 @@ private void InitializeComponent() this.btnSmallSnapRight.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSmallSnapRight.Font = new System.Drawing.Font("Tahoma", 14.25F); this.btnSmallSnapRight.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnSmallSnapRight.Location = new System.Drawing.Point(128, 404); + this.btnSmallSnapRight.Location = new System.Drawing.Point(128, 387); this.btnSmallSnapRight.Name = "btnSmallSnapRight"; this.btnSmallSnapRight.Size = new System.Drawing.Size(90, 35); this.btnSmallSnapRight.TabIndex = 278; @@ -2299,7 +2340,7 @@ private void InitializeComponent() this.btnSmallSnapLeft.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSmallSnapLeft.Font = new System.Drawing.Font("Tahoma", 14.25F); this.btnSmallSnapLeft.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnSmallSnapLeft.Location = new System.Drawing.Point(15, 404); + this.btnSmallSnapLeft.Location = new System.Drawing.Point(15, 387); this.btnSmallSnapLeft.Name = "btnSmallSnapLeft"; this.btnSmallSnapLeft.Size = new System.Drawing.Size(91, 35); this.btnSmallSnapLeft.TabIndex = 277; @@ -2318,7 +2359,7 @@ private void InitializeComponent() this.btnSnapRight.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSnapRight.Font = new System.Drawing.Font("Tahoma", 14.25F); this.btnSnapRight.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnSnapRight.Location = new System.Drawing.Point(128, 467); + this.btnSnapRight.Location = new System.Drawing.Point(128, 450); this.btnSnapRight.Name = "btnSnapRight"; this.btnSnapRight.Size = new System.Drawing.Size(90, 35); this.btnSnapRight.TabIndex = 276; @@ -2333,7 +2374,7 @@ private void InitializeComponent() this.lblUturnByte.AutoSize = true; this.lblUturnByte.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); this.lblUturnByte.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblUturnByte.Location = new System.Drawing.Point(150, 523); + this.lblUturnByte.Location = new System.Drawing.Point(150, 515); this.lblUturnByte.Name = "lblUturnByte"; this.lblUturnByte.Size = new System.Drawing.Size(69, 19); this.lblUturnByte.TabIndex = 272; @@ -2345,7 +2386,7 @@ private void InitializeComponent() this.label6.AutoSize = true; this.label6.Font = new System.Drawing.Font("Tahoma", 12F); this.label6.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label6.Location = new System.Drawing.Point(94, 523); + this.label6.Location = new System.Drawing.Point(94, 515); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(60, 19); this.label6.TabIndex = 275; @@ -2357,7 +2398,7 @@ private void InitializeComponent() this.lblWatch.AutoSize = true; this.lblWatch.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold); this.lblWatch.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblWatch.Location = new System.Drawing.Point(95, 549); + this.lblWatch.Location = new System.Drawing.Point(95, 541); this.lblWatch.Name = "lblWatch"; this.lblWatch.Size = new System.Drawing.Size(94, 13); this.lblWatch.TabIndex = 274; @@ -2367,7 +2408,7 @@ private void InitializeComponent() // this.btnStartStopNtrip.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.btnStartStopNtrip.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnStartStopNtrip.Location = new System.Drawing.Point(10, 537); + this.btnStartStopNtrip.Location = new System.Drawing.Point(10, 529); this.btnStartStopNtrip.Name = "btnStartStopNtrip"; this.btnStartStopNtrip.Size = new System.Drawing.Size(75, 33); this.btnStartStopNtrip.TabIndex = 250; @@ -2381,7 +2422,7 @@ private void InitializeComponent() this.lblNTRIPSeconds.AutoSize = true; this.lblNTRIPSeconds.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold); this.lblNTRIPSeconds.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblNTRIPSeconds.Location = new System.Drawing.Point(95, 571); + this.lblNTRIPSeconds.Location = new System.Drawing.Point(95, 563); this.lblNTRIPSeconds.Name = "lblNTRIPSeconds"; this.lblNTRIPSeconds.Size = new System.Drawing.Size(60, 13); this.lblNTRIPSeconds.TabIndex = 273; @@ -2397,7 +2438,7 @@ private void InitializeComponent() this.btnSnapLeft.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSnapLeft.Font = new System.Drawing.Font("Tahoma", 14.25F); this.btnSnapLeft.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnSnapLeft.Location = new System.Drawing.Point(15, 467); + this.btnSnapLeft.Location = new System.Drawing.Point(15, 450); this.btnSnapLeft.Name = "btnSnapLeft"; this.btnSnapLeft.Size = new System.Drawing.Size(91, 35); this.btnSnapLeft.TabIndex = 251; @@ -2412,7 +2453,7 @@ private void InitializeComponent() this.lblNtripBytes.AutoSize = true; this.lblNtripBytes.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold); this.lblNtripBytes.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblNtripBytes.Location = new System.Drawing.Point(7, 572); + this.lblNtripBytes.Location = new System.Drawing.Point(7, 564); this.lblNtripBytes.Name = "lblNtripBytes"; this.lblNtripBytes.Size = new System.Drawing.Size(31, 13); this.lblNtripBytes.TabIndex = 271; @@ -2423,7 +2464,7 @@ private void InitializeComponent() this.pbarNtrip.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.pbarNtrip.BackColor = System.Drawing.Color.Maroon; this.pbarNtrip.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.pbarNtrip.Location = new System.Drawing.Point(7, 589); + this.pbarNtrip.Location = new System.Drawing.Point(7, 581); this.pbarNtrip.Maximum = 256; this.pbarNtrip.Name = "pbarNtrip"; this.pbarNtrip.Size = new System.Drawing.Size(202, 8); @@ -2578,7 +2619,7 @@ private void InitializeComponent() this.label20.AutoSize = true; this.label20.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold); this.label20.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label20.Location = new System.Drawing.Point(6, 521); + this.label20.Location = new System.Drawing.Point(6, 513); this.label20.Name = "label20"; this.label20.Size = new System.Drawing.Size(15, 13); this.label20.TabIndex = 310; @@ -2590,7 +2631,7 @@ private void InitializeComponent() this.label15.AutoSize = true; this.label15.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold); this.label15.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label15.Location = new System.Drawing.Point(6, 508); + this.label15.Location = new System.Drawing.Point(6, 500); this.label15.Name = "label15"; this.label15.Size = new System.Drawing.Size(14, 13); this.label15.TabIndex = 309; @@ -2910,7 +2951,7 @@ private void InitializeComponent() this.oglMain.Location = new System.Drawing.Point(338, 41); this.oglMain.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); this.oglMain.Name = "oglMain"; - this.oglMain.Size = new System.Drawing.Size(596, 601); + this.oglMain.Size = new System.Drawing.Size(669, 601); this.oglMain.TabIndex = 180; this.oglMain.VSync = false; this.oglMain.Load += new System.EventHandler(this.oglMain_Load); @@ -2922,7 +2963,7 @@ private void InitializeComponent() // this.oglBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.oglBack.BackColor = System.Drawing.Color.Black; - this.oglBack.Location = new System.Drawing.Point(291, 111); + this.oglBack.Location = new System.Drawing.Point(365, 111); this.oglBack.Margin = new System.Windows.Forms.Padding(2, 1, 2, 1); this.oglBack.Name = "oglBack"; this.oglBack.Size = new System.Drawing.Size(500, 500); @@ -2936,13 +2977,35 @@ private void InitializeComponent() // this.lblHz.AutoSize = true; this.lblHz.BackColor = System.Drawing.Color.Transparent; - this.lblHz.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold); + this.lblHz.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblHz.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblHz.Location = new System.Drawing.Point(273, 9); + this.lblHz.Location = new System.Drawing.Point(228, 0); this.lblHz.Name = "lblHz"; - this.lblHz.Size = new System.Drawing.Size(90, 25); + this.lblHz.Size = new System.Drawing.Size(70, 38); this.lblHz.TabIndex = 249; - this.lblHz.Text = "5 Hz 32"; + this.lblHz.Text = "5 Hz 32\r\nPPS"; + // + // btnCycleLines + // + this.btnCycleLines.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnCycleLines.BackColor = System.Drawing.Color.Lavender; + this.btnCycleLines.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.btnCycleLines.Enabled = false; + this.btnCycleLines.FlatAppearance.BorderColor = System.Drawing.Color.RoyalBlue; + this.btnCycleLines.FlatAppearance.BorderSize = 3; + this.btnCycleLines.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnCycleLines.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold); + this.btnCycleLines.Image = global::AgOpenGPS.Properties.Resources.ABLineCycle; + this.btnCycleLines.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.btnCycleLines.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.btnCycleLines.Location = new System.Drawing.Point(921, 201); + this.btnCycleLines.Name = "btnCycleLines"; + this.btnCycleLines.Size = new System.Drawing.Size(80, 80); + this.btnCycleLines.TabIndex = 251; + this.btnCycleLines.Text = "-"; + this.btnCycleLines.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnCycleLines.UseVisualStyleBackColor = false; + this.btnCycleLines.Click += new System.EventHandler(this.btnCycleLines_Click); // // btnMakeLinesFromBoundary // @@ -2956,7 +3019,7 @@ private void InitializeComponent() this.btnMakeLinesFromBoundary.Font = new System.Drawing.Font("Tahoma", 12F); this.btnMakeLinesFromBoundary.Image = global::AgOpenGPS.Properties.Resources.PointStart; this.btnMakeLinesFromBoundary.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnMakeLinesFromBoundary.Location = new System.Drawing.Point(847, 186); + this.btnMakeLinesFromBoundary.Location = new System.Drawing.Point(921, 94); this.btnMakeLinesFromBoundary.Name = "btnMakeLinesFromBoundary"; this.btnMakeLinesFromBoundary.Size = new System.Drawing.Size(80, 80); this.btnMakeLinesFromBoundary.TabIndex = 250; @@ -2964,24 +3027,6 @@ private void InitializeComponent() this.btnMakeLinesFromBoundary.UseVisualStyleBackColor = false; this.btnMakeLinesFromBoundary.Click += new System.EventHandler(this.BtnMakeLinesFromBoundary_Click); // - // btnZoomExtents - // - this.btnZoomExtents.BackColor = System.Drawing.Color.Lavender; - this.btnZoomExtents.ContextMenuStrip = this.contextMenuStripFlag; - this.btnZoomExtents.FlatAppearance.BorderColor = System.Drawing.SystemColors.HotTrack; - this.btnZoomExtents.FlatAppearance.BorderSize = 2; - this.btnZoomExtents.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnZoomExtents.Font = new System.Drawing.Font("Tahoma", 14.25F); - this.btnZoomExtents.Image = global::AgOpenGPS.Properties.Resources.Extents; - this.btnZoomExtents.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnZoomExtents.Location = new System.Drawing.Point(339, 476); - this.btnZoomExtents.Name = "btnZoomExtents"; - this.btnZoomExtents.Size = new System.Drawing.Size(64, 64); - this.btnZoomExtents.TabIndex = 248; - this.btnZoomExtents.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnZoomExtents.UseVisualStyleBackColor = false; - this.btnZoomExtents.Click += new System.EventHandler(this.btnZoomExtents_Click); - // // btnZoomIn // this.btnZoomIn.BackColor = System.Drawing.Color.Lavender; @@ -3018,7 +3063,7 @@ private void InitializeComponent() // // btnSwapDirection // - this.btnSwapDirection.BackColor = System.Drawing.Color.LightSkyBlue; + this.btnSwapDirection.BackColor = System.Drawing.Color.Indigo; this.btnSwapDirection.ContextMenuStrip = this.contextMenuStripFlag; this.btnSwapDirection.FlatAppearance.BorderColor = System.Drawing.SystemColors.HotTrack; this.btnSwapDirection.FlatAppearance.BorderSize = 2; @@ -3026,10 +3071,10 @@ private void InitializeComponent() this.btnSwapDirection.Font = new System.Drawing.Font("Tahoma", 14.25F); this.btnSwapDirection.Image = global::AgOpenGPS.Properties.Resources.YouTurnReverse; this.btnSwapDirection.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnSwapDirection.Location = new System.Drawing.Point(565, 94); + this.btnSwapDirection.Location = new System.Drawing.Point(565, 111); this.btnSwapDirection.Margin = new System.Windows.Forms.Padding(0); this.btnSwapDirection.Name = "btnSwapDirection"; - this.btnSwapDirection.Size = new System.Drawing.Size(96, 64); + this.btnSwapDirection.Size = new System.Drawing.Size(79, 53); this.btnSwapDirection.TabIndex = 179; this.btnSwapDirection.TextAlign = System.Drawing.ContentAlignment.BottomCenter; this.btnSwapDirection.UseVisualStyleBackColor = false; @@ -3047,7 +3092,7 @@ private void InitializeComponent() this.btnContourPriority.Font = new System.Drawing.Font("Tahoma", 14.25F); this.btnContourPriority.Image = global::AgOpenGPS.Properties.Resources.Snap2; this.btnContourPriority.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnContourPriority.Location = new System.Drawing.Point(935, 43); + this.btnContourPriority.Location = new System.Drawing.Point(1009, 43); this.btnContourPriority.Name = "btnContourPriority"; this.btnContourPriority.Size = new System.Drawing.Size(80, 80); this.btnContourPriority.TabIndex = 178; @@ -3064,10 +3109,10 @@ private void InitializeComponent() this.btnCurve.FlatAppearance.BorderColor = System.Drawing.Color.RoyalBlue; this.btnCurve.FlatAppearance.BorderSize = 3; this.btnCurve.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnCurve.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnCurve.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnCurve.Image = global::AgOpenGPS.Properties.Resources.CurveOff; this.btnCurve.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnCurve.Location = new System.Drawing.Point(935, 138); + this.btnCurve.Location = new System.Drawing.Point(1009, 141); this.btnCurve.Name = "btnCurve"; this.btnCurve.Size = new System.Drawing.Size(80, 80); this.btnCurve.TabIndex = 173; @@ -3080,13 +3125,13 @@ private void InitializeComponent() this.btnLeftYouTurn.BackColor = System.Drawing.Color.LightSteelBlue; this.btnLeftYouTurn.ContextMenuStrip = this.contextMenuStripFlag; this.btnLeftYouTurn.Enabled = false; - this.btnLeftYouTurn.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold); + this.btnLeftYouTurn.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnLeftYouTurn.Image = global::AgOpenGPS.Properties.Resources.ArrowLeft; this.btnLeftYouTurn.ImageAlign = System.Drawing.ContentAlignment.TopCenter; this.btnLeftYouTurn.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnLeftYouTurn.Location = new System.Drawing.Point(479, 113); + this.btnLeftYouTurn.Location = new System.Drawing.Point(479, 138); this.btnLeftYouTurn.Name = "btnLeftYouTurn"; - this.btnLeftYouTurn.Size = new System.Drawing.Size(94, 86); + this.btnLeftYouTurn.Size = new System.Drawing.Size(80, 65); this.btnLeftYouTurn.TabIndex = 143; this.btnLeftYouTurn.Text = "8888 ft"; this.btnLeftYouTurn.TextAlign = System.Drawing.ContentAlignment.BottomCenter; @@ -3104,9 +3149,9 @@ private void InitializeComponent() this.btnEnableAutoYouTurn.Font = new System.Drawing.Font("Tahoma", 14.25F); this.btnEnableAutoYouTurn.Image = global::AgOpenGPS.Properties.Resources.YouTurnNo; this.btnEnableAutoYouTurn.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnEnableAutoYouTurn.Location = new System.Drawing.Point(847, 351); + this.btnEnableAutoYouTurn.Location = new System.Drawing.Point(921, 366); this.btnEnableAutoYouTurn.Name = "btnEnableAutoYouTurn"; - this.btnEnableAutoYouTurn.Size = new System.Drawing.Size(80, 100); + this.btnEnableAutoYouTurn.Size = new System.Drawing.Size(80, 80); this.btnEnableAutoYouTurn.TabIndex = 132; this.btnEnableAutoYouTurn.TextAlign = System.Drawing.ContentAlignment.BottomCenter; this.btnEnableAutoYouTurn.UseVisualStyleBackColor = false; @@ -3124,7 +3169,7 @@ private void InitializeComponent() this.btnSectionOffAutoOn.Font = new System.Drawing.Font("Tahoma", 15.75F); this.btnSectionOffAutoOn.Image = global::AgOpenGPS.Properties.Resources.SectionMasterOff; this.btnSectionOffAutoOn.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnSectionOffAutoOn.Location = new System.Drawing.Point(935, 521); + this.btnSectionOffAutoOn.Location = new System.Drawing.Point(1009, 533); this.btnSectionOffAutoOn.Margin = new System.Windows.Forms.Padding(0); this.btnSectionOffAutoOn.Name = "btnSectionOffAutoOn"; this.btnSectionOffAutoOn.Size = new System.Drawing.Size(80, 100); @@ -3168,7 +3213,6 @@ private void InitializeComponent() // // btnFlag // - this.btnFlag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnFlag.BackColor = System.Drawing.Color.Lavender; this.btnFlag.ContextMenuStrip = this.contextMenuStripFlag; this.btnFlag.FlatAppearance.BorderColor = System.Drawing.SystemColors.HotTrack; @@ -3177,9 +3221,9 @@ private void InitializeComponent() this.btnFlag.Font = new System.Drawing.Font("Tahoma", 14.25F); this.btnFlag.Image = global::AgOpenGPS.Properties.Resources.FlagRed; this.btnFlag.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnFlag.Location = new System.Drawing.Point(847, 87); + this.btnFlag.Location = new System.Drawing.Point(339, 473); this.btnFlag.Name = "btnFlag"; - this.btnFlag.Size = new System.Drawing.Size(80, 80); + this.btnFlag.Size = new System.Drawing.Size(64, 70); this.btnFlag.TabIndex = 121; this.btnFlag.TextAlign = System.Drawing.ContentAlignment.BottomCenter; this.btnFlag.UseVisualStyleBackColor = false; @@ -3197,7 +3241,7 @@ private void InitializeComponent() this.btnAutoSteer.Image = global::AgOpenGPS.Properties.Resources.AutoSteerOff; this.btnAutoSteer.ImageAlign = System.Drawing.ContentAlignment.TopCenter; this.btnAutoSteer.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnAutoSteer.Location = new System.Drawing.Point(847, 463); + this.btnAutoSteer.Location = new System.Drawing.Point(921, 463); this.btnAutoSteer.Margin = new System.Windows.Forms.Padding(0); this.btnAutoSteer.Name = "btnAutoSteer"; this.btnAutoSteer.Size = new System.Drawing.Size(80, 100); @@ -3212,13 +3256,13 @@ private void InitializeComponent() this.btnRightYouTurn.BackColor = System.Drawing.Color.LightSteelBlue; this.btnRightYouTurn.ContextMenuStrip = this.contextMenuStripFlag; this.btnRightYouTurn.Enabled = false; - this.btnRightYouTurn.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold); + this.btnRightYouTurn.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnRightYouTurn.Image = global::AgOpenGPS.Properties.Resources.ArrowRight; this.btnRightYouTurn.ImageAlign = System.Drawing.ContentAlignment.TopCenter; this.btnRightYouTurn.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnRightYouTurn.Location = new System.Drawing.Point(720, 113); + this.btnRightYouTurn.Location = new System.Drawing.Point(794, 138); this.btnRightYouTurn.Name = "btnRightYouTurn"; - this.btnRightYouTurn.Size = new System.Drawing.Size(94, 86); + this.btnRightYouTurn.Size = new System.Drawing.Size(80, 65); this.btnRightYouTurn.TabIndex = 142; this.btnRightYouTurn.Text = "8888 ft"; this.btnRightYouTurn.TextAlign = System.Drawing.ContentAlignment.BottomCenter; @@ -3234,10 +3278,10 @@ private void InitializeComponent() this.btnContour.FlatAppearance.BorderColor = System.Drawing.SystemColors.HotTrack; this.btnContour.FlatAppearance.BorderSize = 2; this.btnContour.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnContour.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold); + this.btnContour.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnContour.Image = global::AgOpenGPS.Properties.Resources.ContourOff; this.btnContour.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnContour.Location = new System.Drawing.Point(935, 233); + this.btnContour.Location = new System.Drawing.Point(1009, 239); this.btnContour.Name = "btnContour"; this.btnContour.Size = new System.Drawing.Size(80, 80); this.btnContour.TabIndex = 105; @@ -3257,7 +3301,7 @@ private void InitializeComponent() this.btnManualOffOn.Font = new System.Drawing.Font("Tahoma", 14.25F); this.btnManualOffOn.Image = global::AgOpenGPS.Properties.Resources.ManualOff; this.btnManualOffOn.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnManualOffOn.Location = new System.Drawing.Point(935, 425); + this.btnManualOffOn.Location = new System.Drawing.Point(1009, 435); this.btnManualOffOn.Name = "btnManualOffOn"; this.btnManualOffOn.Size = new System.Drawing.Size(80, 80); this.btnManualOffOn.TabIndex = 98; @@ -3276,7 +3320,7 @@ private void InitializeComponent() this.btnABLine.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnABLine.Image = global::AgOpenGPS.Properties.Resources.ABLineOff; this.btnABLine.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnABLine.Location = new System.Drawing.Point(935, 329); + this.btnABLine.Location = new System.Drawing.Point(1009, 337); this.btnABLine.Name = "btnABLine"; this.btnABLine.Size = new System.Drawing.Size(80, 80); this.btnABLine.TabIndex = 0; @@ -3289,15 +3333,12 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.BackColor = System.Drawing.SystemColors.ScrollBar; - this.ClientSize = new System.Drawing.Size(1017, 701); - this.Controls.Add(this.tabControl1); - this.Controls.Add(this.panelBatman); + this.ClientSize = new System.Drawing.Size(1091, 701); + this.Controls.Add(this.lblHz); + this.Controls.Add(this.btnCycleLines); this.Controls.Add(this.btnMakeLinesFromBoundary); - this.Controls.Add(this.lblFixQuality); - this.Controls.Add(this.btnZoomExtents); this.Controls.Add(this.btnZoomIn); this.Controls.Add(this.btnZoomOut); - this.Controls.Add(this.lblHz); this.Controls.Add(this.panelSimControls); this.Controls.Add(this.cboxpRowWidth); this.Controls.Add(this.btnSwapDirection); @@ -3333,14 +3374,16 @@ private void InitializeComponent() this.Controls.Add(this.btnSection10Man); this.Controls.Add(this.btnSection9Man); this.Controls.Add(this.oglMain); + this.Controls.Add(this.panelBatman); this.Controls.Add(this.oglBack); + this.Controls.Add(this.tabControl1); this.Font = new System.Drawing.Font("Tahoma", 12F); this.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MainMenuStrip = this.menuStrip1; this.MinimumSize = new System.Drawing.Size(800, 740); this.Name = "FormGPS"; - this.Text = "AgOpenGPS - Be So Good They Can\'t Ignore You"; + this.Text = "AgOpenGPS - No Field Loaded"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormGPS_FormClosing); this.Load += new System.EventHandler(this.FormGPS_Load); this.Resize += new System.EventHandler(this.FormGPS_Resize); @@ -3466,7 +3509,6 @@ private void InitializeComponent() private System.Windows.Forms.Label lblLatitude; private System.Windows.Forms.Label label16; private System.Windows.Forms.Label lblAltitude; - private System.Windows.Forms.Label lblFixQuality; private System.Windows.Forms.Label lblSats; public System.Windows.Forms.Button btnSectionOffAutoOn; private System.Windows.Forms.ToolStripStatusLabel stripEqWidth; @@ -3539,7 +3581,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label39; private System.Windows.Forms.Button btnFlagsGoogleEarth; private System.Windows.Forms.Panel panelSimControls; - private System.Windows.Forms.Button btnZoomExtents; private System.Windows.Forms.Label lblHz; private System.Windows.Forms.Label label14; private System.Windows.Forms.Label lblpFieldAreaRemain; @@ -3600,6 +3641,11 @@ private void InitializeComponent() private System.Windows.Forms.Label lblPercentRemaining; private System.Windows.Forms.Label lblTimeRemaining; public System.Windows.Forms.ToolStripMenuItem menustripLanguage; + private System.Windows.Forms.Label lblMoveDistance; + private System.Windows.Forms.Label lblMoveDistanceBatman; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label label11; + public System.Windows.Forms.Button btnCycleLines; } } diff --git a/SourceCode/GPS/Forms/FormGPS.cs b/SourceCode/GPS/Forms/FormGPS.cs index c030fd783..7512174cc 100644 --- a/SourceCode/GPS/Forms/FormGPS.cs +++ b/SourceCode/GPS/Forms/FormGPS.cs @@ -4,10 +4,12 @@ using OpenTK; using OpenTK.Graphics.OpenGL; using System; +using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.IO; +using System.Media; using System.Net; using System.Net.Sockets; using System.Reflection; @@ -217,6 +219,12 @@ public partial class FormGPS : Form /// public CWorkSwitch workSwitch; + /// + /// Sound for approaching boundary + /// + public SoundPlayer sndBoundaryAlarm; + + #endregion // Class Props and instances // Constructor, Initializes a new instance of the "FormGPS" class. @@ -228,7 +236,7 @@ public FormGPS() btnManualAutoDrive.Text = gStr.gsAbout; //file menu - fileToolStripMenuItem.Text = gStr.gsFile; + //fileToolStripMenuItem.Text = gStr.gsFile; setWorkingDirectoryToolStripMenuItem.Text = gStr.gsDirectories; enterSimCoordsToolStripMenuItem.Text = gStr.gsEnterSimCoords; loadVehicleToolStripMenuItem.Text = gStr.gsLoadVehicle; @@ -239,7 +247,7 @@ public FormGPS() menustripLanguage.Text = gStr.gsLanguage; //Display Menu - settingsToolStripMenuItem.Text = gStr.gsDisplay; + //settingsToolStripMenuItem.Text = gStr.gsDisplay; resetALLToolStripMenuItem.Text = gStr.gsResetAll; colorsToolStripMenuItem.Text = gStr.gsColors; toolStripUnitsMenu.Text = gStr.gsUnits; @@ -400,10 +408,6 @@ private void ZoomByMouseWheel(object sender, MouseEventArgs e) //Initialize items before the form Loads or is visible private void FormGPS_Load(object sender, EventArgs e) { - //tooltips of controls - ToolTip ToolTip1 = new ToolTip(); - ToolTip1.SetToolTip(btnABLine, "Set and configure\n an ABLine"); - this.MouseWheel += ZoomByMouseWheel; if (Settings.Default.setF_workingDirectory == "Default") @@ -436,6 +440,17 @@ private void FormGPS_Load(object sender, EventArgs e) } } + string directoryName = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); + string wave = Path.Combine(directoryName, "Dependencies\\Audio", "Boundary.Wav"); + if (File.Exists(wave)) + { + sndBoundaryAlarm = new SoundPlayer(wave); + } + else + { + sndBoundaryAlarm = new SoundPlayer(Properties.Resources.Alarm10); + } + //grab the current vehicle filename - make sure it exists vehiclefileName = Vehicle.Default.setVehicle_Name; @@ -631,6 +646,8 @@ private void FormGPS_Resize(object sender, EventArgs e) // Procedures and Functions --------------------------------------- public uint LoadGLTextures() { + //sndRedAlert.Play(); + GL.Enable(EnableCap.Texture2D); try { @@ -839,21 +856,20 @@ private void NudElevation_ValueChanged(object sender, EventArgs e) sim.altitude = (double)nudElevation.Value; } - public void GetAB() { curve.isOkToAddPoints = false; - curve.isCurveSet = false; - DisableYouTurnButtons(); + //curve.isCurveSet = false; + //DisableYouTurnButtons(); btnContourPriority.Enabled = false; - curve.isCurveBtnOn = false; - btnCurve.Image = Properties.Resources.CurveOff; + //curve.isCurveBtnOn = false; + //btnCurve.Image = Properties.Resources.CurveOff; - ABLine.isABLineSet = false; + //ABLine.isABLineSet = false; ABLine.tramPassEvery = 0; ABLine.passBasedOn = 0; - btnABLine.Image = Properties.Resources.ABLineOff; - ABLine.isBtnABLineOn = false; + //btnABLine.Image = Properties.Resources.ABLineOff; + //ABLine.isBtnABLineOn = false; if (ct.isContourBtnOn) { if (ct.isContourBtnOn) btnContour.PerformClick(); } @@ -864,7 +880,13 @@ public void GetAB() if (result == DialogResult.OK) { } + ABLine.moveDistance = 0; + curve.moveDistance = 0; } + + if (curve.isCurveBtnOn) btnCycleLines.Text = "Cu-" + curve.numCurveLineSelected; + if (ABLine.isBtnABLineOn) btnCycleLines.Text = "AB-" + ABLine.numABLineSelected; + } public void KeypadToNUD(NumericUpDown sender) @@ -1037,6 +1059,7 @@ public void JobNew() btnContour.Enabled = true; btnCurve.Enabled = true; btnMakeLinesFromBoundary.Enabled = true; + btnCycleLines.Enabled = true; ABLine.abHeading = 0.00; @@ -1155,6 +1178,7 @@ public void JobClose() ct.isContourOn = false; btnMakeLinesFromBoundary.Enabled = false; + btnCycleLines.Enabled = false; //AutoSteer btnAutoSteer.Enabled = false; diff --git a/SourceCode/GPS/Forms/FormGPS.resx b/SourceCode/GPS/Forms/FormGPS.resx index 2afec12a2..964aa452d 100644 --- a/SourceCode/GPS/Forms/FormGPS.resx +++ b/SourceCode/GPS/Forms/FormGPS.resx @@ -143,7 +143,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACO - MgAAAk1TRnQBSQFMAgEBBAEAAYgBJAGIASQBQAEAAUABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + MgAAAk1TRnQBSQFMAgEBBAEAAZABJQGQASUBQAEAAUABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo BAABAQIAAYADAAEBAQABCAYAAYAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -361,9 +361,6 @@ AQEY/wH+AQED/wH4AQABDxn/AQMD/wH4AQABfxn/AYcD/wH4AQEe/wH8AT8W/ws= - - True - True diff --git a/SourceCode/GPS/Forms/FormMakeBndCon.Designer.cs b/SourceCode/GPS/Forms/FormMakeBndCon.Designer.cs index ccadacef5..ed9d7803f 100644 --- a/SourceCode/GPS/Forms/FormMakeBndCon.Designer.cs +++ b/SourceCode/GPS/Forms/FormMakeBndCon.Designer.cs @@ -56,6 +56,7 @@ private void InitializeComponent() this.nudPass.Name = "nudPass"; this.nudPass.Size = new System.Drawing.Size(120, 85); this.nudPass.TabIndex = 5; + this.nudPass.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.nudPass.Value = new decimal(new int[] { 1, 0, @@ -93,15 +94,21 @@ private void InitializeComponent() // this.nudSpacing.BackColor = System.Drawing.Color.AliceBlue; this.nudSpacing.Font = new System.Drawing.Font("Tahoma", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudSpacing.Location = new System.Drawing.Point(37, 246); + this.nudSpacing.Location = new System.Drawing.Point(30, 246); + this.nudSpacing.Maximum = new decimal(new int[] { + 4000, + 0, + 0, + 0}); this.nudSpacing.Minimum = new decimal(new int[] { 1, 0, 0, 0}); this.nudSpacing.Name = "nudSpacing"; - this.nudSpacing.Size = new System.Drawing.Size(120, 85); + this.nudSpacing.Size = new System.Drawing.Size(166, 85); this.nudSpacing.TabIndex = 252; + this.nudSpacing.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.nudSpacing.Value = new decimal(new int[] { 20, 0, diff --git a/SourceCode/GPS/Forms/FormSettings.Designer.cs b/SourceCode/GPS/Forms/FormSettings.Designer.cs index 75a34e457..4f25d93d3 100644 --- a/SourceCode/GPS/Forms/FormSettings.Designer.cs +++ b/SourceCode/GPS/Forms/FormSettings.Designer.cs @@ -101,6 +101,8 @@ private void InitializeComponent() this.nudSection1 = new System.Windows.Forms.NumericUpDown(); this.label2 = new System.Windows.Forms.Label(); this.tabGuidance = new System.Windows.Forms.TabPage(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.nudLineWidth = new System.Windows.Forms.NumericUpDown(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.nudLightbarCmPerPixel = new System.Windows.Forms.NumericUpDown(); this.groupBox9 = new System.Windows.Forms.GroupBox(); @@ -157,6 +159,8 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudSection2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudSection1)).BeginInit(); this.tabGuidance.SuspendLayout(); + this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudLineWidth)).BeginInit(); this.groupBox2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.nudLightbarCmPerPixel)).BeginInit(); this.groupBox9.SuspendLayout(); @@ -1440,6 +1444,7 @@ private void InitializeComponent() // tabGuidance // this.tabGuidance.BackColor = System.Drawing.SystemColors.Window; + this.tabGuidance.Controls.Add(this.groupBox4); this.tabGuidance.Controls.Add(this.groupBox2); this.tabGuidance.Controls.Add(this.groupBox9); this.tabGuidance.Controls.Add(this.groupBox8); @@ -1451,13 +1456,51 @@ private void InitializeComponent() this.tabGuidance.TabIndex = 13; this.tabGuidance.Text = " Guidance "; // + // groupBox4 + // + this.groupBox4.Controls.Add(this.nudLineWidth); + this.groupBox4.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.groupBox4.Location = new System.Drawing.Point(714, 59); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(232, 172); + this.groupBox4.TabIndex = 124; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Guidance Line Width"; + // + // nudLineWidth + // + this.nudLineWidth.BackColor = System.Drawing.Color.AliceBlue; + this.nudLineWidth.Font = new System.Drawing.Font("Tahoma", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudLineWidth.InterceptArrowKeys = false; + this.nudLineWidth.Location = new System.Drawing.Point(44, 76); + this.nudLineWidth.Maximum = new decimal(new int[] { + 8, + 0, + 0, + 0}); + this.nudLineWidth.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nudLineWidth.Name = "nudLineWidth"; + this.nudLineWidth.Size = new System.Drawing.Size(148, 65); + this.nudLineWidth.TabIndex = 118; + this.nudLineWidth.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudLineWidth.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nudLineWidth.Enter += new System.EventHandler(this.nudLineWidth_Enter); + // // groupBox2 // this.groupBox2.Controls.Add(this.nudLightbarCmPerPixel); this.groupBox2.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.groupBox2.Location = new System.Drawing.Point(414, 59); + this.groupBox2.Location = new System.Drawing.Point(394, 59); this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(341, 142); + this.groupBox2.Size = new System.Drawing.Size(250, 172); this.groupBox2.TabIndex = 123; this.groupBox2.TabStop = false; this.groupBox2.Text = "cm / Lightbar Pixel"; @@ -1467,7 +1510,7 @@ private void InitializeComponent() this.nudLightbarCmPerPixel.BackColor = System.Drawing.Color.AliceBlue; this.nudLightbarCmPerPixel.Font = new System.Drawing.Font("Tahoma", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nudLightbarCmPerPixel.InterceptArrowKeys = false; - this.nudLightbarCmPerPixel.Location = new System.Drawing.Point(23, 40); + this.nudLightbarCmPerPixel.Location = new System.Drawing.Point(26, 73); this.nudLightbarCmPerPixel.Maximum = new decimal(new int[] { 20, 0, @@ -1494,9 +1537,9 @@ private void InitializeComponent() // this.groupBox9.Controls.Add(this.cboxAutoSteerAuto); this.groupBox9.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.groupBox9.Location = new System.Drawing.Point(415, 262); + this.groupBox9.Location = new System.Drawing.Point(394, 288); this.groupBox9.Name = "groupBox9"; - this.groupBox9.Size = new System.Drawing.Size(340, 192); + this.groupBox9.Size = new System.Drawing.Size(250, 192); this.groupBox9.TabIndex = 92; this.groupBox9.TabStop = false; this.groupBox9.Text = "Auto/Manual AutoSteer Button"; @@ -1509,7 +1552,7 @@ private void InitializeComponent() this.cboxAutoSteerAuto.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cboxAutoSteerAuto.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cboxAutoSteerAuto.Image = global::AgOpenGPS.Properties.Resources.AutoSteerOn; - this.cboxAutoSteerAuto.Location = new System.Drawing.Point(60, 65); + this.cboxAutoSteerAuto.Location = new System.Drawing.Point(60, 79); this.cboxAutoSteerAuto.Name = "cboxAutoSteerAuto"; this.cboxAutoSteerAuto.Size = new System.Drawing.Size(86, 96); this.cboxAutoSteerAuto.TabIndex = 0; @@ -1524,7 +1567,7 @@ private void InitializeComponent() this.groupBox8.Font = new System.Drawing.Font("Tahoma", 15.75F); this.groupBox8.Location = new System.Drawing.Point(45, 59); this.groupBox8.Name = "groupBox8"; - this.groupBox8.Size = new System.Drawing.Size(317, 142); + this.groupBox8.Size = new System.Drawing.Size(279, 172); this.groupBox8.TabIndex = 91; this.groupBox8.TabStop = false; this.groupBox8.Text = "< > Snap Distance (cm)"; @@ -1534,7 +1577,7 @@ private void InitializeComponent() this.nudSnapDistanceSmall.BackColor = System.Drawing.Color.AliceBlue; this.nudSnapDistanceSmall.Font = new System.Drawing.Font("Tahoma", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nudSnapDistanceSmall.InterceptArrowKeys = false; - this.nudSnapDistanceSmall.Location = new System.Drawing.Point(23, 40); + this.nudSnapDistanceSmall.Location = new System.Drawing.Point(23, 73); this.nudSnapDistanceSmall.Maximum = new decimal(new int[] { 500, 0, @@ -1556,9 +1599,9 @@ private void InitializeComponent() // this.groupBox1.Controls.Add(this.nudSnapDistance); this.groupBox1.Font = new System.Drawing.Font("Tahoma", 15.75F); - this.groupBox1.Location = new System.Drawing.Point(45, 262); + this.groupBox1.Location = new System.Drawing.Point(45, 288); this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(317, 142); + this.groupBox1.Size = new System.Drawing.Size(279, 168); this.groupBox1.TabIndex = 90; this.groupBox1.TabStop = false; this.groupBox1.Text = "<< >> Snap Distance"; @@ -1568,7 +1611,7 @@ private void InitializeComponent() this.nudSnapDistance.BackColor = System.Drawing.Color.AliceBlue; this.nudSnapDistance.Font = new System.Drawing.Font("Tahoma", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nudSnapDistance.InterceptArrowKeys = false; - this.nudSnapDistance.Location = new System.Drawing.Point(23, 32); + this.nudSnapDistance.Location = new System.Drawing.Point(23, 73); this.nudSnapDistance.Maximum = new decimal(new int[] { 500, 0, @@ -1833,6 +1876,8 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudSection2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudSection1)).EndInit(); this.tabGuidance.ResumeLayout(false); + this.groupBox4.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nudLineWidth)).EndInit(); this.groupBox2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.nudLightbarCmPerPixel)).EndInit(); this.groupBox9.ResumeLayout(false); @@ -1947,5 +1992,7 @@ private void InitializeComponent() private System.Windows.Forms.NumericUpDown nudLightbarCmPerPixel; private System.Windows.Forms.Label label25; private System.Windows.Forms.ComboBox cboxNumSections; + private System.Windows.Forms.NumericUpDown nudLineWidth; + private System.Windows.Forms.GroupBox groupBox4; } } \ No newline at end of file diff --git a/SourceCode/GPS/Forms/FormSettings.cs b/SourceCode/GPS/Forms/FormSettings.cs index 055d9194e..3618592c2 100644 --- a/SourceCode/GPS/Forms/FormSettings.cs +++ b/SourceCode/GPS/Forms/FormSettings.cs @@ -119,6 +119,7 @@ public FormSettings(Form callingForm, int page) nudTankHitch.Controls[0].Enabled = false; nudTurnOffDelay.Controls[0].Enabled = false; nudWheelbase.Controls[0].Enabled = false; + nudLineWidth.Controls[0].Enabled = false; if (mf.isMetric) { @@ -204,8 +205,6 @@ private void FormSettings_Load(object sender, EventArgs e) numberOfSections = Properties.Vehicle.Default.setVehicle_numSections; temp = numberOfSections; - //if (nudNumberOfSections.CheckValue(ref temp)) nudNumberOfSections.BackColor = System.Drawing.Color.OrangeRed; - //numberOfSections = (int)temp; cutoffSpeed = Properties.Vehicle.Default.setVehicle_slowSpeedCutoff / cutoffMetricImperial; temp = (decimal)cutoffSpeed; @@ -338,11 +337,6 @@ private void FormSettings_Load(object sender, EventArgs e) nudLookAhead.Value = (decimal)(toolLookAhead); nudLookAhead.ValueChanged += nudLookAhead_ValueChanged; - //grab number of sections - //nudNumberOfSections.ValueChanged -= nudNumberOfSections_ValueChanged; - //nudNumberOfSections.Value = numberOfSections; - //nudNumberOfSections.ValueChanged += nudNumberOfSections_ValueChanged; - cboxNumSections.Text = numberOfSections.ToString(); //calc the 8 section widths based on settings.settings also meters to inches @@ -388,6 +382,8 @@ private void FormSettings_Load(object sender, EventArgs e) nudCutoffSpeed.ValueChanged -= nudCutoffSpeed_ValueChanged; nudCutoffSpeed.Value = (decimal)cutoffSpeed; nudCutoffSpeed.ValueChanged += nudCutoffSpeed_ValueChanged; + + nudLineWidth.Value = Properties.Settings.Default.setDisplay_lineWidth; } private void btnOK_Click(object sender, EventArgs e) @@ -514,6 +510,9 @@ private void btnOK_Click(object sender, EventArgs e) Properties.Vehicle.Default.setVehicle_slowSpeedCutoff = cutoffSpeed * cutoffMetricImperial; mf.vehicle.slowSpeedCutoff = cutoffSpeed * cutoffMetricImperial; + Properties.Settings.Default.setDisplay_lineWidth = (int)(nudLineWidth.Value); + mf.ABLine.lineWidth = (float)(nudLineWidth.Value); + Properties.Settings.Default.Save(); Properties.Vehicle.Default.Save(); @@ -720,6 +719,12 @@ private void NudLightbarCmPerPixel_Enter(object sender, EventArgs e) btnCancel.Focus(); } + private void nudLineWidth_Enter(object sender, EventArgs e) + { + mf.KeypadToNUD((NumericUpDown)sender); + btnCancel.Focus(); + } + private void CboxNumSections_SelectedIndexChanged(object sender, EventArgs e) { numberOfSections = cboxNumSections.SelectedIndex + 1; diff --git a/SourceCode/GPS/Forms/FormShortcutKeys.Designer.cs b/SourceCode/GPS/Forms/FormShortcutKeys.Designer.cs index dd8628a6c..8b2bda481 100644 --- a/SourceCode/GPS/Forms/FormShortcutKeys.Designer.cs +++ b/SourceCode/GPS/Forms/FormShortcutKeys.Designer.cs @@ -28,9 +28,9 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormShortcutKeys)); this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox2 = new System.Windows.Forms.TextBox(); - this.btnExit = new System.Windows.Forms.Button(); this.SuspendLayout(); // // textBox1 @@ -39,57 +39,44 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.textBox1.BackColor = System.Drawing.Color.AliceBlue; - this.textBox1.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.textBox1.Location = new System.Drawing.Point(56, 10); + this.textBox1.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.textBox1.Location = new System.Drawing.Point(153, 10); this.textBox1.Margin = new System.Windows.Forms.Padding(5); this.textBox1.Multiline = true; this.textBox1.Name = "textBox1"; this.textBox1.ReadOnly = true; - this.textBox1.Size = new System.Drawing.Size(281, 434); + this.textBox1.Size = new System.Drawing.Size(245, 719); this.textBox1.TabIndex = 2; - this.textBox1.Text = "Auto Section On Off\r\n\r\nAuto Steer On Off\r\nAuto Steer Config\r\nAuto Steer Chart\r\n\r\n" + - "Field Open/Close\r\nSnap\r\nFlag Mark\r\n\r\nUTurn Settings\r\nVehicle Settings"; + this.textBox1.Text = resources.GetString("textBox1.Text"); // // textBox2 // this.textBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.textBox2.BackColor = System.Drawing.Color.AliceBlue; - this.textBox2.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.textBox2.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.textBox2.Location = new System.Drawing.Point(14, 10); this.textBox2.Margin = new System.Windows.Forms.Padding(5); this.textBox2.Multiline = true; this.textBox2.Name = "textBox2"; this.textBox2.ReadOnly = true; - this.textBox2.Size = new System.Drawing.Size(37, 434); + this.textBox2.Size = new System.Drawing.Size(129, 719); this.textBox2.TabIndex = 1; - this.textBox2.Text = "D\r\n\r\nA\r\nS\r\nC\r\n\r\nF\r\nP\r\nG\r\n\r\nU\r\nV"; - // - // btnExit - // - this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnExit.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnExit.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnExit.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(64)))), ((int)(((byte)(0))))); - this.btnExit.Image = global::AgOpenGPS.Properties.Resources.Cancel64; - this.btnExit.Location = new System.Drawing.Point(240, 464); - this.btnExit.Name = "btnExit"; - this.btnExit.Size = new System.Drawing.Size(97, 70); - this.btnExit.TabIndex = 0; - this.btnExit.UseVisualStyleBackColor = true; - this.btnExit.Click += new System.EventHandler(this.btnExit_Click); + this.textBox2.Text = "N\r\nM\r\n\r\nA\r\nS\r\nC\r\n\r\nF\r\nP\r\nG\r\n\r\nU\r\nV\r\nNumPad 0\r\nNumPad 1\r\n\r\n\r\nUp\r\nDown\r\nLeft\r\nRight" + + "\r\nPeriod .\r\n?\r\nL"; + this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; // // FormShortcutKeys // this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 23F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(351, 546); - this.ControlBox = false; - this.Controls.Add(this.btnExit); + this.ClientSize = new System.Drawing.Size(402, 733); this.Controls.Add(this.textBox2); this.Controls.Add(this.textBox1); this.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Margin = new System.Windows.Forms.Padding(5); + this.MaximizeBox = false; + this.MinimizeBox = false; this.Name = "FormShortcutKeys"; this.ShowInTaskbar = false; this.Text = "Shortcut Keys"; @@ -103,6 +90,5 @@ private void InitializeComponent() private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.TextBox textBox2; - private System.Windows.Forms.Button btnExit; } } \ No newline at end of file diff --git a/SourceCode/GPS/Forms/FormShortcutKeys.resx b/SourceCode/GPS/Forms/FormShortcutKeys.resx index 1af7de150..b18a0ce6b 100644 --- a/SourceCode/GPS/Forms/FormShortcutKeys.resx +++ b/SourceCode/GPS/Forms/FormShortcutKeys.resx @@ -117,4 +117,30 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Auto Section On/Off +Manual On/Off + +Auto Steer On/Off +Auto Steer Config +Auto Steer Chart + +Field Open/Close +Snap +Flag Mark + +UTurn Settings +Vehicle Settings +Section Auto On/Off +Manual On/Off + +Sim Controls: +Speed Up +Slow Down +Turn Left +Turn Right +Stop +Go Straight +Reset Sim + \ No newline at end of file diff --git a/SourceCode/GPS/Forms/FormSmoothAB.cs b/SourceCode/GPS/Forms/FormSmoothAB.cs index 10a52529e..2750ee529 100644 --- a/SourceCode/GPS/Forms/FormSmoothAB.cs +++ b/SourceCode/GPS/Forms/FormSmoothAB.cs @@ -63,7 +63,7 @@ private void btnSave_Click(object sender, EventArgs e) mf.curve.isSmoothWindowOpen = false; mf.curve.SaveSmoothAsRefList(); mf.curve.smooList?.Clear(); - mf.FileSaveCurveLine(); + //mf.FileSaveCurveLine(); Close(); } } diff --git a/SourceCode/GPS/Forms/GUI.Designer.cs b/SourceCode/GPS/Forms/GUI.Designer.cs index 41a006ee4..1a6555bbf 100644 --- a/SourceCode/GPS/Forms/GUI.Designer.cs +++ b/SourceCode/GPS/Forms/GUI.Designer.cs @@ -150,66 +150,101 @@ private void ManualAllBtnsUpdate() //hide the left panel public void SwapBatmanPanels() - { - if (Properties.Settings.Default.setDisplay_isLargePanel) - { - //Batman mini-panel shows - panelSimControls.Left = 245; - oglMain.Left = 240; - oglMain.Width = Width - 240 - 102; - btnpTiltDown.Left = 245; - btnpTiltUp.Left = 245; - btnZoomIn.Left = 245; - btnZoomOut.Left = 245; - btnZoomExtents.Left = 245; - cboxpRowWidth.Left = 245; - txtDistanceOffABLine.Left = (Width - 245 - 100) / 2 + 185; - btnSwapDirection.Left = (Width - 245 - 100) / 2 + 190; - panelBatman.Visible = true; - tabControl1.Visible = false; - Properties.Settings.Default.setDisplay_isLargePanel = false; + { + if (Properties.Settings.Default.setDisplay_panelStatus++ > 1) Properties.Settings.Default.setDisplay_panelStatus = 0; Properties.Settings.Default.Save(); - LineUpManualBtns(); - } - else - { - //Big tab will be visible - panelSimControls.Left = 345; - oglMain.Left = 340; - oglMain.Width = Width - 340 - 102; - btnpTiltDown.Left = 345; - btnpTiltUp.Left = 345; - btnZoomIn.Left = 345; - btnZoomOut.Left = 345; - btnZoomExtents.Left = 345; - cboxpRowWidth.Left = 345; - txtDistanceOffABLine.Left = (Width - 345 - 100)/2 + 287; - btnSwapDirection.Left = (Width - 345 - 100) / 2 + 292; - txtDistanceOffABLine.Top = -1; - tabControl1.SelectedIndex = 2; - panelBatman.Visible = false; - tabControl1.Visible = true; - Properties.Settings.Default.setDisplay_isLargePanel = true; - Properties.Settings.Default.Save(); - LineUpManualBtns(); + switch (Properties.Settings.Default.setDisplay_panelStatus) + { + case 0: + //no side panel + panelSimControls.Left = 0; + oglMain.Left = 5; + oglMain.Width = Width - 107; + btnpTiltDown.Left = 8; + btnpTiltUp.Left = 8; + btnZoomIn.Left = 8; + btnZoomOut.Left = 8; + btnFlag.Left = 8; + cboxpRowWidth.Left = 8; + txtDistanceOffABLine.Left = (Width - 200) / 2; + txtDistanceOffABLine.Top = -1; + panelBatman.Visible = false; + tabControl1.Visible = false; + LineUpManualBtns(); + + break; + + case 1: + //Batman mini-panel shows + panelSimControls.Left = 245; + oglMain.Left = 240; + oglMain.Width = Width - 240 - 102; + btnpTiltDown.Left = 245; + btnpTiltUp.Left = 245; + btnZoomIn.Left = 245; + btnZoomOut.Left = 245; + btnFlag.Left = 245; + cboxpRowWidth.Left = 245; + txtDistanceOffABLine.Left = (Width - 245 - 100) / 2 + 185; + btnSwapDirection.Left = (Width - 245 - 100) / 2 + 190; + panelBatman.Visible = true; + tabControl1.Visible = false; + LineUpManualBtns(); + break; + + case 2: + //Big tab will be visible + panelSimControls.Left = 345; + oglMain.Left = 340; + oglMain.Width = Width - 340 - 102; + btnpTiltDown.Left = 345; + btnpTiltUp.Left = 345; + btnZoomIn.Left = 345; + btnZoomOut.Left = 345; + btnFlag.Left = 345; + cboxpRowWidth.Left = 345; + txtDistanceOffABLine.Left = (Width - 345 - 100) / 2 + 287; + btnSwapDirection.Left = (Width - 345 - 100) / 2 + 292; + txtDistanceOffABLine.Top = -1; + tabControl1.SelectedIndex = 2; + panelBatman.Visible = false; + tabControl1.Visible = true; + LineUpManualBtns(); + break; + + + default: + break; } } //line up section On Off Auto buttons based on how many there are public void LineUpManualBtns() { + int first2Thirds = 0; + if (tabControl1.Visible) { - btnRightYouTurn.Left = (Width - 440) / 2 + 475; - btnLeftYouTurn.Left = (Width - 440) / 2 + 115; - btnSwapDirection.Left = (Width - 440) / 2 + 292; + btnRightYouTurn.Left = (Width + 450) / 2; + btnLeftYouTurn.Left = (Width - 135) / 2; + btnSwapDirection.Left = (Width - 440) / 2 + 302; + first2Thirds = (Width - 535) / 2 + 385; } + else if (panelBatman.Visible) + { + btnRightYouTurn.Left = (Width+350) / 2 ; + btnLeftYouTurn.Left = (Width-240) / 2; + btnSwapDirection.Left = (Width - 340) / 2 + 200; + first2Thirds = (Width - 395) / 2 + 260; + } + else { - btnRightYouTurn.Left = (Width-340) / 2 + 362; - btnLeftYouTurn.Left = (Width-340) / 2 + 10; - btnSwapDirection.Left = (Width - 340) / 2 + 190; + btnRightYouTurn.Left = (Width+140) / 2; + btnLeftYouTurn.Left = (Width-500) / 2; + btnSwapDirection.Left = (Width-185) / 2; + first2Thirds = (Width - 118) / 2; } int top = 0; @@ -232,9 +267,6 @@ public void LineUpManualBtns() btnSection7Man.Top = Height - top; btnSection8Man.Top = Height - top; - int first2Thirds; - if (tabControl1.Visible) first2Thirds = (Width - 535) / 2 + 385; - else first2Thirds = (Width-395) / 2 + 260; int even = 60; int offset = 7; @@ -987,6 +1019,8 @@ private void btnAutoSteer_Click(object sender, EventArgs e) private void BtnMakeLinesFromBoundary_Click(object sender, EventArgs e) { + if (ct.isContourBtnOn) return; + if (!bnd.bndArr[0].isSet) { TimedMessageBox(2000, gStr.gsNoBoundary, gStr.gsCreateABoundaryFirst); @@ -995,9 +1029,44 @@ private void BtnMakeLinesFromBoundary_Click(object sender, EventArgs e) GetAB(); } + private void btnCycleLines_Click(object sender, EventArgs e) + { + if (ABLine.isBtnABLineOn && ABLine.numABLines > 0) + { + ABLine.numABLineSelected++; + if (ABLine.numABLineSelected > ABLine.numABLines) ABLine.numABLineSelected = 1; + ABLine.refPoint1 = ABLine.lineArr[ABLine.numABLineSelected - 1].origin; + //ABLine.refPoint2 = ABLine.lineArr[ABLine.numABLineSelected - 1].ref2; + ABLine.abHeading = ABLine.lineArr[ABLine.numABLineSelected - 1].heading; + ABLine.SetABLineByHeading(); + ABLine.isABLineSet = true; + ABLine.isABLineLoaded = true; + yt.ResetYouTurn(); + btnCycleLines.Text = "AB-" + ABLine.numABLineSelected; + } + else if (curve.isCurveBtnOn && curve.numCurveLines > 0) + { + curve.numCurveLineSelected++; + if (curve.numCurveLineSelected > curve.numCurveLines) curve.numCurveLineSelected = 1; + + int idx = curve.numCurveLineSelected - 1; + curve.aveLineHeading = curve.curveArr[idx].aveHeading; + curve.refList?.Clear(); + for (int i = 0; i < curve.curveArr[idx].curvePts.Count; i++) + { + curve.refList.Add(curve.curveArr[idx].curvePts[i]); + } + curve.isCurveSet = true; + yt.ResetYouTurn(); + btnCycleLines.Text = "Cur-" + curve.numCurveLineSelected; + } + } + private void btnABLine_Click(object sender, EventArgs e) { + btnCycleLines.Text = "AB-" + ABLine.numABLineSelected; + //check if window already exists Form f = Application.OpenForms["FormABCurve"]; @@ -1007,27 +1076,30 @@ private void btnABLine_Click(object sender, EventArgs e) return; } + Form af = Application.OpenForms["FormABLine"]; + + if (af != null) + { + af.Close(); + return; + } + + //if contour is on, turn it off if (ct.isContourBtnOn) { if (ct.isContourBtnOn) btnContour.PerformClick(); } btnContourPriority.Enabled = true; //make sure the other stuff is off curve.isOkToAddPoints = false; - curve.isCurveSet = false; - DisableYouTurnButtons(); curve.isCurveBtnOn = false; btnCurve.Image = Properties.Resources.CurveOff; - //new direction so reset where to put turn diagnostic - yt.ResetCreatedYouTurn(); - //if there is a line in memory, just use it. if (ABLine.isBtnABLineOn == false && ABLine.isABLineLoaded) { ABLine.isABLineSet = true; EnableYouTurnButtons(); - FileSaveABLine(); btnABLine.Image = Properties.Resources.ABLineOn; ABLine.isBtnABLineOn = true; return; @@ -1047,8 +1119,8 @@ private void btnABLine_Click(object sender, EventArgs e) btnABLine.Image = Properties.Resources.ABLineOn; //turn off youturn... - DisableYouTurnButtons(); - yt.ResetYouTurn(); + //DisableYouTurnButtons(); + //yt.ResetYouTurn(); var form = new FormABLine(this); form.Show(); @@ -1056,7 +1128,10 @@ private void btnABLine_Click(object sender, EventArgs e) private void btnCurve_Click(object sender, EventArgs e) { + btnCycleLines.Text = "Cur-" + curve.numCurveLineSelected; + //check if window already exists, return if true + Form f = Application.OpenForms["FormABLine"]; if (f != null) @@ -1065,28 +1140,36 @@ private void btnCurve_Click(object sender, EventArgs e) return; } + //check if window already exists + Form cf = Application.OpenForms["FormABCurve"]; + + if (cf != null) + { + cf.Close(); + return; + } + + //if contour is on, turn it off if (ct.isContourBtnOn) { if (ct.isContourBtnOn) btnContour.PerformClick(); } - //turn off ABLine - ABLine.isABLineBeingSet = false; - ABLine.isABLineSet = false; - txtDistanceOffABLine.Visible = false; + //turn off ABLine + ABLine.isABLineBeingSet = false; + ABLine.isABLineSet = false; + txtDistanceOffABLine.Visible = false; - //change image to reflect on off - btnABLine.Image = Properties.Resources.ABLineOff; - ABLine.isBtnABLineOn = false; + //change image to reflect on off + btnABLine.Image = Properties.Resources.ABLineOff; + ABLine.isBtnABLineOn = false; //new direction so reset where to put turn diagnostic - yt.ResetCreatedYouTurn(); + //yt.ResetCreatedYouTurn(); - if (curve.isCurveBtnOn == false && curve.refList.Count > 3) + if (curve.isCurveBtnOn == false && curve.isCurveSet) { - //display the curve curve.isCurveSet = true; EnableYouTurnButtons(); - FileSaveCurveLine(); btnCurve.Image = Properties.Resources.CurveOn; curve.isCurveBtnOn = true; return; @@ -1102,22 +1185,10 @@ private void btnCurve_Click(object sender, EventArgs e) return; } - //curve.isCurveBtnOn = !curve.isCurveBtnOn; curve.isCurveBtnOn = true; btnCurve.Image = Properties.Resources.CurveOn; - //turn off youturn... - btnRightYouTurn.Enabled = false; - btnLeftYouTurn.Enabled = false; - btnRightYouTurn.Visible = false; - btnLeftYouTurn.Visible = false; - - btnEnableAutoYouTurn.Enabled = false; - yt.isYouTurnBtnOn = false; - btnEnableAutoYouTurn.Image = Properties.Resources.YouTurnNo; - yt.ResetYouTurn(); - - if (isAutoSteerBtnOn) btnAutoSteer.PerformClick(); + EnableYouTurnButtons(); btnContourPriority.Enabled = true; Form form = new FormABCurve(this); @@ -1222,7 +1293,7 @@ private void btnContourPriority_Click(object sender, EventArgs e) // MessageBoxDefaultButton.Button2); //if (result3 == DialogResult.Yes) { - FileSaveABLine(); + //FileSaveABLine(); } } else if (curve.isCurveSet) @@ -1266,7 +1337,9 @@ private void SnapSmallLeft() double dist = 0.01 * Properties.Settings.Default.setDisplay_snapDistanceSmall; ABLine.MoveABLine(-dist); - FileSaveABLine(); + + ABLine.moveDistance -= dist; + //FileSaveABLine(); } else if (curve.isCurveSet) { @@ -1275,6 +1348,7 @@ private void SnapSmallLeft() double dist = 0.01 * Properties.Settings.Default.setDisplay_snapDistanceSmall; curve.MoveABCurve(-dist); + curve.moveDistance -= dist; } else { @@ -1293,7 +1367,9 @@ private void SnapSmallRight() yt.ResetCreatedYouTurn(); double dist = 0.01 * Properties.Settings.Default.setDisplay_snapDistanceSmall; ABLine.MoveABLine(dist); - FileSaveABLine(); + ABLine.moveDistance += dist; + + //FileSaveABLine(); } else if (curve.isCurveSet) { @@ -1301,6 +1377,8 @@ private void SnapSmallRight() yt.ResetCreatedYouTurn(); double dist = 0.01 * Properties.Settings.Default.setDisplay_snapDistanceSmall; curve.MoveABCurve(dist); + curve.moveDistance += dist; + } else { @@ -1320,7 +1398,8 @@ private void SnapRight() double dist = 0.01 * Properties.Settings.Default.setDisplay_snapDistance; ABLine.MoveABLine(dist); - FileSaveABLine(); + ABLine.moveDistance += dist; + //FileSaveABLine(); } else if (curve.isCurveSet) { @@ -1328,6 +1407,8 @@ private void SnapRight() yt.ResetCreatedYouTurn(); double dist = 0.01 * Properties.Settings.Default.setDisplay_snapDistance; curve.MoveABCurve(dist); + curve.moveDistance += dist; + } else { @@ -1348,7 +1429,9 @@ private void SnapLeft() double dist = 0.01 * Properties.Settings.Default.setDisplay_snapDistance; ABLine.MoveABLine(-dist); - FileSaveABLine(); + ABLine.moveDistance -= dist; + + //FileSaveABLine(); } else if (curve.isCurveSet) { @@ -1357,6 +1440,8 @@ private void SnapLeft() double dist = 0.01 * Properties.Settings.Default.setDisplay_snapDistance; curve.MoveABCurve(-dist); + curve.moveDistance -= dist; + } else { @@ -1364,7 +1449,6 @@ private void SnapLeft() form.Show(); } } - } private void btnSmallSnapLeft_Click(object sender, EventArgs e) @@ -1900,21 +1984,21 @@ private void btnEnableAutoYouTurn_Click(object sender, EventArgs e) public void AutoYouTurnButtonsRightTurn() { btnRightYouTurn.BackColor = Color.Yellow; - btnRightYouTurn.Height = 110; - btnRightYouTurn.Width = 110; - btnLeftYouTurn.Height = 90; - btnLeftYouTurn.Width = 96; + btnRightYouTurn.Height = 95; + btnRightYouTurn.Width = 95; + btnLeftYouTurn.Height = 66; + btnLeftYouTurn.Width = 80; btnLeftYouTurn.Text = ""; btnLeftYouTurn.BackColor = Color.LightSteelBlue; } public void AutoYouTurnButtonsLeftTurn() { btnRightYouTurn.BackColor = Color.LightSteelBlue; - btnRightYouTurn.Height = 90; - btnRightYouTurn.Width = 96; + btnRightYouTurn.Height = 66; + btnRightYouTurn.Width = 80; btnRightYouTurn.Text = ""; - btnLeftYouTurn.Height = 110; - btnLeftYouTurn.Width = 110; + btnLeftYouTurn.Height = 95; + btnLeftYouTurn.Width = 95; btnLeftYouTurn.BackColor = Color.Yellow; } public void AutoYouTurnButtonsReset() @@ -1925,10 +2009,10 @@ public void AutoYouTurnButtonsReset() //fix the buttons btnLeftYouTurn.BackColor = Color.LightSteelBlue; btnRightYouTurn.BackColor = Color.LightSteelBlue; - btnLeftYouTurn.Height = 90; - btnLeftYouTurn.Width = 96; - btnRightYouTurn.Height = 90; - btnRightYouTurn.Width = 96; + btnLeftYouTurn.Height = 66; + btnLeftYouTurn.Width = 80; + btnRightYouTurn.Height = 66; + btnRightYouTurn.Width = 80; btnLeftYouTurn.Text = ""; btnRightYouTurn.Text = ""; @@ -1958,6 +2042,7 @@ public void EnableYouTurnButtons() //turn off youturn... btnEnableAutoYouTurn.Enabled = true; + yt.isYouTurnBtnOn = false; btnEnableAutoYouTurn.Image = Properties.Resources.YouTurnNo; } public void DisableYouTurnButtons() @@ -2659,17 +2744,6 @@ private void toolStripBtnMakeBndContour_Click(object sender, EventArgs e) if (result == DialogResult.OK) { } } } - private void toolStripBtnSnap_Click(object sender, EventArgs e) - { - if (ABLine.isABLineSet) ABLine.SnapABLine(); - else if (curve.isCurveSet) curve.SnapABCurve(); - else - { - var form = new FormTimedMessage(2000, (gStr.gsNoGuidanceLines), (gStr.gsTurnOnContourOrMakeABLine)); - form.Show(); - } - } - private void toolstripYouTurnConfig_Click(object sender, EventArgs e) { var form = new FormYouTurn(this); @@ -2692,8 +2766,7 @@ private void treePlanterToolStripMenuItem_Click(object sender, EventArgs e) form.Show(); } - - + private void toolstripAutoSteerConfig_Click(object sender, EventArgs e) { //check if window already exists @@ -2724,7 +2797,6 @@ private void toolStripAutoSteerChart_Click(object sender, EventArgs e) Form formG = new FormSteerGraph(this); formG.Show(); } - private void toolStripNTRIPConfig_Click(object sender, EventArgs e) { SettingsNTRIP(); @@ -2737,8 +2809,7 @@ private void deleteContourPathsToolStripMenuItem_Click(object sender, EventArgs ct.ctList?.Clear(); contourSaveList?.Clear(); } - - + private void toolstripVehicleConfig_Click(object sender, EventArgs e) { using (var form = new FormSettings(this, 0)) @@ -2899,16 +2970,16 @@ public string FixQuality get { if (timerSim.Enabled) - return "Simulator: "; + return "Sim: "; else if (pn.fixQuality == 0) return "Invalid: "; - else if (pn.fixQuality == 1) return "GPS fix: "; - else if (pn.fixQuality == 2) return "DGPS fix: "; - else if (pn.fixQuality == 3) return "PPS fix: "; + else if (pn.fixQuality == 1) return "GPS single: "; + else if (pn.fixQuality == 2) return "DGPS : "; + else if (pn.fixQuality == 3) return "PPS : "; else if (pn.fixQuality == 4) return "RTK fix: "; - else if (pn.fixQuality == 5) return "Flt RTK: "; + else if (pn.fixQuality == 5) return "Float: "; else if (pn.fixQuality == 6) return "Estimate: "; else if (pn.fixQuality == 7) return "Man IP: "; - else if (pn.fixQuality == 8) return "Simulator: "; + else if (pn.fixQuality == 8) return "Sim: "; else return "Unknown: "; } } @@ -3068,6 +3139,11 @@ private void tmrWatchdog_tick(object sender, EventArgs e) lblpBoundaryArea.Text = fd.AreaBoundaryLessInnersHectares; lblpAreaWorked.Text = fd.WorkedHectares; lblpFieldAreaRemain.Text = fd.WorkedAreaRemainHectares; + + if (ABLine.isBtnABLineOn) lblMoveDistanceBatman.Text = (ABLine.moveDistance * 100).ToString("N0"); + else if (curve.isCurveBtnOn) lblMoveDistanceBatman.Text = (curve.moveDistance * 100).ToString("N0"); + else lblMoveDistance.Text = "*"; + } else //imperial { @@ -3100,6 +3176,10 @@ private void tmrWatchdog_tick(object sender, EventArgs e) if (isMetric) { lblAltitude.Text = Altitude; + if (ABLine.isBtnABLineOn) lblMoveDistance.Text = (ABLine.moveDistance*100).ToString("N0"); + else if (curve.isCurveBtnOn) lblMoveDistance.Text = (curve.moveDistance*100).ToString("N0"); + else lblMoveDistance.Text = "*"; + //lblBoundaryArea.Text = fd.AreaBoundaryLessInnersHectares; //lblBoundaryDistanceAway.Text = ((int)(distancePivotToTurnLine)) + " m"; //if (distPivot > 0) lblBoundaryDistanceAway.Text = ((int)(distPivot)) + " m"; @@ -3189,11 +3269,11 @@ private void tmrWatchdog_tick(object sender, EventArgs e) //lblMachineControl.Text = Convert.ToString(mc.machineControlData[mc.cnPedalControl], 2).PadLeft(8, '0'); //lblLookAhead.Text = lookaheadActual.ToString("N1") + " m"; - //txtBoxRecvAutoSteer.Text = mc.serialRecvAutoSteerStr; - //txtBoxSendAutoSteer.Text = mc.autoSteerData[mc.sdRelayLo] + ", " + mc.autoSteerData[mc.sdSpeed] - // + ", " + guidanceLineDistanceOff + ", " + guidanceLineSteerAngle + ", " + mc.machineControlData[mc.cnYouTurn]; + //txtBoxRecvAutoSteer.Text = mc.serialRecvAutoSteerStr; + //txtBoxSendAutoSteer.Text = mc.autoSteerData[mc.sdRelayLo] + ", " + mc.autoSteerData[mc.sdSpeed] + // + ", " + guidanceLineDistanceOff + ", " + guidanceLineSteerAngle + ", " + mc.machineControlData[mc.cnYouTurn]; - //Low means steer switch on + //Low means steer switch on if (mc.steerSwitchValue == 0) { this.btnTinyAutoSteerConfig.BackColor = System.Drawing.Color.LightBlue; @@ -3331,7 +3411,7 @@ private void tmrWatchdog_tick(object sender, EventArgs e) lblSpeedUnits.BackColor = SystemColors.ControlLight; txtDistanceOffABLine.BackColor = SystemColors.ControlLight; lblHz.BackColor = SystemColors.ControlLight; - lblFixQuality.BackColor = SystemColors.ControlLight; + //lblFixQuality.BackColor = SystemColors.ControlLight; //lblTest.BackColor = SystemColors.ControlLight; } else @@ -3343,15 +3423,15 @@ private void tmrWatchdog_tick(object sender, EventArgs e) lblSpeedUnits.BackColor = Color.Tomato; txtDistanceOffABLine.BackColor = Color.Tomato; lblHz.BackColor = Color.Tomato; - lblFixQuality.BackColor = Color.Tomato; + //lblFixQuality.BackColor = Color.Tomato; //lblTest.BackColor = Color.Tomato; } } //not Metric/Standard units sensitive - lblFixQuality.Text = FixQuality + HzTime.ToString("N1") + " Hz"; + //lblFixQuality.Text = ; lblLidarDistance.Text = (mc.lidarDistance * 0.01).ToString(); - lblHz.Text = NMEAHz + "Hz " + (int)(frameTime); + lblHz.Text = NMEAHz + "Hz " + (int)(frameTime) + "\r\n" + FixQuality + HzTime.ToString("N1") + " Hz"; } diff --git a/SourceCode/GPS/Forms/OpenGL.Designer.cs b/SourceCode/GPS/Forms/OpenGL.Designer.cs index 8b2eb8216..e878add3b 100644 --- a/SourceCode/GPS/Forms/OpenGL.Designer.cs +++ b/SourceCode/GPS/Forms/OpenGL.Designer.cs @@ -278,15 +278,13 @@ private void oglMain_Paint(object sender, PaintEventArgs e) GL.Disable(EnableCap.Texture2D); } } - - - + if (isLightbarOn) //{ } //else { - double set = guidanceLineSteerAngle * 0.01 * (100/vehicle.maxSteerAngle); - double actual = actualSteerAngleDisp * 0.01 * (100 / vehicle.maxSteerAngle); + double set = guidanceLineSteerAngle * 0.01 * (50/vehicle.maxSteerAngle); + double actual = actualSteerAngleDisp * 0.01 * (50 / vehicle.maxSteerAngle); double hiit = 0; GL.PushMatrix(); @@ -298,7 +296,7 @@ private void oglMain_Paint(object sender, PaintEventArgs e) GL.LineWidth(1); GL.Color3(0.54f, 0.54f, 0.54f); - double wiid = 100; + double wiid = 50; GL.Begin(PrimitiveType.LineStrip); GL.Vertex2(-wiid, 25); @@ -309,7 +307,6 @@ private void oglMain_Paint(object sender, PaintEventArgs e) GL.Translate(0, 10, 0); - //if (!simulatorOnToolStripMenuItem.Checked) { if (actualSteerAngleDisp > 0) { @@ -318,8 +315,8 @@ private void oglMain_Paint(object sender, PaintEventArgs e) GL.Color3(0.0f, 0.75930f, 0.0f); GL.Vertex2(0, hiit); - GL.Vertex2(actual, hiit + 15); - GL.Vertex2(0, hiit + 30); + GL.Vertex2(actual, hiit + 8); + GL.Vertex2(0, hiit + 16); GL.Vertex2(0, hiit); GL.End(); @@ -332,8 +329,8 @@ private void oglMain_Paint(object sender, PaintEventArgs e) GL.Color3(0.75930f, 0.0f, 0.0f); GL.Vertex2(-0, hiit); - GL.Vertex2(actual, hiit + 15); - GL.Vertex2(-0, hiit + 30); + GL.Vertex2(actual, hiit + 8); + GL.Vertex2(-0, hiit + 16); GL.Vertex2(-0, hiit); GL.End(); @@ -347,8 +344,8 @@ private void oglMain_Paint(object sender, PaintEventArgs e) GL.Color3(0.75930f, 0.75930f, 0.0f); GL.Vertex2(0, hiit); - GL.Vertex2(set, hiit + 15); - GL.Vertex2(0, hiit + 30); + GL.Vertex2(set, hiit + 8); + GL.Vertex2(0, hiit + 16); GL.Vertex2(0, hiit); GL.End(); @@ -360,8 +357,8 @@ private void oglMain_Paint(object sender, PaintEventArgs e) GL.Color3(0.75930f, 0.75930f, 0.0f); GL.Vertex2(-0, hiit); - GL.Vertex2(set, hiit + 15); - GL.Vertex2(-0, hiit + 30); + GL.Vertex2(set, hiit + 8); + GL.Vertex2(-0, hiit + 16); GL.Vertex2(-0, hiit); GL.End(); @@ -370,11 +367,8 @@ private void oglMain_Paint(object sender, PaintEventArgs e) //return back GL.PopMatrix(); GL.LineWidth(1); - } - - //LightBar if AB Line is set and turned on or contour if (isLightbarOn) { @@ -998,7 +992,7 @@ private void oglZoom_Paint(object sender, PaintEventArgs e) } //end of section patches //draw the ABLine - if (ABLine.isABLineSet | ABLine.isABLineBeingSet) + if ((ABLine.isABLineSet | ABLine.isABLineBeingSet) && ABLine.isBtnABLineOn) { //Draw reference AB line GL.LineWidth(1); @@ -1014,20 +1008,20 @@ private void oglZoom_Paint(object sender, PaintEventArgs e) //raw current AB Line GL.Begin(PrimitiveType.Lines); - GL.Color3(0.9f, 0.0f, 0.0f); + GL.Color3(0.9f, 0.20f, 0.0f); GL.Vertex3(ABLine.currentABLineP1.easting, ABLine.currentABLineP1.northing, 0.0); GL.Vertex3(ABLine.currentABLineP2.easting, ABLine.currentABLineP2.northing, 0.0); GL.End(); } //draw curve if there is one - if (curve.isCurveSet) + if (curve.isCurveSet && curve.isCurveBtnOn) { int ptC = curve.curList.Count; if (ptC > 0) { GL.LineWidth(2); - GL.Color3(0.95f, 0.2f, 0.0f); + GL.Color3(0.25f, 0.92f, 0.0f); GL.Begin(PrimitiveType.LineStrip); for (int h = 0; h < ptC; h++) GL.Vertex3(curve.curList[h].easting, curve.curList[h].northing, 0); GL.End(); diff --git a/SourceCode/GPS/Forms/Position.designer.cs b/SourceCode/GPS/Forms/Position.designer.cs index 01115ad49..0a604c956 100644 --- a/SourceCode/GPS/Forms/Position.designer.cs +++ b/SourceCode/GPS/Forms/Position.designer.cs @@ -468,9 +468,20 @@ private void UpdateFixPosition() //distance from current pivot to first point of youturn pattern distancePivotToTurnLine = glm.Distance(yt.ytList[0], steerAxlePos); + if ((distancePivotToTurnLine <= 20.0) && (distancePivotToTurnLine >= 18.0) && !yt.isYouTurnTriggered) + + if (!isBoundAlarming) + { + sndBoundaryAlarm.Play(); + isBoundAlarming = true; + } + //if we are close enough to pattern, trigger. if ((distancePivotToTurnLine <= 1.0) && (distancePivotToTurnLine >= 0) && !yt.isYouTurnTriggered) + { yt.YouTurnTrigger(); + isBoundAlarming = false; + } } } } // end of isInWorkingArea @@ -507,6 +518,8 @@ private void UpdateFixPosition() frameTime = (double)swFrame.ElapsedTicks / (double)System.Diagnostics.Stopwatch.Frequency * 1000; } + public bool isBoundAlarming; + //all the hitch, pivot, section, trailing hitch, headings and fixes private void CalculatePositionHeading() diff --git a/SourceCode/GPS/Forms/SaveOpen.Designer.cs b/SourceCode/GPS/Forms/SaveOpen.Designer.cs index b25de17b3..acae05c46 100644 --- a/SourceCode/GPS/Forms/SaveOpen.Designer.cs +++ b/SourceCode/GPS/Forms/SaveOpen.Designer.cs @@ -11,12 +11,381 @@ namespace AgOpenGPS public partial class FormGPS { + //public void FileAppendCurveLine(string curveName) + //{ + // //get the directory and make sure it exists, create if not + // string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + // string directoryName = Path.GetDirectoryName(dirField); + + // if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + // { Directory.CreateDirectory(directoryName); } + + // string filename = directoryName + "\\CurveLines.txt"; + + // //use Streamwriter to create and append to existing curveLines file + // using (StreamWriter writer = new StreamWriter(filename, true)) + // { + // try + // { + // if (curve.refList.Count > 0) + // { + // if (curveName.Length > 0) + // { + // curve.curveArr.Add(new CCurveLines()); + // curve.curveArr[curve.curveArr.Count - 1].Name = curveName; + // curve.curveArr[curve.curveArr.Count - 1].aveHeading = curve.aveLineHeading; + + // //write out the ABLine + // writer.WriteLine(curveName); + + // //write out the aveheading + // writer.WriteLine(curve.aveLineHeading.ToString(CultureInfo.InvariantCulture)); + + // //write out the points of ref line + // writer.WriteLine(curve.refList.Count.ToString(CultureInfo.InvariantCulture)); + + // for (int j = 0; j < curve.refList.Count; j++) + // { + // curve.curveArr[curve.curveArr.Count - 1].curvePts.Add(curve.refList[j]); + // writer.WriteLine(Math.Round(curve.refList[j].easting, 3).ToString(CultureInfo.InvariantCulture) + "," + + // Math.Round(curve.refList[j].northing, 3).ToString(CultureInfo.InvariantCulture) + "," + + // Math.Round(curve.refList[j].heading, 5).ToString(CultureInfo.InvariantCulture)); + // } + // } + // else + // { + // //MessageBox.Show("Currently no ABCurve name\n create ABCurve name"); + // var form2 = new FormTimedMessage(2000, gStr.gsNoNameEntered, gStr.gsEnterUniqueABCurveName); + // form2.Show(); + // } + // } + // else + // { + // var form2 = new FormTimedMessage(2000, gStr.gsNoABCurveCreated, gStr.gsCompleteAnABCurveLineFirst); + // form2.Show(); + // } + // } + // catch (Exception er) + // { + // WriteErrorLog("Saving Curve Line" + er.ToString()); + + // return; + // } + // } + + // if (curve.numCurveLines == 0) curve.numCurveLineSelected = 0; + // if (curve.numCurveLineSelected > curve.numCurveLines) curve.numCurveLineSelected = curve.numCurveLines; + + //} + //public void FileAppendABLine() + //{ + // //make sure at least a global blank AB Line file exists + // string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + // string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + + // if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + // { Directory.CreateDirectory(directoryName); } + + // string filename = directoryName + "\\ABLines.txt"; + + // ABLine.numABLines = ABLine.lineArr.Count; + + // if (ABLine.numABLines > 0) + // { + // int idx = ABLine.numABLines - 1; + + // using (StreamWriter writer = new StreamWriter(filename, true)) + // { + // try + // { + + // //make it culture invariant + // string line = ABLine.lineArr[idx].Name.Trim() + // + ',' + (Math.Round(glm.toDegrees(ABLine.lineArr[idx].heading), 8)).ToString(CultureInfo.InvariantCulture) + // + ',' + (Math.Round(ABLine.lineArr[idx].origin.easting, 3)).ToString(CultureInfo.InvariantCulture) + // + ',' + (Math.Round(ABLine.lineArr[idx].origin.northing, 3)).ToString(CultureInfo.InvariantCulture); + + // //write out to file + // writer.WriteLine(line); + // } + // catch (Exception er) + // { + // Console.WriteLine(er.Message + "\n Cannot write to file."); + // WriteErrorLog("Saving ABLines Draw append" + er.ToString()); + // return; + // } + // } + // } + + // if (ABLine.numABLines == 0) ABLine.numABLines = 0; + // if (ABLine.numABLineSelected > ABLine.numABLines) ABLine.numABLineSelected = ABLine.numABLines; + //} + //list of the list of patch data individual triangles for field sections public List> patchSaveList = new List>(); //list of the list of patch data individual triangles for contour tracking public List> contourSaveList = new List>(); + public void FileSaveCurveLines() + { + string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + + if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + { Directory.CreateDirectory(directoryName); } + + string filename = directoryName + "\\CurveLines.txt"; + + int cnt = curve.curveArr.Count; + curve.numCurveLines = cnt; + + using (StreamWriter writer = new StreamWriter(filename, false)) + { + try + { + if (cnt > 0) + { + writer.WriteLine("$CurveLines"); + + for (int i = 0; i < cnt; i++) + { + //write out the Name + writer.WriteLine(curve.curveArr[i].Name); + + //write out the aveheading + writer.WriteLine(curve.curveArr[i].aveHeading.ToString(CultureInfo.InvariantCulture)); + + //write out the points of ref line + int cnt2 = curve.curveArr[i].curvePts.Count; + + writer.WriteLine(cnt2.ToString(CultureInfo.InvariantCulture)); + if (curve.curveArr[i].curvePts.Count > 0) + { + for (int j = 0; j < cnt2; j++) + writer.WriteLine(Math.Round(curve.curveArr[i].curvePts[j].easting, 3).ToString(CultureInfo.InvariantCulture) + "," + + Math.Round(curve.curveArr[i].curvePts[j].northing, 3).ToString(CultureInfo.InvariantCulture) + "," + + Math.Round(curve.curveArr[i].curvePts[j].heading, 5).ToString(CultureInfo.InvariantCulture)); + } + } + } + else + { + writer.WriteLine("$CurveLines"); + } + } + catch (Exception er) + { + WriteErrorLog("Saving Curve Line" + er.ToString()); + + return; + } + } + + if (curve.numCurveLines == 0) curve.numCurveLineSelected = 0; + if (curve.numCurveLineSelected > curve.numCurveLines) curve.numCurveLineSelected = curve.numCurveLines; + + } + + public void FileLoadCurveLines() + { + curve.curveArr?.Clear(); + curve.numCurveLines = 0; + + //get the directory and make sure it exists, create if not + string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.GetDirectoryName(dirField); + + if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + { Directory.CreateDirectory(directoryName); } + + string filename = directoryName + "\\CurveLines.txt"; + + if (!File.Exists(filename)) + { + using (StreamWriter writer = new StreamWriter(filename)) + { + writer.WriteLine("$CurveLines"); + } + } + + //get the file of previous AB Lines + if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + { Directory.CreateDirectory(directoryName); } + + if (!File.Exists(filename)) + { + TimedMessageBox(2000, gStr.gsFileError, gStr.gsMissingABCurveFile); + } + else + { + using (StreamReader reader = new StreamReader(filename)) + { + try + { + string line; + + //read header $CurveLine + line = reader.ReadLine(); + + while (!reader.EndOfStream) + { + curve.curveArr.Add(new CCurveLines()); + + //read header $CurveLine + curve.curveArr[curve.numCurveLines].Name = reader.ReadLine(); + // get the average heading + line = reader.ReadLine(); + curve.curveArr[curve.numCurveLines].aveHeading = double.Parse(line, CultureInfo.InvariantCulture); + + line = reader.ReadLine(); + int numPoints = int.Parse(line); + + if (numPoints > 1) + { + curve.curveArr[curve.numCurveLines].curvePts?.Clear(); + + for (int i = 0; i < numPoints; i++) + { + line = reader.ReadLine(); + string[] words = line.Split(','); + vec3 vecPt = new vec3(double.Parse(words[0], CultureInfo.InvariantCulture), + double.Parse(words[1], CultureInfo.InvariantCulture), + double.Parse(words[2], CultureInfo.InvariantCulture)); + curve.curveArr[curve.numCurveLines].curvePts.Add(vecPt); + } + curve.numCurveLines++; + } + else + { + if (curve.curveArr.Count > 0) + { + curve.curveArr.RemoveAt(curve.numCurveLines); + } + } + } + } + catch (Exception er) + { + var form = new FormTimedMessage(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); + form.Show(); + WriteErrorLog("Load Curve Line" + er.ToString()); + } + } + } + + if (curve.numCurveLines == 0) curve.numCurveLineSelected = 0; + if (curve.numCurveLineSelected > curve.numCurveLines) curve.numCurveLineSelected = curve.numCurveLines; + } + + public void FileSaveABLines() + { + //make sure at least a global blank AB Line file exists + string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + + //get the file of previous AB Lines + if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + { Directory.CreateDirectory(directoryName); } + + string filename = directoryName + "\\ABLines.txt"; + int cnt = ABLine.lineArr.Count; + + using (StreamWriter writer = new StreamWriter(filename, false)) + { + if (cnt > 0) + { + foreach (var item in ABLine.lineArr) + { + //make it culture invariant + string line = item.Name + + ',' + (Math.Round(glm.toDegrees(item.heading), 8)).ToString(CultureInfo.InvariantCulture) + + ',' + (Math.Round(item.origin.easting, 3)).ToString(CultureInfo.InvariantCulture) + + ',' + (Math.Round(item.origin.northing, 3)).ToString(CultureInfo.InvariantCulture); + + //write out to file + writer.WriteLine(line); + } + } + } + + if (ABLine.numABLines == 0) ABLine.numABLineSelected = 0; + if (ABLine.numABLineSelected > ABLine.numABLines) ABLine.numABLineSelected = ABLine.numABLines; + } + + public void FileLoadABLines() + { + //make sure at least a global blank AB Line file exists + string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + + if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + { Directory.CreateDirectory(directoryName); } + + string filename = directoryName + "\\ABLines.txt"; + + if (!File.Exists(filename)) + { + using (StreamWriter writer = new StreamWriter(filename)) + { + } + } + + if (!File.Exists(filename)) + { + TimedMessageBox(2000, gStr.gsFileError, gStr.gsMissingABLinesFile); + } + else + { + using (StreamReader reader = new StreamReader(filename)) + { + try + { + string line; + ABLine.numABLines = 0; + ABLine.numABLineSelected = 0; + ABLine.lineArr?.Clear(); + + //read all the lines + for (int i = 0; !reader.EndOfStream; i++) + { + + line = reader.ReadLine(); + string[] words = line.Split(','); + + if (words.Length != 4) break; + + ABLine.lineArr.Add(new CABLines()); + + ABLine.lineArr[i].Name = words[0]; + + + ABLine.lineArr[i].heading = glm.toRadians(double.Parse(words[1], CultureInfo.InvariantCulture)); + ABLine.lineArr[i].origin.easting = double.Parse(words[2], CultureInfo.InvariantCulture); + ABLine.lineArr[i].origin.northing = double.Parse(words[3], CultureInfo.InvariantCulture); + + ABLine.lineArr[i].ref1.easting = ABLine.lineArr[i].origin.easting - (Math.Sin(ABLine.lineArr[i].heading) * 2000.0); + ABLine.lineArr[i].ref1.northing = ABLine.lineArr[i].origin.northing - (Math.Cos(ABLine.lineArr[i].heading) * 2000.0); + + ABLine.lineArr[i].ref2.easting = ABLine.lineArr[i].origin.easting + (Math.Sin(ABLine.lineArr[i].heading) * 2000.0); + ABLine.lineArr[i].ref2.northing = ABLine.lineArr[i].origin.northing + (Math.Cos(ABLine.lineArr[i].heading) * 2000.0); + ABLine.numABLines++; + } + } + catch (Exception er) + { + var form = new FormTimedMessage(2000, gStr.gsABLineFileIsCorrupt, "Please delete it!!!"); + form.Show(); + WriteErrorLog("FieldOpen, Loading ABLine, Corrupt ABLine File" + er); + } + } + } + + if (ABLine.numABLines == 0) ABLine.numABLineSelected = 0; + if (ABLine.numABLineSelected > ABLine.numABLines) ABLine.numABLineSelected = ABLine.numABLines; + + } + //function that save vehicle and section settings public void FileSaveVehicle() { @@ -705,12 +1074,183 @@ public void FileOpenField(string _openType) WriteErrorLog("While Opening Field" + e.ToString()); var form = new FormTimedMessage(2000, gStr.gsFieldFileIsCorrupt, gStr.gsChooseADifferentField); + form.Show(); JobClose(); return; } } + // ABLine ------------------------------------------------------------------------------------------------- + FileLoadABLines(); + + if (ABLine.lineArr.Count > 0) + { + ABLine.numABLineSelected = 1; + ABLine.refPoint1 = ABLine.lineArr[ABLine.numABLineSelected - 1].origin; + //ABLine.refPoint2 = ABLine.lineArr[ABLine.numABLineSelected - 1].ref2; + ABLine.abHeading = ABLine.lineArr[ABLine.numABLineSelected - 1].heading; + ABLine.SetABLineByHeading(); + ABLine.isABLineSet = false; + ABLine.isABLineLoaded = true; + } + else + { + ABLine.isABLineSet = false; + ABLine.isABLineLoaded = false; + } + + + //CurveLines + FileLoadCurveLines(); + if (curve.curveArr.Count > 0) + { + curve.numCurveLineSelected = 1; + int idx = curve.numCurveLineSelected - 1; + curve.aveLineHeading = curve.curveArr[idx].aveHeading; + + curve.refList?.Clear(); + for (int i = 0; i < curve.curveArr[idx].curvePts.Count; i++) + { + curve.refList.Add(curve.curveArr[idx].curvePts[i]); + } + curve.isCurveSet = true; + } + else + { + curve.isCurveSet = false; + curve.refList?.Clear(); + } + + ////Either exit or update running save + //fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\ABLine.txt"; + //if (!File.Exists(fileAndDirectory)) + //{ + // var form = new FormTimedMessage(2000, gStr.gsMissingABLinesFile, gStr.gsButFieldIsLoaded); + // form.Show(); + //} + + //else + //{ + // using (StreamReader reader = new StreamReader(fileAndDirectory)) + // { + // try + // { + // ABLine.isABLineLoaded = false; + + // //read header + // line = reader.ReadLine(); + + // line = reader.ReadLine(); + // bool isAB = bool.Parse(line); + + // if (isAB) + // { + // //Heading , ,refPoint2x,z + // line = reader.ReadLine(); + // ABLine.abHeading = double.Parse(line, CultureInfo.InvariantCulture); + + // //refPoint1x,z + // line = reader.ReadLine(); + // string[] words = line.Split(','); + // ABLine.refPoint1.easting = double.Parse(words[0], CultureInfo.InvariantCulture); + // ABLine.refPoint1.northing = double.Parse(words[1], CultureInfo.InvariantCulture); + + // //refPoint2x,z + // line = reader.ReadLine(); + // words = line.Split(','); + // ABLine.refPoint2.easting = double.Parse(words[0], CultureInfo.InvariantCulture); + // ABLine.refPoint2.northing = double.Parse(words[1], CultureInfo.InvariantCulture); + + // //Tramline + // line = reader.ReadLine(); + // words = line.Split(','); + // ABLine.tramPassEvery = int.Parse(words[0]); + // ABLine.passBasedOn = int.Parse(words[1]); + + // ABLine.refABLineP1.easting = ABLine.refPoint1.easting - Math.Sin(ABLine.abHeading) * 4000.0; + // ABLine.refABLineP1.northing = ABLine.refPoint1.northing - Math.Cos(ABLine.abHeading) * 4000.0; + + // ABLine.refABLineP2.easting = ABLine.refPoint1.easting + Math.Sin(ABLine.abHeading) * 4000.0; + // ABLine.refABLineP2.northing = ABLine.refPoint1.northing + Math.Cos(ABLine.abHeading) * 4000.0; + + // ABLine.isABLineLoaded = true; + + // } + + // //clean up from last field maybe + // ABLine.isABLineSet = false; + // ABLine.isBtnABLineOn = false; + // DisableYouTurnButtons(); + // btnContourPriority.Enabled = true; + // btnABLine.Image = global::AgOpenGPS.Properties.Resources.ABLineOff; + // } + + // catch (Exception e) + // { + // var form = new FormTimedMessage(2000, gStr.gsABLineFileIsCorrupt, gStr.gsButFieldIsLoaded); + // form.Show(); + // WriteErrorLog("Load AB Line" + e.ToString()); + + // } + // } + //} + //// CurveLine ------------------------------------------------------------------------------------------------- + + ////Either exit or update running save + //fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\CurveLine.txt"; + //if (!File.Exists(fileAndDirectory)) + //{ + // var form = new FormTimedMessage(2000, gStr.gsMissingABCurveFile, gStr.gsButFieldIsLoaded); + // form.Show(); + //} + + //else + //{ + // using (StreamReader reader = new StreamReader(fileAndDirectory)) + // { + // try + // { + // //read header + // line = reader.ReadLine(); + + // // get the average heading + // line = reader.ReadLine(); + // curve.aveLineHeading = double.Parse(line, CultureInfo.InvariantCulture); + + + // line = reader.ReadLine(); + // int numPoints = int.Parse(line); + + // if (numPoints > 0) + // { + // curve.refList?.Clear(); + + // //load the line + // for (int i = 0; i < numPoints; i++) + // { + // line = reader.ReadLine(); + // string[] words = line.Split(','); + // vec3 vecPt = new vec3( + // double.Parse(words[0], CultureInfo.InvariantCulture), + // double.Parse(words[1], CultureInfo.InvariantCulture), + // double.Parse(words[2], CultureInfo.InvariantCulture)); + + // curve.refList.Add(vecPt); + // } + // } + // } + + // catch (Exception e) + // { + // var form = new FormTimedMessage(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); + // form.Show(); + // WriteErrorLog("Load Boundary Line" + e.ToString()); + + // } + // } + //} + //section patches fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\Sections.txt"; if (!File.Exists(fileAndDirectory)) @@ -888,82 +1428,6 @@ public void FileOpenField(string _openType) } - // ABLine ------------------------------------------------------------------------------------------------- - - //Either exit or update running save - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\ABLine.txt"; - if (!File.Exists(fileAndDirectory)) - { - var form = new FormTimedMessage(2000, gStr.gsMissingABLinesFile, gStr.gsButFieldIsLoaded); - form.Show(); - } - - else - { - using (StreamReader reader = new StreamReader(fileAndDirectory)) - { - try - { - ABLine.isABLineLoaded = false; - - //read header - line = reader.ReadLine(); - - line = reader.ReadLine(); - bool isAB = bool.Parse(line); - - if (isAB) - { - //Heading , ,refPoint2x,z - line = reader.ReadLine(); - ABLine.abHeading = double.Parse(line, CultureInfo.InvariantCulture); - - //refPoint1x,z - line = reader.ReadLine(); - string[] words = line.Split(','); - ABLine.refPoint1.easting = double.Parse(words[0], CultureInfo.InvariantCulture); - ABLine.refPoint1.northing = double.Parse(words[1], CultureInfo.InvariantCulture); - - //refPoint2x,z - line = reader.ReadLine(); - words = line.Split(','); - ABLine.refPoint2.easting = double.Parse(words[0], CultureInfo.InvariantCulture); - ABLine.refPoint2.northing = double.Parse(words[1], CultureInfo.InvariantCulture); - - //Tramline - line = reader.ReadLine(); - words = line.Split(','); - ABLine.tramPassEvery = int.Parse(words[0]); - ABLine.passBasedOn = int.Parse(words[1]); - - ABLine.refABLineP1.easting = ABLine.refPoint1.easting - Math.Sin(ABLine.abHeading) * 4000.0; - ABLine.refABLineP1.northing = ABLine.refPoint1.northing - Math.Cos(ABLine.abHeading) * 4000.0; - - ABLine.refABLineP2.easting = ABLine.refPoint1.easting + Math.Sin(ABLine.abHeading) * 4000.0; - ABLine.refABLineP2.northing = ABLine.refPoint1.northing + Math.Cos(ABLine.abHeading) * 4000.0; - - ABLine.isABLineLoaded = true; - - } - - //clean up from last field maybe - ABLine.isABLineSet = false; - ABLine.isBtnABLineOn = false; - DisableYouTurnButtons(); - btnContourPriority.Enabled = true; - btnABLine.Image = global::AgOpenGPS.Properties.Resources.ABLineOff; - } - - catch (Exception e) - { - var form = new FormTimedMessage(2000, gStr.gsABLineFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(); - WriteErrorLog("Load AB Line" + e.ToString()); - - } - } - } - //Boundaries //Either exit or update running save fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\Boundary.txt"; @@ -1150,61 +1614,7 @@ public void FileOpenField(string _openType) } } - // CurveLine ------------------------------------------------------------------------------------------------- - - //Either exit or update running save - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\CurveLine.txt"; - if (!File.Exists(fileAndDirectory)) - { - var form = new FormTimedMessage(2000, gStr.gsMissingABCurveFile, gStr.gsButFieldIsLoaded); - form.Show(); - } - - else - { - using (StreamReader reader = new StreamReader(fileAndDirectory)) - { - try - { - //read header - line = reader.ReadLine(); - - // get the average heading - line = reader.ReadLine(); - curve.aveLineHeading = double.Parse(line, CultureInfo.InvariantCulture); - - - line = reader.ReadLine(); - int numPoints = int.Parse(line); - - if (numPoints > 0) - { - curve.refList?.Clear(); - //load the line - for (int i = 0; i < numPoints; i++) - { - line = reader.ReadLine(); - string[] words = line.Split(','); - vec3 vecPt = new vec3( - double.Parse(words[0], CultureInfo.InvariantCulture), - double.Parse(words[1], CultureInfo.InvariantCulture), - double.Parse(words[2], CultureInfo.InvariantCulture)); - - curve.refList.Add(vecPt); - } - } - } - - catch (Exception e) - { - var form = new FormTimedMessage(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(); - WriteErrorLog("Load Boundary Line" + e.ToString()); - - } - } - } }//end of open file //creates the field file when starting new field @@ -1578,89 +1988,89 @@ public void FileSaveFlags() } //save all the flag markers - public void FileSaveABLine() - { - //Saturday, February 11, 2017 --> 7:26:52 AM + //public void FileSaveABLine() + //{ + // //Saturday, February 11, 2017 --> 7:26:52 AM - //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + // //get the directory and make sure it exists, create if not + // string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } + // string directoryName = Path.GetDirectoryName(dirField); + // if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + // { Directory.CreateDirectory(directoryName); } - //use Streamwriter to create and overwrite existing ABLine file - using (StreamWriter writer = new StreamWriter(dirField + "ABLine.txt")) - { - try - { - //write out the ABLine - writer.WriteLine("$ABLine"); + // //use Streamwriter to create and overwrite existing ABLine file + // using (StreamWriter writer = new StreamWriter(dirField + "ABLine.txt")) + // { + // try + // { + // //write out the ABLine + // writer.WriteLine("$ABLine"); - //true or false if ABLine is set - if (ABLine.isABLineSet) writer.WriteLine(true); - else writer.WriteLine(false); + // //true or false if ABLine is set + // if (ABLine.isABLineSet) writer.WriteLine(true); + // else writer.WriteLine(false); - writer.WriteLine(ABLine.abHeading.ToString(CultureInfo.InvariantCulture)); - writer.WriteLine(ABLine.refPoint1.easting.ToString(CultureInfo.InvariantCulture) + "," + ABLine.refPoint1.northing.ToString(CultureInfo.InvariantCulture)); - writer.WriteLine(ABLine.refPoint2.easting.ToString(CultureInfo.InvariantCulture) + "," + ABLine.refPoint2.northing.ToString(CultureInfo.InvariantCulture)); - writer.WriteLine(ABLine.tramPassEvery.ToString(CultureInfo.InvariantCulture) + "," + ABLine.passBasedOn.ToString(CultureInfo.InvariantCulture)); - } + // writer.WriteLine(ABLine.abHeading.ToString(CultureInfo.InvariantCulture)); + // writer.WriteLine(ABLine.refPoint1.easting.ToString(CultureInfo.InvariantCulture) + "," + ABLine.refPoint1.northing.ToString(CultureInfo.InvariantCulture)); + // writer.WriteLine(ABLine.refPoint2.easting.ToString(CultureInfo.InvariantCulture) + "," + ABLine.refPoint2.northing.ToString(CultureInfo.InvariantCulture)); + // writer.WriteLine(ABLine.tramPassEvery.ToString(CultureInfo.InvariantCulture) + "," + ABLine.passBasedOn.ToString(CultureInfo.InvariantCulture)); + // } - catch (Exception e) - { - Console.WriteLine(e.Message + "\n Cannot write to file."); - WriteErrorLog("Saving AB Line" + e.ToString()); + // catch (Exception e) + // { + // Console.WriteLine(e.Message + "\n Cannot write to file."); + // WriteErrorLog("Saving AB Line" + e.ToString()); - return; - } + // return; + // } - } - } + // } + //} //save all the flag markers - public void FileSaveCurveLine() - { - //Saturday, February 11, 2017 --> 7:26:52 AM + //public void FileSaveCurveLine() + //{ + // //Saturday, February 11, 2017 --> 7:26:52 AM - //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + // //get the directory and make sure it exists, create if not + // string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - { Directory.CreateDirectory(directoryName); } + // string directoryName = Path.GetDirectoryName(dirField); + // if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + // { Directory.CreateDirectory(directoryName); } - //use Streamwriter to create and overwrite existing ABLine file - using (StreamWriter writer = new StreamWriter(dirField + "CurveLine.txt")) - { - try - { - //write out the ABLine - writer.WriteLine("$CurveLine"); + // //use Streamwriter to create and overwrite existing ABLine file + // using (StreamWriter writer = new StreamWriter(dirField + "CurveLine.txt")) + // { + // try + // { + // //write out the ABLine + // writer.WriteLine("$CurveLine"); - //write out the aveheading - writer.WriteLine(curve.aveLineHeading.ToString(CultureInfo.InvariantCulture)); + // //write out the aveheading + // writer.WriteLine(curve.aveLineHeading.ToString(CultureInfo.InvariantCulture)); - //write out the points of ref line - writer.WriteLine(curve.refList.Count.ToString(CultureInfo.InvariantCulture)); - if (curve.refList.Count > 0) - { - for (int j = 0; j < curve.refList.Count; j++) - writer.WriteLine(Math.Round(curve.refList[j].easting, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(curve.refList[j].northing, 3).ToString(CultureInfo.InvariantCulture) + "," + - Math.Round(curve.refList[j].heading, 5).ToString(CultureInfo.InvariantCulture)); - } - } + // //write out the points of ref line + // writer.WriteLine(curve.refList.Count.ToString(CultureInfo.InvariantCulture)); + // if (curve.refList.Count > 0) + // { + // for (int j = 0; j < curve.refList.Count; j++) + // writer.WriteLine(Math.Round(curve.refList[j].easting, 3).ToString(CultureInfo.InvariantCulture) + "," + + // Math.Round(curve.refList[j].northing, 3).ToString(CultureInfo.InvariantCulture) + "," + + // Math.Round(curve.refList[j].heading, 5).ToString(CultureInfo.InvariantCulture)); + // } + // } - catch (Exception e) - { - WriteErrorLog("Saving Curve Line" + e.ToString()); + // catch (Exception e) + // { + // WriteErrorLog("Saving Curve Line" + e.ToString()); - return; - } + // return; + // } - } - } + // } + //} //save nmea sentences public void FileSaveNMEA() diff --git a/SourceCode/GPS/Forms/UDPComm.Designer.cs b/SourceCode/GPS/Forms/UDPComm.Designer.cs index ae692fa4a..ebe0cfd06 100644 --- a/SourceCode/GPS/Forms/UDPComm.Designer.cs +++ b/SourceCode/GPS/Forms/UDPComm.Designer.cs @@ -222,6 +222,161 @@ private void UpdateRecvMessage(int port, byte[] data) } } + #region keystrokes + //keystrokes for easy and quick startup + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) + { + //reset Sim + if (keyData == Keys.L) + { + btnResetSim.PerformClick(); + return true; + } + + //speed up + if (keyData == Keys.Up) + { + sim.stepDistance += 0.05; + if (sim.stepDistance > 4.8) sim.stepDistance = 4.8; + hsbarStepDistance.Value = (int)(sim.stepDistance * 10.0 * fixUpdateHz); + + return true; + } + + //Stop + if (keyData == Keys.OemPeriod) + { + sim.stepDistance = 0; + hsbarStepDistance.Value = 0; + return true; + } + + //slow down + if (keyData == Keys.Down) + { + sim.stepDistance -= 0.05; + if (sim.stepDistance < 0) sim.stepDistance = 0; + hsbarStepDistance.Value = (int)(sim.stepDistance * 10.0 * fixUpdateHz); + return true; + } + + //turn right + if (keyData == Keys.Right) + { + sim.steerAngle++; + if (sim.steerAngle > 30) sim.steerAngle = 30; + if (sim.steerAngle < -30) sim.steerAngle = -30; + sim.steerAngleScrollBar = sim.steerAngle; + btnResetSteerAngle.Text = sim.steerAngle.ToString(); + hsbarSteerAngle.Value = (int)(10 * sim.steerAngle) + 300; + return true; + } + + //turn left + if (keyData == Keys.Left) + { + sim.steerAngle--; + if (sim.steerAngle > 30) sim.steerAngle = 30; + if (sim.steerAngle < -30) sim.steerAngle = -30; + sim.steerAngleScrollBar = sim.steerAngle; + btnResetSteerAngle.Text = sim.steerAngle.ToString(); + hsbarSteerAngle.Value = (int)(10 * sim.steerAngle) + 300; + return true; + } + + //zero steering + if (keyData == Keys.OemQuestion) + { + sim.steerAngle = 0.0; + sim.steerAngleScrollBar = sim.steerAngle; + btnResetSteerAngle.Text = sim.steerAngle.ToString(); + hsbarSteerAngle.Value = (int)(10 * sim.steerAngle) + 300; + return true; + } + + if (keyData == (Keys.F)) + { + JobNewOpenResume(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.A)) //autosteer button on off + { + btnAutoSteer.PerformClick(); + return true; // indicate that you handled this keystroke + } + + //if (keyData == (Keys.S)) //open the steer chart + //{ + // toolstripAutoSteerConfig.PerformClick(); + // return true; // indicate that you handled this keystroke + //} + + if (keyData == (Keys.S)) //open the steer chart + { + btnContourPriority.PerformClick(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.C)) //open the steer chart + { + toolStripAutoSteerChart.PerformClick(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.V)) //open the vehicle Settings + { + toolstripVehicleConfig.PerformClick(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.U)) //open the UTurn Settings + { + toolstripYouTurnConfig.PerformClick(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.NumPad1)) //auto section on off + { + btnSectionOffAutoOn.PerformClick(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.N)) //auto section on off + { + btnSectionOffAutoOn.PerformClick(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.NumPad0)) //auto section on off + { + btnManualOffOn.PerformClick(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.M)) //auto section on off + { + btnManualOffOn.PerformClick(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.G)) // Flag click + { + btnFlag.PerformClick(); + return true; // indicate that you handled this keystroke + } + + if (keyData == (Keys.P)) // Snap/Prioritu click + { + btnContourPriority.PerformClick(); + return true; // indicate that you handled this keystroke + } + + // Call the base class + return base.ProcessCmdKey(ref msg, keyData); + } + #endregion + #region Gesture // Private variables used to maintain the state of gestures @@ -580,135 +735,5 @@ private bool DecodeGesture(ref Message m) #endregion Gesture - #region keystrokes - //keystrokes for easy and quick startup - protected override bool ProcessCmdKey(ref Message msg, Keys keyData) - { - //reset Sim - if (keyData == Keys.L) - { - btnResetSim.PerformClick(); - return true; - } - - //speed up - if (keyData == Keys.Up) - { - sim.stepDistance += 0.05; - if (sim.stepDistance > 4.8) sim.stepDistance = 4.8; - hsbarStepDistance.Value = (int)(sim.stepDistance * 10.0 * fixUpdateHz); - - return true; - } - - //Stop - if (keyData == Keys.OemPeriod) - { - sim.stepDistance = 0; - hsbarStepDistance.Value = 0; - return true; - } - - //slow down - if (keyData == Keys.Down) - { - sim.stepDistance -= 0.05; - if (sim.stepDistance < 0) sim.stepDistance = 0; - hsbarStepDistance.Value = (int)(sim.stepDistance * 10.0 * fixUpdateHz); - return true; - } - - //turn right - if (keyData == Keys.Right) - { - sim.steerAngle++; - if (sim.steerAngle > 30) sim.steerAngle = 30; - if (sim.steerAngle < -30) sim.steerAngle = -30; - sim.steerAngleScrollBar = sim.steerAngle; - btnResetSteerAngle.Text = sim.steerAngle.ToString(); - hsbarSteerAngle.Value = (int)(10 * sim.steerAngle) + 300; - return true; - } - - //turn left - if (keyData == Keys.Left) - { - sim.steerAngle--; - if (sim.steerAngle > 30) sim.steerAngle = 30; - if (sim.steerAngle < -30) sim.steerAngle = -30; - sim.steerAngleScrollBar = sim.steerAngle; - btnResetSteerAngle.Text = sim.steerAngle.ToString(); - hsbarSteerAngle.Value = (int)(10 * sim.steerAngle) + 300; - return true; - } - - //zero steering - if (keyData == Keys.OemQuestion) - { - sim.steerAngle = 0.0; - sim.steerAngleScrollBar = sim.steerAngle; - btnResetSteerAngle.Text = sim.steerAngle.ToString(); - hsbarSteerAngle.Value = (int)(10 * sim.steerAngle) + 300; - return true; - } - - if (keyData == (Keys.F)) - { - JobNewOpenResume(); - return true; // indicate that you handled this keystroke - } - - if (keyData == (Keys.A)) //autosteer button on off - { - btnAutoSteer.PerformClick(); - return true; // indicate that you handled this keystroke - } - - //if (keyData == (Keys.S)) //open the steer chart - //{ - // toolstripAutoSteerConfig.PerformClick(); - // return true; // indicate that you handled this keystroke - //} - - if (keyData == (Keys.S)) //open the steer chart - { - btnContourPriority.PerformClick(); - return true; // indicate that you handled this keystroke - } - - if (keyData == (Keys.C)) //open the steer chart - { - toolStripAutoSteerChart.PerformClick(); - return true; // indicate that you handled this keystroke - } - - if (keyData == (Keys.V)) //open the vehicle Settings - { - toolstripVehicleConfig.PerformClick(); - return true; // indicate that you handled this keystroke - } - - if (keyData == (Keys.U)) //open the UTurn Settings - { - toolstripYouTurnConfig.PerformClick(); - return true; // indicate that you handled this keystroke - } - - if (keyData == (Keys.NumPad1)) //auto section on off - { - btnSectionOffAutoOn.PerformClick(); - return true; // indicate that you handled this keystroke - } - - if (keyData == (Keys.G)) // Flag click - { - btnFlag.PerformClick(); - return true; // indicate that you handled this keystroke - } - - // Call the base class - return base.ProcessCmdKey(ref msg, keyData); - } - #endregion } } diff --git a/SourceCode/GPS/Properties/Resources.Designer.cs b/SourceCode/GPS/Properties/Resources.Designer.cs index b41674daa..f167822bb 100644 --- a/SourceCode/GPS/Properties/Resources.Designer.cs +++ b/SourceCode/GPS/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace AgOpenGPS.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -60,6 +60,16 @@ internal Resources() { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ABLineCycle { + get { + object obj = ResourceManager.GetObject("ABLineCycle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -80,6 +90,16 @@ internal static System.Drawing.Bitmap ABLineOn { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ABLineTurnOff { + get { + object obj = ResourceManager.GetObject("ABLineTurnOff", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -90,6 +110,25 @@ internal static System.Drawing.Bitmap ABSmooth { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap AddNew { + get { + object obj = ResourceManager.GetObject("AddNew", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. + /// + internal static System.IO.UnmanagedMemoryStream Alarm10 { + get { + return ResourceManager.GetStream("Alarm10", resourceCulture); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -450,6 +489,16 @@ internal static System.Drawing.Bitmap CurveOn { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap CurveTurnOff { + get { + object obj = ResourceManager.GetObject("CurveTurnOff", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -460,6 +509,16 @@ internal static System.Drawing.Bitmap Custom { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap displayMenu { + get { + object obj = ResourceManager.GetObject("displayMenu", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -520,6 +579,16 @@ internal static System.Drawing.Bitmap FileExplorerWindows { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fileMenu { + get { + object obj = ResourceManager.GetObject("fileMenu", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -530,6 +599,16 @@ internal static System.Drawing.Bitmap FileNew { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap FileNewAndGo { + get { + object obj = ResourceManager.GetObject("FileNewAndGo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -1200,6 +1279,26 @@ internal static System.Drawing.Bitmap Stop { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SwitchOff { + get { + object obj = ResourceManager.GetObject("SwitchOff", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SwitchOn { + get { + object obj = ResourceManager.GetObject("SwitchOn", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/SourceCode/GPS/Properties/Resources.resx b/SourceCode/GPS/Properties/Resources.resx index 53b02c044..17462b7ad 100644 --- a/SourceCode/GPS/Properties/Resources.resx +++ b/SourceCode/GPS/Properties/Resources.resx @@ -118,421 +118,451 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\btnImages\ABLineOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ZoomIn48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ABLineOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Youturn80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ABSmooth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SetupStatusStrip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\AreaSide.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\RateControlOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ArrowLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SectionMasterOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ArrowRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SteerAhead.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ArrowTurnLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ArrowTurnRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SectionSettingsBackground.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\AutoGo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\CurveTurnOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\ArrowTurnLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\AutoSteerConf.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\AutoSteerOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Settings48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\AutoSteerOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\VehicleSettingsAntenna.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\AutoStop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ContourPriorityRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Batman48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Camera3D64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\BoundaryDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\TiltDown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\BoundaryLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\BoundaryMenu.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FileOpen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\BoundaryOuter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\boundaryPause.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\BoundaryRecord.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\BoundaryRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Snap2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Camera2D64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\WideReturn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Camera3D64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Extents.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Camera54.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FlagRed.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\CameraNorth64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\DnArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Cancel64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Chart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\TiltUp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\AreaSide.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ColorField.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\LetterABlue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ComPorts.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Custom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ContourOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FlagYel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ContourOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\HideContour.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ContourPriorityLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\MakeBoundary.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ContourPriorityRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\BoundaryMenu.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\CurveOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Chart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\CurveOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ZoomOut48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Custom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\BoundaryRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\DnArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\BoundaryDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Examples.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Rate64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Extents.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Settings64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FileDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\RecPath.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FileDontSave.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\back-button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FileExplorerWindows.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\PointStart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FileNew.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ArrowRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FileOpen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ComPorts.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FilePrevious.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Headland.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FileSave.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\PeriDone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FileUse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\MakeBoundaryContour.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FlagDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\start.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FlagDeleteAll.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ArrowLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FlagGrn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Settings64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FlagRed.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ManualOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FlagYel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\KeyHole.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FlowMeterDual.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Examples.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FlowMeterSingle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\PointDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\GoogleEarth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\UpArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\GoogleEarth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SettingsGear32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Headland.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\LonLat.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Stop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\HideContour.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ContourPriorityLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Home64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FlagDeleteAll.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\YouTurnNo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\SwitchOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\AutoStop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\displayMenu.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\ImplementSettings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\JobActive.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Batman48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\KeyHole.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ABLineTurnOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\LetterABlue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ZeroPitchRoll.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\SectionMasterOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\radar-icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\ArrowTurnRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\LetterBBlue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\LonLat.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ToolSettings.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\MakeBoundary.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\RateControlOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\MakeBoundaryContour.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FlowMeterDual.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ManualOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\YouTurnBackground.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ManualOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ABLineOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Menu5.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Youturn64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\NtripSettings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\BoundaryOuter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\OK64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Home64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\PeriArea.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\AutoGo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\PeriDone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\tire.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\PeriDraw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FileUse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\PivotBehind.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\GoogleEarth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\AutoSteerOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\NtripSettings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\ManualOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\PivotAhead.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\PivotBehind.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\fileMenu.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\VehHitched64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\PointDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\JobActive.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\ABSmooth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\AutoSteerOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\PointDone.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\PointStart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\WorkSwitch.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\Start48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Rate1Select.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Rate64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\RateControlOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\RateControlOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\CameraNorth64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\RateSelect2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FilePrevious.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\RecPath.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Webcam.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Satellite64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\CurveOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SectionMasterOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ABLineOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SectionMasterOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FileSave.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SectionSettingsBackground.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SteerBehind.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\SemiCircle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Settings48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\Settings64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\Settings64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\SettingsGear32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\SettingsGear64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Camera54.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SetupStatusStrip.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SwitchOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Snap2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SpecialFunctions.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ColorField.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Start48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\AddNew.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Start64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\TripOdometer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SteerAhead.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\YouTurnReverse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SteerBehind.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FlagDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Stop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FileDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\TiltDown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\OK64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\TiltUp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\RateSelect2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ToolSettings.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FileExplorerWindows.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\TripOdometer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\GoogleEarth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\UDPConfig.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\PeriDraw.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\UpArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\VehicleSettings.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\VehAft64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\VehFore64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\boundaryStop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\VehHitched64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FlagGrn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\boundaryPlay.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\VehRigid64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\VehicleSettings.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ABLineCycle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\VehicleSettingsAntenna.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\Webcam.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SpecialFunctions.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\WideReturn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FlowMeterSingle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\WorkSwitch.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FileDontSave.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\YouTurnBackground.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FileNew.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\YouTurnNo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Start64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\YouTurnReverse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\gyro.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Youturn64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Color.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Youturn80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Menu5.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ZeroPitchRoll.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\VehFore64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ZoomIn48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ContourOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ZoomOut48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\skull.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\back-button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\UDPConfig.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\boundaryPause.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Camera2D64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\boundaryPlay.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\CurveOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\boundaryStop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\tree.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\gyro.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SettingsGear64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\radar-icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ContourOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\skull.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\PeriArea.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\start.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Satellite64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\tire.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FileNewAndGo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\tree.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Alarm10.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/SourceCode/GPS/Properties/Settings.Designer.cs b/SourceCode/GPS/Properties/Settings.Designer.cs index 81a8cfbdb..4be629bdd 100644 --- a/SourceCode/GPS/Properties/Settings.Designer.cs +++ b/SourceCode/GPS/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace AgOpenGPS.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.2.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -1069,13 +1069,13 @@ public double setRate_rateLeft { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool setDisplay_isLargePanel { + [global::System.Configuration.DefaultSettingValueAttribute("1")] + public int setDisplay_panelStatus { get { - return ((bool)(this["setDisplay_isLargePanel"])); + return ((int)(this["setDisplay_panelStatus"])); } set { - this["setDisplay_isLargePanel"] = value; + this["setDisplay_panelStatus"] = value; } } @@ -1090,5 +1090,17 @@ public bool isJRK { this["isJRK"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("2")] + public int setDisplay_lineWidth { + get { + return ((int)(this["setDisplay_lineWidth"])); + } + set { + this["setDisplay_lineWidth"] = value; + } + } } } diff --git a/SourceCode/GPS/Properties/Settings.settings b/SourceCode/GPS/Properties/Settings.settings index 8c063928b..baabbc527 100644 --- a/SourceCode/GPS/Properties/Settings.settings +++ b/SourceCode/GPS/Properties/Settings.settings @@ -263,11 +263,14 @@ 50 - - False + + 1 False + + 2 + \ No newline at end of file diff --git a/SourceCode/GPS/Resources/Alarm10.wav b/SourceCode/GPS/Resources/Alarm10.wav new file mode 100644 index 0000000000000000000000000000000000000000..bd0d7e4332a033f0f075aaeae1227db1757bb7b8 GIT binary patch literal 335564 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 z%0A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�vs0}MJKB!?o(02Ys=UBsl!&_f7C&Y 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%0DWE~{0H$PN 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 50 - - False + + 1 False + + 2 + \ No newline at end of file diff --git a/SourceCode/GPS/btnImages/ABLineCycle.png b/SourceCode/GPS/btnImages/ABLineCycle.png new file mode 100644 index 0000000000000000000000000000000000000000..bf2cfc0d454815e358460f5b45074d13675c7f8a GIT binary patch literal 2972 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 SfqZoU0000owXzY literal 0 HcmV?d00001 diff --git a/SourceCode/GPS/btnImages/ABLineTurnOff.png b/SourceCode/GPS/btnImages/ABLineTurnOff.png new file mode 100644 index 0000000000000000000000000000000000000000..44a8ecea67dd915a9f53eaa450342dee68f8edf6 GIT binary patch literal 6190 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 M07*qoM6N<$f^tsWzW@LL literal 0 HcmV?d00001 diff --git a/SourceCode/GPS/btnImages/AddNew.png b/SourceCode/GPS/btnImages/AddNew.png new file mode 100644 index 0000000000000000000000000000000000000000..406daee9b36021e25cf4264ea6da22345badcc1d GIT binary patch literal 3560 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 UD343m!M_1hBTK__1CQ8$0o!;~9{>OV diff --git a/SourceCode/GPS/btnImages/ArrowRight.png b/SourceCode/GPS/btnImages/ArrowRight.png index 11ead739454dbfec6b0707fe67645e721b2bcfea..fabe2be1d55fc9b99f7a1cb78b6ab7d6f612dd69 100644 GIT binary patch literal 3778 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 Y57|C`TR;GwSO5S307*qoM6N<$f=Zsywg3PC literal 0 HcmV?d00001 diff --git a/SourceCode/GPS/btnImages/PointStart.png b/SourceCode/GPS/btnImages/PointStart.png index b0517bf6adbdfbd5e945ba08f59f1c80e708ca43..7fc372872ed2cea7bd06e584e36268413812a842 100644 GIT binary patch literal 6936 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 P0000<2SrXqu0mjfu-Qwx diff --git a/SourceCode/GPS/btnImages/SwitchOn.png b/SourceCode/GPS/btnImages/SwitchOn.png index 6b82ae04554fa929dc86df02870d7d9af3573321..8c1e6ecec0cb48dff64d09c9f0d1879ca038d0fd 100644 GIT binary patch delta 5254 zcmV;16nX2L35h8oiBL{Q4GJ0x0000DNk~Le0000`0000`2nGNE0FDvzt&t%#e-s`` zL_t(|UhSL-cobE($4@$2XAjvRdmsdo5JbW%JOLdXSw@*RFl?f{5qSclpl@WJFdAi^ z3J$}l=%7(&kO4+fK?FgT$Szx=z(+Q+K@zg>NoVO!r{6i%_f}VRs*~<4fb-?YcfPyS z?OV70b?#PG1p4Tsk3Rb7qmMg;e;o_&IM=RSv$MCiA7E!^7m7)L2L}fal}hD6$Mkx= zwzajj8jlsXwYA+e7!38ph7F@bcbq#WV0wDGkE5gG10Eh8_d7W`jYaX|FztcD0mcEv zVkM2BXn-PuPNy?qScIZpZf8cf1c;*={e8Y z+4+7K7Z*o!p=^ajZE9+&YH4ZNUsF@FQ>)b`p?9{i!~Y(jw+$&RE&Z?o!7hjn(>tJ; z1{5);prGJ+Jf}N5eXr819*7<{$j8U$HT1Xz=yCQeyB&D#P*__CX=Q1USDgnX4JAzXYA^Qd_E3EqjiwUC+=%yV3wG~jcBsec z6#?Gt_Tif9Du`lhv9tPStxfX1v?J_l`A&N84Ea~sn85) z*dYyCG?c-h!Q=JzFxY-5O!l7w)1#)t)X1rzc5Htd60*L&KDV;6e{$8JL4yvk>>j1Z z1Z9cw{N9{@710P@c2u^8E;9RQ*`+j(Ugz5r@7M!6g06c2FVRrBw zST=e�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 M07*qoM6N<$f@dGqiU0rr delta 1144 zcmV-;1c&>HDVqr)iBL{Q4GJ0x0000DNk~Le0000$0000U2nGNE0G#a@S&<<$e*`c| zL_t(oN9~qfXdG1($IpCi_G8%HNYkX0t(&w+O-veTtcro;A--r4K`E6gEqzd=1s_B! z`sNot2%;bn@kJD|6eI?tND&kfDz!DV(zN!2&C=2&`<30yX1Y7OGyd;-Tat7(o!Kl} zbbj#X&OLK?@4aX4J?D^zhlhuUe}{+1{}q9^O~JA({015B&k1 zfF_ynE{*oKb4IgQBSQ-ibHGY2L%%^w9g~3mGu#PHK2{pDnkY|53!@aa^tH>huAe5g$_akkQxXCf8zN651@o7 ziVM(;EX(75zkg(Sco;((W6f6}7!1Cs>-sx^&WGht_md>IZl-D>NyT&Hw0LgJ^!a>m zRIAnZE0szwhHrzqp&h)nyDIh2{TuHOsJ(kgS=UX~;w3E zUporjMC;(I6dit(MNw|~o6_Z9X!h{qBpUg5F~>{X?3jif5Rb>zWHNa%I`sPb$lz<- zdNbPOCzP3ZZZR5-c4o6#c13Jqcb#X5IMfe42~GZYN= zXqtAGn;jwY*6uE@szf5OK#ICPyyFFQ>!bGVBT?ND#KNB7CR>)IN0u4JphGy;yGW4D zjr)JCy{JcE%Olj%v0W^cN-U7N0IfKTnx<<|07RIw8$rY$Cex&NPe?sxpr`%#sW&RQ^UOLKB z@}ub5elQ!=XxIVBxk(fvqv?rfsggaVtK zc!i7^`=4874Rh=zi7G$0wY7c6&5n_H+Yqr>>?bWZ^FZPB7hR$+L`q~6?t6gDYdI>O z`I1s&&ycl{e>~CA(XqQwD6k68HAuI|^0`!J;q>R*1jH|;wTswXmZ8-Op%m&2V|H>1 zA7f`GlhOFk{yE@v1(P2_z{(1uWQji25=7ZTTAPRct@ieIXOVIhhK7bDl)MKJN3I}W z@;MY1$#oQCqmf9&ws>;Fjk~Z`dU|?Vrl+U-u&6GSPQ3{%coKzAEzmTJfq?;OYHF$% zbKC_7&*6F;Pp8vG{@TOCqX7^(8%~A)2IX>@t+^)D{@mIqM1KJy1)X{fRj2|00000< KMNUMnLSTXf2`rQV diff --git a/SourceCode/GPS/btnImages/displayMenu.png b/SourceCode/GPS/btnImages/displayMenu.png new file mode 100644 index 0000000000000000000000000000000000000000..96d160ea79496426f07228d6420119fa3f41e637 GIT binary patch literal 2080 zcmV+*2;cXKP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2enB=K~!i%?VG=g zT}2efXYPGU>=Us`sf~q|B5XvF1yS4h13L>51T6$xMX|Q<4@e;hq6ij25Vi_x;W}GxzN#r$*S^e5TiJ(A8PR zzFq2tO&!n3b(o(!nEJuAEeQW{#wuG|m#ku)h!3ztd-_c|Ni3E2eaR7-Zi3)ARm>NboL zps6-tHef{qjfZ(x6d42*<&xF43|jdXIr6Js!H^l>VoA-2Km2@pjU}<^i{Hj*iS~k! zhMXxc8`-28D!8GE1TsHWoSd9&rNYK&FNkt_rAIOl8Ffz>MXKC8gKEh!mBJt;)D;11L?A{LQ{AF1ezivi-(QF# z?KP_R{YQ_0t$uT&wJq8U0^_#8Nh4!q=<=LpuzHcE_X}rGX-bjhX-FG$*AGfvQb#ow zC5QppCWgAnrY$2fmW#ni8jC{&et9i(wMBbDjCT{mi;%hSSaQ?|FqyCsz{KDbW@1Q% z5Q8)pD_=h>Wg(Ca#VKrz3=@XaR$#IQTA{fh79K%_NVaqmuxb;?>a;;CO_7?AMz>K6 z#PXEIo@i1&~X zV}E}!bm}74xMyfCMTzfIwLV1gxoW?5XfB8n{ot#Wl`kr-P#??cSnbfipR&w_h`whW z6vO+8VZ<1-Aa(UU#5Q~O7vI!Fta~Y|LX<(glO>~8i<>cxNV73ATntZH3vcW4OB=0t zOIfR7ynScpVq28BSXOL_=7RW_hAzfb0Mp4p8i|vYi(#ZYndAOpX^7RI zIeAq9^zjx_mfDXgE7DZFhqyZ?ZHDH8Xc_y;3^5=m9?L|4EF+3WH8PyQg+0T?(2saq zR~NoO4zg)eQN|-M&tBz4n`1!?_8RpWyx0=$1u+gP@e5G`saB8yaS&|32XQ;uo+7uj>H0a* z;$rA#VpOt&_=pVV+W$R@31csiYN3C%O*^y~1d@$;7sJUkTbGF;zX_zWibO#igLywe z49FhEuy1==>mpcfO$-DS7#9&qT>!CYYhqYE6E(#Nh!9A3zHGJE&Dsc3da7d73j*V- z5rkpSa1QC`VvKL=*qpX}G=!g~q=*t#*&;wB1Zs>X53u-04&~FU8|6{)B8Id-=x8d5 z_+dv^>bx0I(9P}T4vML_uSnF#-1;oGXU55U_ zEB!Ar-l4tF0bief&QBcHrJ$o!laRPgh=jGyVM98xrP^T6f3d{~*ZO z^u*_HrN=*eTLFKz*4?pam9n1HYJPXz7s|jNIxCg42iTX5>>Kv7x9GPM(*b`zBlBsM zX>v(*e`73+MLXIbIo5*z6Q!)5WUm!%1o6Lq=Ys>H)Jbu$2}d26`nj;Fqg_cG-=0tX z17FBaX}p_2IwSSkxVNF2-(vl>P%ev+`AjNUwna0000< KMNUMnLSTZtfalZz literal 0 HcmV?d00001 diff --git a/SourceCode/GPS/btnImages/fileMenu.png b/SourceCode/GPS/btnImages/fileMenu.png new file mode 100644 index 0000000000000000000000000000000000000000..a35fcc2350249a0bc44fe48f80e51649e1decd7b GIT binary patch literal 1293 zcmV+o1@iidP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf6951U69E94oEQKA1foeqK~!i%?VDX_ z990y@&)w`KU799qO=GlDMXWTK&>BH1t*uH>s|Y^ivDlX?iU?Ax^`lQ(EJ5gs`Xcz^ zQ(ydOg}!JMp&*T5j0tEFwG!!98fCMwY_gl3>;KH0DcS7qI9n#Y7nvX2Ip=?7Gr76{ znR{o42_+;XgrFo^!_doLttF+?BI}~vmcl1*KQJ%ye}xr>3=ZDkk{x)xpOpFl@*ck$ z%0Hy_I}0=8Zxp9axKd*@+S0$N8O^ynGV+bD43Uy(6fxr@(kNyy?fCq`wyrH7QYyW4 zfcfvaTD`Px3@Z$gE2G^PR6@HH((-6NNdvUk1mF3fmVDj(&?4(;{wkinK1ra7-9Q&#l?J{xL=x2<6L&|_Zi z(<3o#u$idZC_!h8F?3+08{wj_=u-asLpLE-4c6+7yEEzb4Y&%_I;9lv+l)Pr@jiU= z47Nw%lD9+lqaH=;X}wrHUYN{Hc{K~J5E~7-QSvKiZg$|c!=zF#iH@5R?xPRn$KHA$ zW-Ln077%_v?n%<|fEt&3pNV9%POTT6M zxmvAMAGX`Qoanq;ayERL+iCPFk&c=p${GSzM7QV*p@`D(E05ln1`;8s+!ScrY_B{tI55OmBKQPvQNIz`8BRkUgw&Lh`9mnwca zL~EKm<;m&yyGW}dNjPj0#^pFEB#_0LJs*OXb+*W zF`RR3q<1Mw9l1WeuOB&6Wd;beHP~oKjTyYrRGvX7a^56Gmx_GLYrPpv&^co?^DL_? zy}wr}=U$Ydx$#3nZjH6p^P@A1M}G2-f}%w1^RVuFNYFuJL|;QzMki}XG-4TS5LH`4 z&@p2~{T?#6?Fnc8_B+2IrM7z2$mnk~r^k1-pE|K1g(@?W?;+8sIg?AbY#N}H+Kx)P zxu$l^-`2lHjA}@%v7|82q@6Zzf0)jk{`zw3*`I^sEH^{jHf7mpNb)SpLSh+g5LH`)c|){X z`j$s$NB;{qOCHx?H`E<{&-3r<^d+e7ixGlO8U@qVC_?b&JKvrb{B*@(Gg|$WMloG( zP2TMVx>DvBr{{b{ZD>5FUyBx)F{j