diff --git a/images/earth.html b/images/earth.html
index 6f423cb2604b37f014a83614ee796939fd27aec8..73b9ec0361e1aea2799773d2e77550f84bfe3147 100644
--- a/images/earth.html
+++ b/images/earth.html
@@ -13,12 +13,12 @@ google.load("earth", "1", { 'language': 'en'});
var ge = null;
var initialized = false;
-var aircraft = new Array();
var currAircraft = 220;
-var followAircraft = false;
+var followEnabled = false;
var currLat = 47.3769;
var currLon = 8.549444;
var currAlt = 470;
+var currFollowHeading = 0.0;
var homeLat = 0;
var homeLon = 0;
@@ -32,11 +32,17 @@ var currTilt = 40.0; ///<< The tilt angle (in degrees)
var currFollowTilt = 40.0;
var currView = null;
+var M_PI = 3.14159265;
+
var planeOrient;
var planeLoc;
+var aircraft = [];
+var attitudes = [];
+var locations = [];
+var trails = [];
// Aircraft class
@@ -53,7 +59,10 @@ function init() {
-
+function setCurrAircraft(id)
+{
+ currAircraft = id;
+}
function setGCSHome(lat, lon, alt)
{
@@ -86,13 +95,70 @@ function setGCSHome(lat, lon, alt)
{
homeGroundLevel = alt;
}
-
-
-
-
-
-
- goHome();
+}
+
+function createAircraft(id, type, color)
+{
+console.debug("Aircraft created");
+ var planePlacemark = ge.createPlacemark('');
+ planePlacemark.setName('aircraft');
+ var planeModel = ge.createModel('');
+ ge.getFeatures().appendChild(planePlacemark);
+ var planeLoc = ge.createLocation('');
+ planeModel.setLocation(planeLoc);
+ var planeLink = ge.createLink('');
+ var planeOrient = ge.createOrientation('');
+ planeModel.setOrientation(planeOrient);
+
+ planeLink.setHref('http://qgroundcontrol.org/_media/users/models/multiplex-twinstar.dae');
+ planeModel.setLink(planeLink);
+ planeModel.setAltitudeMode (ge.ALTITUDE_ABSOLUTE);
+
+ planeLoc.setLatitude(currLat);
+ planeLoc.setLongitude(currLon);
+ planeLoc.setAltitude(currAlt);
+
+ planePlacemark.setGeometry(planeModel);
+
+ // Write into global structure
+ aircraft[id] = planePlacemark;
+ attitudes[id] = planeOrient;
+ locations[id] = planeLoc;
+
+ createTrail(id, color);
+
+ console.debug("Aircraft created");
+}
+
+function createTrail(id, color)
+{
+// Create the placemark
+var lineStringPlacemark = ge.createPlacemark('');
+
+// Create the LineString; set it to extend down to the ground
+// and set the altitude mode
+trails[id] = ge.createLineString('');
+lineStringPlacemark.setGeometry(trails[id]);
+trails[id].setExtrude(true);
+lineString.setAltitudeMode(ge.ALTITUDE_ABSOLUTE);
+
+// Add LineString points
+//lineString.getCoordinates().pushLatLngAlt(48.754, -121.835, 700);
+
+// Create a style and set width and color of line
+lineStringPlacemark.setStyleSelector(ge.createStyle(''));
+var lineStyle = lineStringPlacemark.getStyleSelector().getLineStyle();
+lineStyle.setWidth(5);
+lineStyle.getColor().set('99bbaaff');
+//lineStyle.getColor().set(color); // aabbggrr format
+
+// Add the feature to Earth
+ge.getFeatures().appendChild(lineStringPlacemark);
+}
+
+function addTrailPosition(id, lat, lon, alt)
+{
+ //trails[id].getCoordinates().pushLatLngAlt(lat, lon, alt);
}
function initCallback(object)
@@ -110,7 +176,7 @@ function initCallback(object)
ge.getLayerRoot().enableLayerById(ge.LAYER_TREES, true);
// Now after the Google Earth initialization, initialize the GCS view
- setGCSHome(currLat, currLon, currAlt);
+ //setGCSHome(currLat, currLon, currAlt);
// Create the first aircraft model
@@ -135,8 +201,8 @@ function initCallback(object)
planePlacemark.setGeometry(planeModel);
- setAircraftPositionAttitude(220, 47.3772, currLon, currAlt+50, 20, 15, 50);
- enableFollowing(true);
+ //setAircraftPositionAttitude(220, 47.3772, currLon, currAlt+50, 20, 15, 50);
+ //enableFollowing(true);
updateFollowAircraft();
initialized = true;
@@ -150,17 +216,19 @@ function setAircraftPositionAttitude(id, lat, lon, alt, roll, pitch, yaw)
currLat = lat;
currLon = lon;
currAlt = alt;
+ currFollowHeading = ((yaw/M_PI)+1.0)*360.0;
}
- planeOrient.setRoll(roll);
- planeOrient.setTilt(pitch);
- planeOrient.setHeading(yaw);
+ // FIXME Currently invalid conversion from right-handed z-down to z-up frame
+ planeOrient.setRoll(((roll/M_PI)+1.0)*360.0);
+ planeOrient.setTilt(((pitch/M_PI)+1.0)*360.0);
+ planeOrient.setHeading(((yaw/M_PI)+1.0)*360.0);
- planeLoc.setLatitude(lat);
- planeLoc.setLongitude(lon);
- planeLoc.setAltitude(alt);
+ planeLoc.setLatitude(lat);
+ planeLoc.setLongitude(lon);
+ planeLoc.setAltitude(alt);
}
@@ -180,24 +248,16 @@ function setCurrentAircraft(id)
currAircraft = id;
}
-function enableFollowing(follow)
-{
- followEnabled = follow;
-}
-
-
function updateFollowAircraft()
{
- if (followEnabled)
- {
currView = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE);
currView.setLatitude(currLat);
currView.setLongitude(currLon);
currView.setAltitude(currAlt);
currView.setRange(currViewRange);
currView.setTilt(currFollowTilt);
+ currView.setHeading(currFollowHeading-90.0);
ge.getView().setAbstractView(currView);
- }
}
function failureCallback(object)
diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc
index b70ca728aa7096c6bc5c624bc420ca5a66155aec..be2b33fce1d95385d09401cacd892e7d0310eb7d 100644
--- a/src/ui/MainWindow.cc
+++ b/src/ui/MainWindow.cc
@@ -1119,41 +1119,9 @@ void MainWindow::loadMAVLinkView()
void MainWindow::presentView()
{
-
- showTheCentralWidget(CENTRAL_3D_LOCAL, currentView);
- showTheCentralWidget(CENTRAL_3D_MAP, currentView);
-//#ifdef QGC_OSG_ENABLED
-// // 3D map
-// if (_3DWidget)
-// {
-// if (centerStack)
-// {
-// //map3DWidget->setActive(true);
-// centerStack->setCurrentWidget(_3DWidget);
-// }
-// }
-//#endif
-
qDebug() << "LC";
showTheCentralWidget(CENTRAL_LINECHART, currentView);
-
- // FIXME
-
-// if (linechartWidget)
-// {
-// qDebug () << buildMenuKey (SUB_SECTION_CHECKED,CENTRAL_LINECHART,currentView) <<
-// settings.value(buildMenuKey (SUB_SECTION_CHECKED,CENTRAL_LINECHART,currentView)).toBool() ;
-// if (settings.value(buildMenuKey (SUB_SECTION_CHECKED,CENTRAL_LINECHART,currentView)).toBool()){
-// if (centerStack)
-// {
-// centerStack->setCurrentWidget(linechartWidget);
-// }
-// }
-// }
-
-
-
// MAP
qDebug() << "MAP";
showTheCentralWidget(CENTRAL_MAP, currentView);
@@ -1164,16 +1132,17 @@ void MainWindow::presentView()
// HEAD UP DISPLAY
showTheCentralWidget(CENTRAL_HUD, currentView);
-// qDebug() << "HUD";
-// if (hudWidget){
-// qDebug() << buildMenuKey(SUB_SECTION_CHECKED,CENTRAL_HUD,currentView) <<
-// settings.value(buildMenuKey (SUB_SECTION_CHECKED,CENTRAL_HUD,currentView)).toBool();
-// if (settings.value(buildMenuKey (SUB_SECTION_CHECKED,CENTRAL_HUD,currentView)).toBool()){
-// if (centerStack) {
-// centerStack->setCurrentWidget(hudWidget);
-// }
-// }
-// }
+
+ // GOOGLE EARTH
+ showTheCentralWidget(CENTRAL_GOOGLE_EARTH, currentView);
+
+ // LOCAL 3D VIEW
+ showTheCentralWidget(CENTRAL_3D_LOCAL, currentView);
+
+ // GLOBAL 3D VIEW
+ showTheCentralWidget(CENTRAL_3D_MAP, currentView);
+
+
// Show docked widgets based on current view and autopilot type
diff --git a/src/ui/map3D/Q3DWidget.cc b/src/ui/map3D/Q3DWidget.cc
index 91e1ad093f29ff235f904dbabefed8a71aa0021d..2712799b7c08dd77f2ba93f3ed761ab5d4345b9e 100644
--- a/src/ui/map3D/Q3DWidget.cc
+++ b/src/ui/map3D/Q3DWidget.cc
@@ -48,6 +48,7 @@ Q3DWidget::Q3DWidget(QWidget* parent)
, robotAttitude(new osg::PositionAttitudeTransform())
, hudGroup(new osg::Switch())
, hudProjectionMatrix(new osg::Projection)
+ , fps(30.0f)
{
// set initial camera parameters
cameraParams.minZoomRange = 2.0f;
@@ -70,6 +71,8 @@ Q3DWidget::~Q3DWidget()
void
Q3DWidget::init(float fps)
{
+ this->fps = fps;
+
getCamera()->setGraphicsContext(osgGW);
// manually specify near and far clip planes
@@ -105,6 +108,23 @@ Q3DWidget::init(float fps)
timer.start(static_cast(floorf(1000.0f / fps)));
}
+void Q3DWidget::showEvent(QShowEvent* event)
+{
+ // React only to internal (pre/post-display)
+ // events
+ if (!event->spontaneous())
+ {
+ if (event->type() == QEvent::Hide)
+ {
+ timer.stop();
+ }
+ else if (event->type() == QEvent::Show)
+ {
+ timer.start(static_cast(floorf(1000.0f / fps)));
+ }
+ }
+}
+
osg::ref_ptr
Q3DWidget::createRobot(void)
{
diff --git a/src/ui/map3D/Q3DWidget.h b/src/ui/map3D/Q3DWidget.h
index d33c4ea193a4150d95b75919579f449e1902a3b5..d82bad5604c0b40ac02d6d4add8b4bd038f77986 100644
--- a/src/ui/map3D/Q3DWidget.h
+++ b/src/ui/map3D/Q3DWidget.h
@@ -257,6 +257,7 @@ protected:
};
CameraParams cameraParams; /**< Struct representing camera parameters. */
+ float fps;
};
#endif // Q3DWIDGET_H
diff --git a/src/ui/map3D/QGCGoogleEarthView.cc b/src/ui/map3D/QGCGoogleEarthView.cc
index 17db417f4b1e227576f01063ec25ac75e706127f..b9f65dc85181ddeb109cc259a3cfdc976e63773f 100644
--- a/src/ui/map3D/QGCGoogleEarthView.cc
+++ b/src/ui/map3D/QGCGoogleEarthView.cc
@@ -1,6 +1,7 @@
#include
#include
#include
+#include
#include
#include "UASManager.h"
@@ -14,14 +15,17 @@
#include "ui_QGCGoogleEarthView.h"
#include "QGCGoogleEarthView.h"
+#define QGCGOOGLEEARTHVIEWSETTINGS QString("GoogleEarthViewSettings_")
+
QGCGoogleEarthView::QGCGoogleEarthView(QWidget *parent) :
QWidget(parent),
updateTimer(new QTimer(this)),
- refreshRateMs(200),
+ refreshRateMs(80),
mav(NULL),
followCamera(true),
trailEnabled(true),
webViewInitialized(false),
+ gEarthInitialized(false),
#if (defined Q_OS_MAC)
webViewMac(new QWebView(this)),
#endif
@@ -39,20 +43,23 @@ QGCGoogleEarthView::QGCGoogleEarthView(QWidget *parent) :
#else
#endif
+ // Load settings
+ QSettings settings;
+ followCamera = settings.value(QGCGOOGLEEARTHVIEWSETTINGS + "follow", followCamera).toBool();
+ trailEnabled = settings.value(QGCGOOGLEEARTHVIEWSETTINGS + "trail", trailEnabled).toBool();
+
ui->setupUi(this);
#if (defined Q_OS_MAC)
ui->webViewLayout->addWidget(webViewMac);
+ connect(webViewMac, SIGNAL(loadFinished(bool)), this, SLOT(initializeGoogleEarth(bool)));
#endif
#ifdef _MSC_VER
ui->webViewLayout->addWidget(webViewWin);
#endif
-#if ((defined Q_OS_MAC) | (defined _MSC_VER))
connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setActiveUAS(UASInterface*)));
connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateState()));
- updateTimer->start(refreshRateMs);
-#endif
// Follow checkbox
ui->followAirplaneCheckbox->setChecked(followCamera);
@@ -62,32 +69,63 @@ QGCGoogleEarthView::QGCGoogleEarthView(QWidget *parent) :
ui->trailCheckbox->setChecked(trailEnabled);
connect(ui->trailCheckbox, SIGNAL(toggled(bool)), this, SLOT(showTrail(bool)));
- // Get list of available 3D models
+ // Go home
+ connect(ui->goHomeButton, SIGNAL(clicked()), this, SLOT(goHome()));
+}
+
+QGCGoogleEarthView::~QGCGoogleEarthView()
+{
+ QSettings settings;
+ settings.setValue(QGCGOOGLEEARTHVIEWSETTINGS + "follow", followCamera);
+ settings.setValue(QGCGOOGLEEARTHVIEWSETTINGS + "trail", trailEnabled);
+ settings.sync();
+ delete ui;
+}
- // Load HTML file
+void QGCGoogleEarthView::addUAS(UASInterface* uas)
+{
+#ifdef Q_OS_MAC
+ webViewMac->page()->currentFrame()->evaluateJavaScript(QString("createAircraft(%1, %2, %3);").arg(uas->getUASID()).arg(uas->getSystemType()).arg(uas->getColor().name()));
+#endif
#ifdef _MSC_VER
- webViewWin->dynamicCall("GoHome()");
- webViewWin->dynamicCall("Navigate(const QString&)", QApplication::applicationDirPath() + "/earth.html");
+ //if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
#endif
- // Parse for model links
-
- // Populate model list
+ // Automatically receive further position updates
+ connect(uas, SIGNAL(globalPositionChanged(UASInterface*,double,double,double,quint64)), this, SLOT(updateGlobalPosition(UASInterface*,double,double,double,quint64)));
}
-QGCGoogleEarthView::~QGCGoogleEarthView()
+void QGCGoogleEarthView::setActiveUAS(UASInterface* uas)
{
- delete ui;
+ if (uas)
+ {
+ mav = uas;
+#ifdef Q_OS_MAC
+ if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
+ {
+ webViewMac->page()->currentFrame()->evaluateJavaScript(QString("setCurrAircraft(%1);").arg(uas->getUASID()));
+ }
+#endif
+#ifdef _MSC_VER
+ //if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
+#endif
+ }
}
-void QGCGoogleEarthView::setActiveUAS(UASInterface* uas)
+void QGCGoogleEarthView::updateGlobalPosition(UASInterface* uas, double lat, double lon, double alt, quint64 usec)
{
- mav = uas;
+ Q_UNUSED(usec);
+#ifdef Q_OS_MAC
+ webViewMac->page()->currentFrame()->evaluateJavaScript(QString("addTrailPosition(%1, %2, %3, %4);").arg(uas->getUASID()).arg(lat, 0, 'f', 15).arg(lon, 0, 'f', 15).arg(alt, 0, 'f', 15));
+#endif
+#ifdef _MSC_VER
+ //if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
+#endif
}
void QGCGoogleEarthView::showTrail(bool state)
{
-
+ ui->trailCheckbox->setChecked(state);
}
void QGCGoogleEarthView::showWaypoints(bool state)
@@ -97,9 +135,34 @@ void QGCGoogleEarthView::showWaypoints(bool state)
void QGCGoogleEarthView::follow(bool follow)
{
+ ui->followAirplaneCheckbox->setChecked(follow);
followCamera = follow;
}
+void QGCGoogleEarthView::goHome()
+{
+ // Disable follow and update
+ follow(false);
+ updateState();
+ // Go to home location
+#ifdef Q_OS_MAC
+ webViewMac->page()->currentFrame()->evaluateJavaScript("goHome();");
+#endif
+#ifdef _MSC_VER
+ webViewWin.dynamicCall("InvokeScript(\"goHome\");");
+#endif
+}
+
+void QGCGoogleEarthView::setHome(double lat, double lon, double alt)
+{
+#ifdef Q_OS_MAC
+ webViewMac->page()->currentFrame()->evaluateJavaScript(QString("setGCSHome(%1,%2,%3);").arg(lat, 0, 'f', 15).arg(lon, 0, 'f', 15).arg(alt, 0, 'f', 15));
+#endif
+#ifdef _MSC_VER
+ webViewWin.dynamicCall(QString("InvokeScript(\"setGCSHome\", %1, %2, %3);").arg(lat, 0, 'f', 15).arg(lon, 0, 'f', 15).arg(alt, 0, 'f', 15));
+#endif
+}
+
void QGCGoogleEarthView::showEvent(QShowEvent* event)
{
// React only to internal (pre-display)
@@ -110,6 +173,7 @@ void QGCGoogleEarthView::showEvent(QShowEvent* event)
{
// Disable widget
updateTimer->stop();
+ qDebug() << "STOPPED GOOGLE EARTH UPDATES";
}
else if (event->type() == QEvent::Show)
{
@@ -123,59 +187,86 @@ void QGCGoogleEarthView::showEvent(QShowEvent* event)
#endif
#ifdef _MSC_VER
- webViewWin->dynamicCall("GoHome()");
- webViewWin->dynamicCall("Navigate(const QString&)", "http://pixhawk.ethz.ch");
+ //webViewWin->dynamicCall("GoHome()");
+ webViewWin->dynamicCall("Navigate(const QString&)", QApplication::applicationDirPath() + "/earth.html");
#endif
+
webViewInitialized = true;
+ // Reloading the webpage, this resets Google Earth
+ gEarthInitialized = false;
+
+ QTimer::singleShot(1000, this, SLOT(initializeGoogleEarth()));
+ updateTimer->start(refreshRateMs);
}
}
- updateTimer->start();
}
}
-void QGCGoogleEarthView::updateState()
+void QGCGoogleEarthView::initializeGoogleEarth()
{
- if (isVisible())
+ if (!gEarthInitialized)
{
#ifdef Q_OS_MAC
- if (webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
- {
-#endif
-#ifdef _MSC_VER
- // if (webViewMacWin->dynamicCall("Navigate(const QString&)","isInitialized();").toBool())
- // {
-#endif
- static bool initialized = false;
- if (!initialized)
- {
-#ifdef Q_OS_MAC
- webViewMac->page()->currentFrame()->evaluateJavaScript("setGCSHome(22.679833,8.549444, 470);");
+ if (!webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
#endif
#ifdef _MSC_VER
- //webViewMac->page()->currentFrame()->evaluateJavaScript("setGCSHome(22.679833,8.549444, 470);");
+ //if (!webViewMac->page()->currentFrame()->evaluateJavaScript("isInitialized();").toBool())
#endif
- initialized = true;
- }
- int uasId = 0;
- double lat = 22.679833;
- double lon = 8.549444;
- double alt = 470.0;
+ {
+ QTimer::singleShot(200, this, SLOT(initializeGoogleEarth()));
+ }
+ else
+ {
+ // Set home location
+ setHome(47.3769, 8.549444, 500);
+
+ // Move to home location
+ goHome();
- float roll = 0.0f;
- float pitch = 0.0f;
- float yaw = 0.0f;
+ // Set current UAS
+ setActiveUAS(mav);
- if (mav)
+ // Add all MAVs
+ QList mavs = UASManager::instance()->getUASList();
+ foreach (UASInterface* mav, mavs)
{
- uasId = mav->getUASID();
- lat = mav->getLatitude();
- lon = mav->getLongitude();
- alt = mav->getAltitude();
- roll = mav->getRoll();
- pitch = mav->getPitch();
- yaw = mav->getYaw();
+ addUAS(mav);
}
- #ifdef Q_OS_MAC
+
+ // Add any further MAV automatically
+ connect(UASManager::instance(), SIGNAL(UASCreated(UASInterface*)), this, SLOT(addUAS(UASInterface*)));
+
+ gEarthInitialized = true;
+ }
+ }
+}
+
+void QGCGoogleEarthView::updateState()
+{
+ if (gEarthInitialized)
+ {
+ int uasId = 0;
+ double lat = 47.3769;
+ double lon = 8.549444;
+ double alt = 470.0;
+
+ float roll = 0.0f;
+ float pitch = 0.0f;
+ float yaw = 0.0f;
+
+ // Update all MAVs
+ QList mavs = UASManager::instance()->getUASList();
+ foreach (UASInterface* mav, mavs)
+ {
+ uasId = mav->getUASID();
+ lat = mav->getLatitude();
+ lon = mav->getLongitude();
+ alt = mav->getAltitude();
+ roll = mav->getRoll();
+ pitch = mav->getPitch();
+ yaw = mav->getYaw();
+
+#ifdef Q_OS_MAC
webViewMac->page()->currentFrame()->evaluateJavaScript(QString("setAircraftPositionAttitude(%1, %2, %3, %4, %6, %7, %8);")
.arg(uasId)
.arg(lat)
@@ -188,18 +279,16 @@ void QGCGoogleEarthView::updateState()
#ifdef _MSC_VER
#endif
+ }
- if (followCamera)
- {
+ if (followCamera)
+ {
#ifdef Q_OS_MAC
- webViewMac->page()->currentFrame()->evaluateJavaScript(QString("updateFollowAircraft()"));
+ webViewMac->page()->currentFrame()->evaluateJavaScript(QString("updateFollowAircraft()"));
#endif
#ifdef _MSC_VER
#endif
- }
-#if (defined Q_OS_MAC) || (defined _MSC_VER)
}
-#endif
}
}
diff --git a/src/ui/map3D/QGCGoogleEarthView.h b/src/ui/map3D/QGCGoogleEarthView.h
index 833a1b71770ee7cc43d94dd58e7bc3a320a944cf..60392a66f6ef0c684826736278fbc96800d8244d 100644
--- a/src/ui/map3D/QGCGoogleEarthView.h
+++ b/src/ui/map3D/QGCGoogleEarthView.h
@@ -54,14 +54,24 @@ public:
public slots:
/** @brief Update the internal state. Does not trigger a redraw */
void updateState();
+ /** @brief Add a new MAV/UAS to the visualization */
+ void addUAS(UASInterface* uas);
/** @brief Set the currently selected UAS */
void setActiveUAS(UASInterface* uas);
+ /** @brief Update the global position */
+ void updateGlobalPosition(UASInterface* uas, double lat, double lon, double alt, quint64 usec);
/** @brief Show the vehicle trail */
void showTrail(bool state);
/** @brief Show the waypoints */
void showWaypoints(bool state);
/** @brief Follow the aircraft during flight */
void follow(bool follow);
+ /** @brief Go to the home location */
+ void goHome();
+ /** @brief Set the home location */
+ void setHome(double lat, double lon, double alt);
+ /** @brief Initialize Google Earth */
+ void initializeGoogleEarth();
protected:
void changeEvent(QEvent *e);
@@ -71,6 +81,7 @@ protected:
bool followCamera;
bool trailEnabled;
bool webViewInitialized;
+ bool gEarthInitialized;
#ifdef _MSC_VER
QGCWebAxWidget* webViewWin;
#endif
diff --git a/src/ui/uas/QGCUnconnectedInfoWidget.ui b/src/ui/uas/QGCUnconnectedInfoWidget.ui
index 2ba7c94801c50a18d54bb2c1f57afc3eac02d288..4eaac71aab3a8d00bbcdcb9fee01101470b6835e 100644
--- a/src/ui/uas/QGCUnconnectedInfoWidget.ui
+++ b/src/ui/uas/QGCUnconnectedInfoWidget.ui
@@ -1,86 +1,86 @@
-
-
- QGCUnconnectedInfoWidget
-
-
-
- 0
- 0
- 400
- 300
-
-
-
- Form
-
-
- -
-
-
- Qt::ScrollBarAlwaysOff
-
-
- Qt::ScrollBarAlwaysOff
-
-
- QTextEdit::AutoAll
-
-
- false
-
-
- true
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
-<tr>
-<td style="border: none;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:12pt; font-weight:600;">Unmanned System List</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:6pt; font-weight:600;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; font-weight:600;">No Systems are connected yet.</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> Please either connect a link or use the simulation function to see QGroundControl in action.</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:9pt;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt; font-style:italic;">Click on the simulation button below to simulate a micro air vehicle or on the connect link button to connect a serial port link. A UDP link is already open for connections on port </span><span style=" font-family:'Ubuntu'; font-size:9pt; font-weight:600; font-style:italic;">14550</span><span style=" font-family:'Ubuntu'; font-size:9pt; font-style:italic;">.</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:9pt; font-style:italic;"></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:9pt; font-style:italic;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:10pt; font-weight:600;">Communication Link Help:</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:9pt; font-style:italic;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:9pt;">If you encounter communication problems on your link (e.g. no MAV is shown in the list after connecting the link), please check if you receive data on the link using the communication console. Select </span><span style=" font-family:'Ubuntu'; font-size:9pt; font-weight:600;">Tools -> Communication Console</span><span style=" font-family:'Ubuntu'; font-size:9pt;"> to enable it. The console should show incoming traffic and some used bandwidth (e.g. 1.43 kB/s on the indicator).</span></p></td></tr></table></body></html>
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- Simulate MAV
-
-
-
- -
-
-
- Connect Link
-
-
-
-
-
-
-
-
+
+
+ QGCUnconnectedInfoWidget
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+ Form
+
+
+ -
+
+
+ Qt::ScrollBarAlwaysOff
+
+
+ Qt::ScrollBarAlwaysOff
+
+
+ QTextEdit::AutoAll
+
+
+ false
+
+
+ true
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:14pt; font-weight:600;">Unmanned System List</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:6pt; font-weight:600;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt; font-weight:600;">No Systems are connected yet.</span><span style=" font-family:'Ubuntu'; font-size:11pt;"> Please either connect a link or use the simulation function to see QGroundControl in action.</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt; font-style:italic;">Click on the simulation button below to simulate a micro air vehicle or on the connect link button to connect a serial port link. A UDP link is already open for connections on port </span><span style=" font-family:'Ubuntu'; font-size:11pt; font-weight:600; font-style:italic;">14550</span><span style=" font-family:'Ubuntu'; font-size:11pt; font-style:italic;">.</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; font-style:italic;"></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; font-style:italic;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt; font-weight:600;">Communication Link Help:</span></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt; font-style:italic;"></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">If you encounter communication problems on your link (e.g. no MAV is shown in the list after connecting the link), please check if you receive data on the link using the communication console. Select </span><span style=" font-family:'Ubuntu'; font-size:11pt; font-weight:600;">Tools -> Communication Console</span><span style=" font-family:'Ubuntu'; font-size:11pt;"> to enable it. The console should show incoming traffic and some used bandwidth (e.g. 1.43 kB/s on the indicator).</span></p></td></tr></table></body></html>
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Simulate MAV
+
+
+
+ -
+
+
+ Connect Link
+
+
+
+
+
+
+
+