Skip to content

Commit 9574111

Browse files
robertlong13meee1
authored andcommitted
FlightPlanner/FlightData: wire up WPOverlay2
Replace WPOverlay with WPOverlay2 in both views. Add Edit Style menu item. Fix resx metadata for gDALOpacityToolStripMenuItem that was clobbered by the designer.
1 parent 34ae12c commit 9574111

File tree

4 files changed

+164
-41
lines changed

4 files changed

+164
-41
lines changed

GCSViews/FlightData.cs

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3784,50 +3784,64 @@ private void mainloop()
37843784
MainV2.comPort.MAV.cs.PlannedHomeLocation.Alt / CurrentState.multiplieralt, "H");
37853785
}
37863786

3787-
var wpOverlay = new WPOverlay();
3787+
GMapOverlay activeOverlay;
3788+
List<PointLatLngAlt> activePointlist;
37883789

3790+
if (Settings.Instance.GetBoolean("UseWPOverlay2", true))
37893791
{
3792+
var wpOverlay2 = new WPOverlay2()
3793+
{
3794+
VehicleClass = MainV2.comPort.MAV.cs.vehicleClass,
3795+
ShowPlusMarkers = false,
3796+
};
3797+
activeOverlay = wpOverlay2.overlay;
3798+
activePointlist = wpOverlay2.pointlist;
3799+
37903800
List<Locationwp> mission_items;
37913801
mission_items = MainV2.comPort.MAV.wps.Values.Select(a => (Locationwp) a).ToList();
37923802
mission_items.RemoveAt(0);
37933803

3794-
if (wps.Count == 1)
3795-
{
3796-
wpOverlay.CreateOverlay(homeplla,
3797-
mission_items,
3798-
0 / CurrentState.multiplieralt, 0 / CurrentState.multiplieralt,
3799-
CurrentState.multiplieralt);
3800-
}
3801-
else
3802-
{
3803-
wpOverlay.CreateOverlay(homeplla,
3804-
mission_items,
3805-
0 / CurrentState.multiplieralt, 0 / CurrentState.multiplieralt,
3806-
CurrentState.multiplieralt);
3804+
wpOverlay2.CreateOverlay(homeplla,
3805+
mission_items,
3806+
0 / CurrentState.multiplieralt, 0 / CurrentState.multiplieralt,
3807+
CurrentState.multiplieralt);
3808+
}
3809+
else
3810+
{
3811+
var wpOverlay = new WPOverlay();
3812+
activeOverlay = wpOverlay.overlay;
3813+
activePointlist = wpOverlay.pointlist;
38073814

3808-
}
3815+
List<Locationwp> mission_items;
3816+
mission_items = MainV2.comPort.MAV.wps.Values.Select(a => (Locationwp) a).ToList();
3817+
mission_items.RemoveAt(0);
3818+
3819+
wpOverlay.CreateOverlay(homeplla,
3820+
mission_items,
3821+
0 / CurrentState.multiplieralt, 0 / CurrentState.multiplieralt,
3822+
CurrentState.multiplieralt);
38093823
}
38103824

3811-
var existing = gMapControl1.Overlays.Where(a => a.Id == wpOverlay.overlay.Id).ToList();
3825+
var existing = gMapControl1.Overlays.Where(a => a.Id == activeOverlay.Id).ToList();
38123826
foreach (var b in existing)
38133827
{
38143828
gMapControl1.Overlays.Remove(b);
38153829
}
38163830

3817-
gMapControl1.Overlays.Insert(1, wpOverlay.overlay);
3831+
gMapControl1.Overlays.Insert(1, activeOverlay);
38183832

3819-
wpOverlay.overlay.ForceUpdate();
3833+
activeOverlay.ForceUpdate();
38203834

