diff --git a/ground/gcs/src/share/configurations/default.xml b/ground/gcs/src/share/configurations/default.xml
index fc34482f9..a5136e1bb 100644
--- a/ground/gcs/src/share/configurations/default.xml
+++ b/ground/gcs/src/share/configurations/default.xml
@@ -1635,7 +1635,7 @@
0.0.0
- %%DATAPATH%%qml/Pfd.qml
+ %%DATAPATH%%qml/PfdTerrain.qml
1
1
true
@@ -1659,7 +1659,7 @@
0.0.0
- %%DATAPATH%%qml/Pfd.qml
+ %%DATAPATH%%qml/PfdTerrain.qml
1
1
true
@@ -1683,7 +1683,7 @@
0.0.0
- %%DATAPATH%%qml/ModelView.qml
+ %%DATAPATH%%qml/Model.qml
1
1
false
@@ -1707,7 +1707,7 @@
0.0.0
- %%DATAPATH%%qml/ModelView.qml
+ %%DATAPATH%%qml/ModelTerrain.qml
1
1
true
@@ -1731,7 +1731,7 @@
0.0.0
- %%DATAPATH%%qml/ModelView.qml
+ %%DATAPATH%%qml/ModelTerrain.qml
1
1
true
@@ -1755,7 +1755,7 @@
0.0.0
- %%DATAPATH%%qml/EarthView.qml
+ %%DATAPATH%%qml/Earth.qml
1
1
true
diff --git a/ground/gcs/src/share/qml/CubeView.qml b/ground/gcs/src/share/qml/Cube.qml
similarity index 100%
rename from ground/gcs/src/share/qml/CubeView.qml
rename to ground/gcs/src/share/qml/Cube.qml
diff --git a/ground/gcs/src/share/qml/EarthView.qml b/ground/gcs/src/share/qml/Earth.qml
similarity index 98%
rename from ground/gcs/src/share/qml/EarthView.qml
rename to ground/gcs/src/share/qml/Earth.qml
index d80170ffc..198a412e2 100644
--- a/ground/gcs/src/share/qml/EarthView.qml
+++ b/ground/gcs/src/share/qml/Earth.qml
@@ -23,7 +23,7 @@ import QtQuick.Controls 1.4
import Pfd 1.0
import OsgQtQuick 1.0
-import "common.js" as Utils
+import "js/common.js" as Utils
Item {
OSGViewport {
diff --git a/ground/gcs/src/share/qml/ModelView.qml b/ground/gcs/src/share/qml/Model.qml
similarity index 82%
rename from ground/gcs/src/share/qml/ModelView.qml
rename to ground/gcs/src/share/qml/Model.qml
index 24b41786d..a31c91a3b 100644
--- a/ground/gcs/src/share/qml/ModelView.qml
+++ b/ground/gcs/src/share/qml/Model.qml
@@ -19,10 +19,7 @@
*/
import QtQuick 2.4
-Item {
- Loader {
- anchors.fill: parent
- focus: true
- source: pfdContext.terrainEnabled ? "model/ModelTerrainView.qml" : "model/ModelView.qml"
- }
-}
\ No newline at end of file
+import "model"
+
+ModelView {
+}
diff --git a/ground/gcs/src/share/qml/ModelTerrain.qml b/ground/gcs/src/share/qml/ModelTerrain.qml
new file mode 100644
index 000000000..8ec9abc56
--- /dev/null
+++ b/ground/gcs/src/share/qml/ModelTerrain.qml
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2016 The LibrePilot Project
+ * Contact: http://www.librepilot.org
+ *
+ * This file is part of LibrePilot GCS.
+ *
+ * LibrePilot GCS is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * LibrePilot GCS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with LibrePilot GCS. If not, see .
+ */
+import QtQuick 2.4
+
+import "model"
+
+ModelTerrainView {
+}
diff --git a/ground/gcs/src/share/qml/Pfd.qml b/ground/gcs/src/share/qml/Pfd.qml
index 8e007dd01..c7a004730 100644
--- a/ground/gcs/src/share/qml/Pfd.qml
+++ b/ground/gcs/src/share/qml/Pfd.qml
@@ -19,107 +19,8 @@
*/
import QtQuick 2.4
-import "pfd" as Pfd
+import "pfd"
-Rectangle {
- color: "#515151"
-
- Pfd.SvgElementImage {
- id: background
- elementName: "pfd-window"
- fillMode: Image.PreserveAspectFit
- anchors.fill: parent
- sceneSize: Qt.size(width, height)
-
- Rectangle {
- width: Math.floor(parent.paintedHeight * 1.319)
- height: Math.floor(parent.paintedHeight - parent.paintedHeight * 0.008)
-
- color: "transparent"
- border.color: "white"
- border.width: Math.floor(parent.paintedHeight * 0.008)
- radius: Math.floor(parent.paintedHeight * 0.01)
- anchors.centerIn: parent
- }
-
- Item {
- id: sceneItem
-
- FontLoader {
- id: pt_bold
- source: "qrc:/utils/fonts/PTS75F.ttf"
- }
-
- width: Math.floor((parent.paintedHeight * 1.32) - (parent.paintedHeight * 0.013))
- height: Math.floor(parent.paintedHeight - parent.paintedHeight * 0.02)
- property variant viewportSize : Qt.size(width, height)
-
- anchors.centerIn: parent
- clip: true
-
- Loader {
- id: worldLoader
- anchors.fill: parent
- focus: true
- source: pfdContext.terrainEnabled ? "pfd/PfdTerrainView.qml" : "pfd/PfdWorldView.qml"
- }
-
- Pfd.HorizontCenter {
- id: horizontCenterItem
- sceneSize: sceneItem.viewportSize
- anchors.fill: parent
- }
-
- Pfd.RollScale {
- id: rollscale
- sceneSize: sceneItem.viewportSize
- horizontCenter: horizontCenterItem.horizontCenter
- anchors.fill: parent
- }
-
- Pfd.SvgElementImage {
- id: side_slip_fixed
- elementName: "sideslip-fixed"
- sceneSize: sceneItem.viewportSize
-
- x: scaledBounds.x * sceneItem.width
- }
-
- Pfd.Compass {
- anchors.fill: parent
- sceneSize: sceneItem.viewportSize
- }
-
- Pfd.SpeedScale {
- anchors.fill: parent
- sceneSize: sceneItem.viewportSize
- }
-
- Pfd.AltitudeScale {
- anchors.fill: parent
- sceneSize: sceneItem.viewportSize
- }
-
- Pfd.VsiScale {
- anchors.fill: parent
- sceneSize: sceneItem.viewportSize
- visible: pfdContext.altitudeUnit != 0
- }
-
- Pfd.Info {
- anchors.fill: parent
- sceneSize: sceneItem.viewportSize
- }
-
- Pfd.Panels {
- anchors.fill: parent
- sceneSize: sceneItem.viewportSize
- }
-
- Pfd.Warnings {
- anchors.fill: parent
- sceneSize: sceneItem.viewportSize
- }
- }
- }
+PfdView {
+ worldFile: "PfdSimpleWorld.qml"
}
diff --git a/ground/gcs/src/share/qml/PfdTerrain.qml b/ground/gcs/src/share/qml/PfdTerrain.qml
new file mode 100644
index 000000000..c7804a560
--- /dev/null
+++ b/ground/gcs/src/share/qml/PfdTerrain.qml
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2016 The LibrePilot Project
+ * Contact: http://www.librepilot.org
+ *
+ * This file is part of LibrePilot GCS.
+ *
+ * LibrePilot GCS is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * LibrePilot GCS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with LibrePilot GCS. If not, see .
+ */
+import QtQuick 2.4
+
+import "pfd"
+
+PfdView {
+ worldFile: "PfdTerrainWorld.qml"
+}
diff --git a/ground/gcs/src/share/qml/common.js b/ground/gcs/src/share/qml/js/common.js
similarity index 100%
rename from ground/gcs/src/share/qml/common.js
rename to ground/gcs/src/share/qml/js/common.js
diff --git a/ground/gcs/src/share/qml/uav.js b/ground/gcs/src/share/qml/js/uav.js
similarity index 97%
rename from ground/gcs/src/share/qml/uav.js
rename to ground/gcs/src/share/qml/js/uav.js
index 922027b05..451cfb163 100644
--- a/ground/gcs/src/share/qml/uav.js
+++ b/ground/gcs/src/share/qml/js/uav.js
@@ -28,7 +28,7 @@
.import UAVTalk.VtolPathFollowerSettings 1.0 as VtolPathFollowerSettings
// Navigation
-.import UAVTalk.HomeLocation 1.0 as HomeLocation
+.import UAVTalk.HomeLocation 1.0 as HomeLocation
.import UAVTalk.TakeOffLocation 1.0 as TakeOffLocation
// Sensors
@@ -147,7 +147,7 @@ function defaultPosition() {
*
*/
function isCC3D() {
- // Hack: detect Coptercontrol with mem free
+ // Hack: detect Coptercontrol with mem free
return (freeMemoryBytes() < 3096);
}
@@ -251,7 +251,7 @@ function gpsStatus() {
return ["NO GPS", "NO FIX", "2D", "3D"][gpsPositionSensor.status];
}
-function fusionAlgorithm() {
+function fusionAlgorithm() {
return ["None", "Basic (No Nav)", "CompMag", "Comp+Mag+GPS", "EKFIndoor", "GPSNav (INS13)"][revoSettings.fusionAlgorithm];
}
@@ -271,7 +271,7 @@ function batteryModuleEnabled() {
return (hwSettings.optionalModulesBattery == HwSettings.OptionalModules.Enabled);
}
-function batteryNbCells() {
+function batteryNbCells() {
return flightBatterySettings.nbCells;
}
@@ -287,7 +287,7 @@ function batteryConsumedEnergy() {
return flightBatteryState.consumedEnergy.toFixed(0);
}
-function estimatedFlightTimeValue() {
+function estimatedFlightTimeValue() {
return Math.round(flightBatteryState.estimatedFlightTime);
}
@@ -351,7 +351,7 @@ function waypointHeading() {
}
function homeDistance() {
- return Math.sqrt(Math.pow((takeOffLocation.east - positionState.east), 2) +
+ return Math.sqrt(Math.pow((takeOffLocation.east - positionState.east), 2) +
Math.pow((takeOffLocation.north - positionState.north), 2));
}
@@ -377,8 +377,8 @@ function isVtolPathFollowerSettingsThrustAuto() {
}
function flightModeName() {
- return ["MANUAL", "STAB 1", "STAB 2", "STAB 3", "STAB 4", "STAB 5", "STAB 6",
- "POS HOLD", "COURSELOCK", "VEL ROAM", "HOME LEASH", "ABS POS", "RTB",
+ return ["MANUAL", "STAB 1", "STAB 2", "STAB 3", "STAB 4", "STAB 5", "STAB 6",
+ "POS HOLD", "COURSELOCK", "VEL ROAM", "HOME LEASH", "ABS POS", "RTB",
"LAND", "PATHPLAN", "POI", "AUTOCRUISE", "AUTOTAKEOFF"][flightStatus.flightMode];
}
diff --git a/ground/gcs/src/share/qml/model/ModelTerrainView.qml b/ground/gcs/src/share/qml/model/ModelTerrainView.qml
index 112923356..70ad6961b 100644
--- a/ground/gcs/src/share/qml/model/ModelTerrainView.qml
+++ b/ground/gcs/src/share/qml/model/ModelTerrainView.qml
@@ -23,96 +23,98 @@ import QtQuick.Controls 1.4
import Pfd 1.0
import OsgQtQuick 1.0
-import "../common.js" as Utils
-import "../uav.js" as UAV
+import "../js/common.js" as Utils
+import "../js/uav.js" as UAV
-OSGViewport {
- id: osgViewport
+Item {
+ OSGViewport {
+ id: osgViewport
- anchors.fill: parent
- focus: true
+ anchors.fill: parent
+ focus: true
- sceneNode: skyNode
- camera: camera
- manipulator: nodeTrackerManipulator
+ sceneNode: skyNode
+ camera: camera
+ manipulator: nodeTrackerManipulator
+
+ OSGCamera {
+ id: camera
+ fieldOfView: 90
+ logarithmicDepthBuffer: true
+ }
+
+ OSGNodeTrackerManipulator {
+ id: nodeTrackerManipulator
+ // use model to compute camera home position
+ sceneNode: modelTransformNode
+ // model will be tracked
+ trackNode: modelTransformNode
+ }
+
+ OSGSkyNode {
+ id: skyNode
+ sceneNode: sceneGroup
+ viewport: osgViewport
+ dateTime: Utils.getDateTime()
+ minimumAmbientLight: pfdContext.minimumAmbientLight
+ }
+
+ OSGGroup {
+ id: sceneGroup
+ children: [ terrainFileNode, modelNode ]
+ }
+
+ OSGGeoTransformNode {
+ id: modelNode
+
+ childNode: modelTransformNode
+ sceneNode: terrainFileNode
+
+ clampToTerrain: true
+
+ position: UAV.position()
+ }
+
+ OSGTransformNode {
+ id: modelTransformNode
+ childNode: modelFileNode
+ // model dimensions are in mm, scale to meters
+ scale: Qt.vector3d(0.001, 0.001, 0.001)
+ attitude: UAV.attitude()
+ }
+
+ OSGFileNode {
+ id: terrainFileNode
+ source: pfdContext.terrainFile
+ }
+
+ OSGFileNode {
+ id: modelFileNode
+
+ // use ShaderGen pseudoloader to generate the shaders expected by osgEarth
+ // see http://docs.osgearth.org/en/latest/faq.html#i-added-a-node-but-it-has-no-texture-lighting-etc-in-osgearth-why
+ source: pfdContext.modelFile + ".osgearth_shadergen"
+
+ optimizeMode: OptimizeMode.OptimizeAndCheck
+ }
+
+ Keys.onUpPressed: {
+ pfdContext.nextModel();
+ }
+
+ Keys.onDownPressed: {
+ pfdContext.previousModel();
+ }
+
+ BusyIndicator {
+ width: 24
+ height: 24
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.margins: 4
+
+ running: osgViewport.busy
+ }
- OSGCamera {
- id: camera
- fieldOfView: 90
- logarithmicDepthBuffer: true
}
-
- OSGNodeTrackerManipulator {
- id: nodeTrackerManipulator
- // use model to compute camera home position
- sceneNode: modelTransformNode
- // model will be tracked
- trackNode: modelTransformNode
- }
-
- OSGSkyNode {
- id: skyNode
- sceneNode: sceneGroup
- viewport: osgViewport
- dateTime: Utils.getDateTime()
- minimumAmbientLight: pfdContext.minimumAmbientLight
- }
-
- OSGGroup {
- id: sceneGroup
- children: [ terrainFileNode, modelNode ]
- }
-
- OSGGeoTransformNode {
- id: modelNode
-
- childNode: modelTransformNode
- sceneNode: terrainFileNode
-
- clampToTerrain: true
-
- position: UAV.position()
- }
-
- OSGTransformNode {
- id: modelTransformNode
- childNode: modelFileNode
- // model dimensions are in mm, scale to meters
- scale: Qt.vector3d(0.001, 0.001, 0.001)
- attitude: UAV.attitude()
- }
-
- OSGFileNode {
- id: terrainFileNode
- source: pfdContext.terrainFile
- }
-
- OSGFileNode {
- id: modelFileNode
-
- // use ShaderGen pseudoloader to generate the shaders expected by osgEarth
- // see http://docs.osgearth.org/en/latest/faq.html#i-added-a-node-but-it-has-no-texture-lighting-etc-in-osgearth-why
- source: pfdContext.modelFile + ".osgearth_shadergen"
-
- optimizeMode: OptimizeMode.OptimizeAndCheck
- }
-
- Keys.onUpPressed: {
- pfdContext.nextModel();
- }
-
- Keys.onDownPressed: {
- pfdContext.previousModel();
- }
-
- BusyIndicator {
- width: 24
- height: 24
- anchors.right: parent.right
- anchors.top: parent.top
- anchors.margins: 4
-
- running: osgViewport.busy
- }
-
}
diff --git a/ground/gcs/src/share/qml/model/ModelView.qml b/ground/gcs/src/share/qml/model/ModelView.qml
index 6074d51e8..200e3510c 100644
--- a/ground/gcs/src/share/qml/model/ModelView.qml
+++ b/ground/gcs/src/share/qml/model/ModelView.qml
@@ -21,7 +21,7 @@ import QtQuick 2.4
import OsgQtQuick 1.0
-import "../uav.js" as UAV
+import "../js/uav.js" as UAV
Item {
diff --git a/ground/gcs/src/share/qml/pfd/AltitudeScale.qml b/ground/gcs/src/share/qml/pfd/AltitudeScale.qml
index 3fb9adbf7..8a38935af 100644
--- a/ground/gcs/src/share/qml/pfd/AltitudeScale.qml
+++ b/ground/gcs/src/share/qml/pfd/AltitudeScale.qml
@@ -19,8 +19,8 @@
*/
import QtQuick 2.4
-import "../common.js" as Utils
-import "../uav.js" as UAV
+import "../js/common.js" as Utils
+import "../js/uav.js" as UAV
Item {
id: sceneItem
diff --git a/ground/gcs/src/share/qml/pfd/Compass.qml b/ground/gcs/src/share/qml/pfd/Compass.qml
index 02d905a7a..81dec7daf 100644
--- a/ground/gcs/src/share/qml/pfd/Compass.qml
+++ b/ground/gcs/src/share/qml/pfd/Compass.qml
@@ -19,7 +19,7 @@
*/
import QtQuick 2.4
-import "../uav.js" as UAV
+import "../js/uav.js" as UAV
Item {
id: sceneItem
diff --git a/ground/gcs/src/share/qml/pfd/Info.qml b/ground/gcs/src/share/qml/pfd/Info.qml
index 9fae25d24..0224355d7 100644
--- a/ground/gcs/src/share/qml/pfd/Info.qml
+++ b/ground/gcs/src/share/qml/pfd/Info.qml
@@ -19,8 +19,8 @@
*/
import QtQuick 2.4
-import "../common.js" as Utils
-import "../uav.js" as UAV
+import "../js/common.js" as Utils
+import "../js/uav.js" as UAV
Item {
id: info
diff --git a/ground/gcs/src/share/qml/pfd/Panels.qml b/ground/gcs/src/share/qml/pfd/Panels.qml
index e433bc2e7..e9a865de0 100644
--- a/ground/gcs/src/share/qml/pfd/Panels.qml
+++ b/ground/gcs/src/share/qml/pfd/Panels.qml
@@ -19,8 +19,8 @@
*/
import QtQuick 2.0
-import "../common.js" as Utils
-import "../uav.js" as UAV
+import "../js/common.js" as Utils
+import "../js/uav.js" as UAV
Item {
id: panels
diff --git a/ground/gcs/src/share/qml/pfd/PfdWorldView.qml b/ground/gcs/src/share/qml/pfd/PfdSimpleWorld.qml
similarity index 99%
rename from ground/gcs/src/share/qml/pfd/PfdWorldView.qml
rename to ground/gcs/src/share/qml/pfd/PfdSimpleWorld.qml
index e61060e06..a238ff777 100644
--- a/ground/gcs/src/share/qml/pfd/PfdWorldView.qml
+++ b/ground/gcs/src/share/qml/pfd/PfdSimpleWorld.qml
@@ -19,7 +19,7 @@
*/
import QtQuick 2.4
-import "../uav.js" as UAV
+import "../js/uav.js" as UAV
Item {
id: worldView
diff --git a/ground/gcs/src/share/qml/pfd/PfdTerrainView.qml b/ground/gcs/src/share/qml/pfd/PfdTerrainWorld.qml
similarity index 98%
rename from ground/gcs/src/share/qml/pfd/PfdTerrainView.qml
rename to ground/gcs/src/share/qml/pfd/PfdTerrainWorld.qml
index b2b882d31..aa6353fc0 100644
--- a/ground/gcs/src/share/qml/pfd/PfdTerrainView.qml
+++ b/ground/gcs/src/share/qml/pfd/PfdTerrainWorld.qml
@@ -22,8 +22,8 @@ import QtQuick 2.4
import Pfd 1.0
import OsgQtQuick 1.0
-import "../common.js" as Utils
-import "../uav.js" as UAV
+import "../js/common.js" as Utils
+import "../js/uav.js" as UAV
OSGViewport {
id: osgViewport
@@ -31,10 +31,6 @@ OSGViewport {
//anchors.fill: parent
focus: true
- sceneNode: skyNode
- camera: camera
- manipulator: geoTransformManipulator
-
readonly property real horizontCenter : horizontCenterItem.horizontCenter
// Factor for OSGViewer vertical offset
@@ -44,6 +40,10 @@ OSGViewport {
//height: height * (1 + factor)
y: -height * factor
+ sceneNode: skyNode
+ camera: camera
+ manipulator: geoTransformManipulator
+
OSGCamera {
id: camera
@@ -90,7 +90,6 @@ OSGViewport {
property double pitch1DegHeight: sceneItem.height * pitch1DegScaledHeight
-
transform: [
Translate {
id: pitchTranslate
diff --git a/ground/gcs/src/share/qml/pfd/PfdView.qml b/ground/gcs/src/share/qml/pfd/PfdView.qml
new file mode 100644
index 000000000..0032a019a
--- /dev/null
+++ b/ground/gcs/src/share/qml/pfd/PfdView.qml
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2016 The LibrePilot Project
+ * Contact: http://www.librepilot.org
+ *
+ * This file is part of LibrePilot GCS.
+ *
+ * LibrePilot GCS is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * LibrePilot GCS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with LibrePilot GCS. If not, see .
+ */
+import QtQuick 2.4
+
+Rectangle {
+
+ color: "#515151"
+
+ property string worldFile: "PfdSimpleWorld.qml"
+
+ SvgElementImage {
+ id: background
+ elementName: "pfd-window"
+ fillMode: Image.PreserveAspectFit
+ anchors.fill: parent
+ sceneSize: Qt.size(width, height)
+
+ Rectangle {
+ width: Math.floor(parent.paintedHeight * 1.319)
+ height: Math.floor(parent.paintedHeight - parent.paintedHeight * 0.008)
+
+ color: "transparent"
+ border.color: "white"
+ border.width: Math.floor(parent.paintedHeight * 0.008)
+ radius: Math.floor(parent.paintedHeight * 0.01)
+ anchors.centerIn: parent
+ }
+
+ Item {
+ id: sceneItem
+
+ FontLoader {
+ id: pt_bold
+ source: "qrc:/utils/fonts/PTS75F.ttf"
+ }
+
+ width: Math.floor((parent.paintedHeight * 1.32) - (parent.paintedHeight * 0.013))
+ height: Math.floor(parent.paintedHeight - parent.paintedHeight * 0.02)
+ property variant viewportSize : Qt.size(width, height)
+
+ anchors.centerIn: parent
+ clip: true
+
+ Loader {
+ id: worldLoader
+ anchors.fill: parent
+ focus: true
+ source: worldFile
+ }
+
+ HorizontCenter {
+ id: horizontCenterItem
+ sceneSize: sceneItem.viewportSize
+ anchors.fill: parent
+ }
+
+ RollScale {
+ id: rollscale
+ sceneSize: sceneItem.viewportSize
+ horizontCenter: horizontCenterItem.horizontCenter
+ anchors.fill: parent
+ }
+
+ SvgElementImage {
+ id: side_slip_fixed
+ elementName: "sideslip-fixed"
+ sceneSize: sceneItem.viewportSize
+
+ x: scaledBounds.x * sceneItem.width
+ }
+
+ Compass {
+ anchors.fill: parent
+ sceneSize: sceneItem.viewportSize
+ }
+
+ SpeedScale {
+ anchors.fill: parent
+ sceneSize: sceneItem.viewportSize
+ }
+
+ AltitudeScale {
+ anchors.fill: parent
+ sceneSize: sceneItem.viewportSize
+ }
+
+ VsiScale {
+ anchors.fill: parent
+ sceneSize: sceneItem.viewportSize
+ visible: pfdContext.altitudeUnit != 0
+ }
+
+ Info {
+ anchors.fill: parent
+ sceneSize: sceneItem.viewportSize
+ }
+
+ Panels {
+ anchors.fill: parent
+ sceneSize: sceneItem.viewportSize
+ }
+
+ Warnings {
+ anchors.fill: parent
+ sceneSize: sceneItem.viewportSize
+ }
+ }
+ }
+}
diff --git a/ground/gcs/src/share/qml/pfd/RollScale.qml b/ground/gcs/src/share/qml/pfd/RollScale.qml
index 0cf36d533..9aed9ba02 100644
--- a/ground/gcs/src/share/qml/pfd/RollScale.qml
+++ b/ground/gcs/src/share/qml/pfd/RollScale.qml
@@ -19,7 +19,7 @@
*/
import QtQuick 2.4
-import "../uav.js" as UAV
+import "../js/uav.js" as UAV
Item {
id: sceneItem
diff --git a/ground/gcs/src/share/qml/pfd/SpeedScale.qml b/ground/gcs/src/share/qml/pfd/SpeedScale.qml
index 0b80e4241..ed5606bfb 100644
--- a/ground/gcs/src/share/qml/pfd/SpeedScale.qml
+++ b/ground/gcs/src/share/qml/pfd/SpeedScale.qml
@@ -19,7 +19,7 @@
*/
import QtQuick 2.4
-import "../uav.js" as UAV
+import "../js/uav.js" as UAV
Item {
id: sceneItem
diff --git a/ground/gcs/src/share/qml/pfd/VsiScale.qml b/ground/gcs/src/share/qml/pfd/VsiScale.qml
index 0aef9b2b5..3ee9c73eb 100644
--- a/ground/gcs/src/share/qml/pfd/VsiScale.qml
+++ b/ground/gcs/src/share/qml/pfd/VsiScale.qml
@@ -19,7 +19,7 @@
*/
import QtQuick 2.4
-import "../uav.js" as UAV
+import "../js/uav.js" as UAV
Item {
id: sceneItem
diff --git a/ground/gcs/src/share/qml/pfd/Warnings.qml b/ground/gcs/src/share/qml/pfd/Warnings.qml
index 34bf3c7ac..bb399a50b 100644
--- a/ground/gcs/src/share/qml/pfd/Warnings.qml
+++ b/ground/gcs/src/share/qml/pfd/Warnings.qml
@@ -19,8 +19,8 @@
*/
import QtQuick 2.4
-import "../common.js" as Utils
-import "../uav.js" as UAV
+import "../js/common.js" as Utils
+import "../js/uav.js" as UAV
Item {
id: warnings