38213835
try
38223836
{
38233837
distanceBar1.ClearWPDist();
38243838

38253839
var i = -1;
38263840
var travdist = 0.0;
3827-
if (wpOverlay.pointlist.Count > 0)
3841+
if (activePointlist.Count > 0)
38283842
{
3829-
var lastplla = wpOverlay.pointlist.Where(a => a != null).FirstOrDefault();
3830-
foreach (var plla in wpOverlay.pointlist)
3843+
var lastplla = activePointlist.Where(a => a != null).FirstOrDefault();
3844+
foreach (var plla in activePointlist)
38313845
{
38323846
i++;
38333847
if (plla == null)

GCSViews/FlightPlanner.Designer.cs

Lines changed: 20 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

GCSViews/FlightPlanner.cs

Lines changed: 85 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
using System.Drawing.Imaging;
5555
using SharpKml.Engine;
5656
using MissionPlanner.Controls.Waypoints;
57+
using MissionPlanner.Utilities.Mission;
5758

5859
namespace MissionPlanner.GCSViews
5960
{
@@ -127,6 +128,7 @@ private void but_mincommands_Click(object sender, System.EventArgs e)
127128
private PointLatLng MouseDownStart;
128129
private PointLatLngAlt mouseposdisplay = new PointLatLngAlt(0, 0);
129130
private WPOverlay wpOverlay;
131+
private WPOverlay2 wpOverlay2;
130132
private bool polygongridmode;
131133
private MissionPlanner.Controls.Icon.Polygon polyicon = new MissionPlanner.Controls.Icon.Polygon();
132134
private MissionPlanner.Controls.Icon.Zoom zoomicon = new MissionPlanner.Controls.Icon.Zoom();
@@ -1411,49 +1413,70 @@ public void writeKML()
14111413

14121414
if ((MAVLink.MAV_MISSION_TYPE) cmb_missiontype.SelectedValue == MAVLink.MAV_MISSION_TYPE.MISSION)
14131415
{
1414-
wpOverlay = new WPOverlay();
1415-
wpOverlay.overlay.Id = "WPOverlay";
1416+
var useV2 = Settings.Instance.GetBoolean("UseWPOverlay2", true);
1417+
GMapOverlay activeOverlay;
1418+
List<PointLatLngAlt> activePointlist;
14161419

1420+
if (TXT_WPRad.Text == "") TXT_WPRad.Text = startupWPradius;
1421+
if (TXT_loiterrad.Text == "") TXT_loiterrad.Text = "30";
1422+
1423+
double wprad = 0, loiterrad = 0;
14171424
try
14181425
{
1419-
if (TXT_WPRad.Text == "") TXT_WPRad.Text = startupWPradius;
1420-
if (TXT_loiterrad.Text == "") TXT_loiterrad.Text = "30";
1421-
1422-
wpOverlay.CreateOverlay(home,
1423-
commandlist,
1424-
double.Parse(TXT_WPRad.Text) / CurrentState.multiplierdist,
1425-
double.Parse(TXT_loiterrad.Text) / CurrentState.multiplierdist, CurrentState.multiplieralt);
1426+
wprad = double.Parse(TXT_WPRad.Text) / CurrentState.multiplierdist;
1427+
loiterrad = double.Parse(TXT_loiterrad.Text) / CurrentState.multiplierdist;
14261428
}
14271429
catch (FormatException)
14281430
{
14291431
CustomMessageBox.Show(Strings.InvalidNumberEntered + "\n" + "WP Radius or Loiter Radius",
14301432
Strings.ERROR);
14311433
}
14321434

1435+
if (useV2)
1436+
{
1437+
wpOverlay2 = new WPOverlay2()
1438+
{
1439+
VehicleClass = MainV2.comPort.MAV.cs.vehicleClass,
1440+
ShowPlusMarkers = true,
1441+
};
1442+
wpOverlay2.overlay.Id = "WPOverlay";
1443+
wpOverlay2.CreateOverlay(home, commandlist, wprad, loiterrad, CurrentState.multiplieralt);
1444+
activeOverlay = wpOverlay2.overlay;
1445+
activePointlist = wpOverlay2.pointlist;
1446+
}
1447+
else
1448+
{
1449+
wpOverlay = new WPOverlay();
1450+
wpOverlay.overlay.Id = "WPOverlay";
1451+
wpOverlay.CreateOverlay(home, commandlist, wprad, loiterrad, CurrentState.multiplieralt);
1452+
activeOverlay = wpOverlay.overlay;
1453+
activePointlist = wpOverlay.pointlist;
1454+
}
1455+
14331456
MainMap.HoldInvalidation = true;
14341457

1435-
var existing = MainMap.Overlays.Where(a => a.Id == wpOverlay.overlay.Id).ToList();
1458+
var existing = MainMap.Overlays.Where(a => a.Id == activeOverlay.Id).ToList();
14361459
foreach (var b in existing)
14371460
{
14381461
MainMap.Overlays.Remove(b);
14391462
}
14401463

1441-
MainMap.Overlays.Insert(1, wpOverlay.overlay);
1464+
MainMap.Overlays.Insert(1, activeOverlay);
14421465

1443-
wpOverlay.overlay.ForceUpdate();
1466+
activeOverlay.ForceUpdate();
14441467

14451468
lbl_distance.Text = rm.GetString("lbl_distance.Text") + ": " +
14461469
FormatDistance((
1447-
wpOverlay.overlay.Routes.SelectMany(a => a.Points)
1470+
activeOverlay.Routes.SelectMany(a => a.Points)
14481471
.Select(a => (PointLatLngAlt) a)
14491472
.Aggregate(0.0, (d, p1, p2) => d + p1.GetDistance(p2))
14501473
) / 1000.0, false);
14511474

1452-
setgradanddistandaz(wpOverlay.pointlist, home);
1475+
setgradanddistandaz(activePointlist, home);
14531476

1454-
if (wpOverlay.pointlist.Count <= 1)
1477+
if (activePointlist.Count <= 1)
14551478
{
1456-
RectLatLng? rect = MainMap.GetRectOfAllMarkers(wpOverlay.overlay.Id);
1479+
RectLatLng? rect = MainMap.GetRectOfAllMarkers(activeOverlay.Id);
14571480
if (rect.HasValue)
14581481
{
14591482
MainMap.Position = rect.Value.LocationMiddle;
@@ -1462,8 +1485,9 @@ public void writeKML()
14621485
MainMap_OnMapZoomChanged();
14631486
}
14641487

1465-
pointlist = wpOverlay.pointlist;
1488+
pointlist = activePointlist;
14661489

1490+
if (!useV2)
14671491
{
14681492
foreach (var pointLatLngAlt in pointlist.PrevNowNext())
14691493
{
@@ -1479,10 +1503,17 @@ public void writeKML()
14791503

14801504
var pnt = new GMapMarkerPlus(mid);
14811505
pnt.Tag = new midline() {now = now, next = next};
1482-
wpOverlay.overlay.Markers.Add(pnt);
1506+
activeOverlay.Markers.Add(pnt);
14831507
}
14841508
}
14851509

1510+
editStyleToolStripMenuItem.Visible = useV2;
1511+
1512+
// Sync checkbox without re-triggering CheckedChanged -> writeKML
1513+
useLegacyOverlayToolStripMenuItem.CheckedChanged -= useLegacyOverlayToolStripMenuItem_CheckedChanged;
1514+
useLegacyOverlayToolStripMenuItem.Checked = !useV2;
1515+
useLegacyOverlayToolStripMenuItem.CheckedChanged += useLegacyOverlayToolStripMenuItem_CheckedChanged;
1516+
14861517
// draw fence
14871518
{
14881519
var fenceoverlay = new WPOverlay();
@@ -3472,6 +3503,13 @@ public void FlightPlanner_Load(object sender, EventArgs e)
34723503

34733504
writeKML();
34743505

3506+
BeginInvoke((Action)(() =>
3507+
Common.MessageShowAgain("New Mission Overlay",
3508+
"Mission Planner now uses an improved mission overlay with styled lines and markers.\n\n" +
3509+
"You can customize colors, line styles, and markers via Map Tool > Edit Style.\n\n" +
3510+
"If you experience any issues, you can switch back via Map Tool > Use Legacy Overlay.")
3511+
));
3512+
34753513
// switch the action and wp table
34763514
if (Settings.Instance["FP_docking"] == "Bottom")
34773515
{
@@ -7634,7 +7672,10 @@ private void MainMap_MouseUp(object sender, MouseEventArgs e)
76347672
else if ((MAVLink.MAV_MISSION_TYPE) cmb_missiontype.SelectedValue ==
76357673
MAVLink.MAV_MISSION_TYPE.MISSION)
76367674
{
7637-
7675+
while (pnt2 > 1 && CommandUtils.IsBookmark(GetCommandList()[pnt2 - 2].id))
7676+
{
7677+
pnt2 -= 1;
7678+
}
76387679
InsertCommand(pnt2 - 1, MAVLink.MAV_CMD.WAYPOINT, 0, 0, 0, 0,
76397680
CurrentMidLine.Position.Lng,
76407681
CurrentMidLine.Position.Lat, float.Parse(TXT_DefaultAlt.Text));
@@ -8526,5 +8567,30 @@ private bool checkZeroAlts(int wpno)
85268567

85278568
return true;
85288569
}
8570+
8571+
MissionStyleEditor _styleEditor;
8572+
8573+
private void editStyleToolStripMenuItem_Click(object sender, EventArgs e)
8574+
{
8575+
if (_styleEditor != null && !_styleEditor.IsDisposed)
8576+
{
8577+
_styleEditor.BringToFront();
8578+
return;
8579+
}
8580+
8581+
_styleEditor = new MissionStyleEditor(WPOverlay2.missionStyle.Config, (style) =>
8582+
{
8583+
WPOverlay2.missionStyle = style;
8584+
writeKML();
8585+
});
8586+
_styleEditor.FormClosed += (s, _) => _styleEditor = null;
8587+
_styleEditor.Show(FindForm());
8588+
}
8589+
8590+
private void useLegacyOverlayToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
8591+
{
8592+
Settings.Instance["UseWPOverlay2"] = (!useLegacyOverlayToolStripMenuItem.Checked).ToString();
8593+
writeKML();
8594+
}
85298595
}
85308596
}

GCSViews/FlightPlanner.resx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2213,6 +2213,18 @@
22132213
<data name="gDALOpacityToolStripMenuItem.Text" xml:space="preserve">
22142214
<value>GDAL Opacity</value>
22152215
</data>
2216+
<data name="editStyleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
2217+
<value>180, 22</value>
2218+
</data>
2219+
<data name="editStyleToolStripMenuItem.Text" xml:space="preserve">
2220+
<value>Edit Style</value>
2221+
</data>
2222+
<data name="useLegacyOverlayToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
2223+
<value>180, 22</value>
2224+
</data>
2225+
<data name="useLegacyOverlayToolStripMenuItem.Text" xml:space="preserve">
2226+
<value>Use Legacy Overlay</value>
2227+
</data>
22162228
<data name="mapToolToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
22172229
<value>155, 22</value>
22182230
</data>
@@ -3206,6 +3218,18 @@
32063218
<data name="&gt;&gt;gDALOpacityToolStripMenuItem.Type" xml:space="preserve">
32073219
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
32083220
</data>
3221+
<data name="&gt;&gt;editStyleToolStripMenuItem.Name" xml:space="preserve">
3222+
<value>editStyleToolStripMenuItem</value>
3223+
</data>
3224+
<data name="&gt;&gt;editStyleToolStripMenuItem.Type" xml:space="preserve">
3225+
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
3226+
</data>
3227+
<data name="&gt;&gt;useLegacyOverlayToolStripMenuItem.Name" xml:space="preserve">
3228+
<value>useLegacyOverlayToolStripMenuItem</value>
3229+
</data>
3230+
<data name="&gt;&gt;useLegacyOverlayToolStripMenuItem.Type" xml:space="preserve">
3231+
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
3232+
</data>
32093233
<data name="&gt;&gt;$this.Name" xml:space="preserve">
32103234
<value>FlightPlanner</value>
32113235
</data>

0 commit comments

Comments
 (0)