diff --git a/flightgear/Malolo1/.#Malolo1-set.xml.1.1 b/files/flightgear/Malolo1/.#Malolo1-set.xml.1.1 similarity index 100% rename from flightgear/Malolo1/.#Malolo1-set.xml.1.1 rename to files/flightgear/Malolo1/.#Malolo1-set.xml.1.1 diff --git a/flightgear/Malolo1/COPYING b/files/flightgear/Malolo1/COPYING similarity index 100% rename from flightgear/Malolo1/COPYING rename to files/flightgear/Malolo1/COPYING diff --git a/flightgear/YardStick/Engines/18x8.xml b/files/flightgear/Malolo1/Engines/18x8.xml similarity index 100% rename from flightgear/YardStick/Engines/18x8.xml rename to files/flightgear/Malolo1/Engines/18x8.xml diff --git a/flightgear/YardStick/Engines/Zenoah_G-26A.xml b/files/flightgear/Malolo1/Engines/Zenoah_G-26A.xml similarity index 100% rename from flightgear/YardStick/Engines/Zenoah_G-26A.xml rename to files/flightgear/Malolo1/Engines/Zenoah_G-26A.xml diff --git a/flightgear/Malolo1/Malolo1-set.xml b/files/flightgear/Malolo1/Malolo1-set.xml similarity index 100% rename from flightgear/Malolo1/Malolo1-set.xml rename to files/flightgear/Malolo1/Malolo1-set.xml diff --git a/flightgear/Malolo1/Malolo1-splash.rgb b/files/flightgear/Malolo1/Malolo1-splash.rgb similarity index 100% rename from flightgear/Malolo1/Malolo1-splash.rgb rename to files/flightgear/Malolo1/Malolo1-splash.rgb diff --git a/flightgear/Malolo1/Malolo1.xml b/files/flightgear/Malolo1/Malolo1.xml similarity index 100% rename from flightgear/Malolo1/Malolo1.xml rename to files/flightgear/Malolo1/Malolo1.xml diff --git a/flightgear/Malolo1/Models/DSC01758.rgb b/files/flightgear/Malolo1/Models/DSC01758.rgb similarity index 100% rename from flightgear/Malolo1/Models/DSC01758.rgb rename to files/flightgear/Malolo1/Models/DSC01758.rgb diff --git a/flightgear/Malolo1/Models/Malolo1.ac b/files/flightgear/Malolo1/Models/Malolo1.ac similarity index 100% rename from flightgear/Malolo1/Models/Malolo1.ac rename to files/flightgear/Malolo1/Models/Malolo1.ac diff --git a/flightgear/Malolo1/Models/Malolo1.xml b/files/flightgear/Malolo1/Models/Malolo1.xml similarity index 100% rename from flightgear/Malolo1/Models/Malolo1.xml rename to files/flightgear/Malolo1/Models/Malolo1.xml diff --git a/flightgear/Malolo1/thumbnail.jpg b/files/flightgear/Malolo1/thumbnail.jpg similarity index 100% rename from flightgear/Malolo1/thumbnail.jpg rename to files/flightgear/Malolo1/thumbnail.jpg diff --git a/flightgear/Rascal110/Dialogs/config.xml b/files/flightgear/Rascal110/Dialogs/config.xml similarity index 100% rename from flightgear/Rascal110/Dialogs/config.xml rename to files/flightgear/Rascal110/Dialogs/config.xml diff --git a/flightgear/Rascal110/Engines/18x8.xml b/files/flightgear/Rascal110/Engines/18x8.xml similarity index 100% rename from flightgear/Rascal110/Engines/18x8.xml rename to files/flightgear/Rascal110/Engines/18x8.xml diff --git a/flightgear/Rascal110/Engines/Zenoah_G-26A.xml b/files/flightgear/Rascal110/Engines/Zenoah_G-26A.xml similarity index 100% rename from flightgear/Rascal110/Engines/Zenoah_G-26A.xml rename to files/flightgear/Rascal110/Engines/Zenoah_G-26A.xml diff --git a/flightgear/Rascal110/Models/Rascal.rgb b/files/flightgear/Rascal110/Models/Rascal.rgb similarity index 100% rename from flightgear/Rascal110/Models/Rascal.rgb rename to files/flightgear/Rascal110/Models/Rascal.rgb diff --git a/flightgear/Rascal110/Models/Rascal110-000-013.ac b/files/flightgear/Rascal110/Models/Rascal110-000-013.ac similarity index 100% rename from flightgear/Rascal110/Models/Rascal110-000-013.ac rename to files/flightgear/Rascal110/Models/Rascal110-000-013.ac diff --git a/flightgear/Rascal110/Models/Rascal110-000-013.ac.before-color-change b/files/flightgear/Rascal110/Models/Rascal110-000-013.ac.before-color-change similarity index 100% rename from flightgear/Rascal110/Models/Rascal110-000-013.ac.before-color-change rename to files/flightgear/Rascal110/Models/Rascal110-000-013.ac.before-color-change diff --git a/flightgear/Rascal110/Models/Rascal110.xml b/files/flightgear/Rascal110/Models/Rascal110.xml similarity index 100% rename from flightgear/Rascal110/Models/Rascal110.xml rename to files/flightgear/Rascal110/Models/Rascal110.xml diff --git a/flightgear/Rascal110/Models/Trajectory-Marker.ac b/files/flightgear/Rascal110/Models/Trajectory-Marker.ac similarity index 100% rename from flightgear/Rascal110/Models/Trajectory-Marker.ac rename to files/flightgear/Rascal110/Models/Trajectory-Marker.ac diff --git a/flightgear/Rascal110/Models/Trajectory-Marker.xml b/files/flightgear/Rascal110/Models/Trajectory-Marker.xml similarity index 100% rename from flightgear/Rascal110/Models/Trajectory-Marker.xml rename to files/flightgear/Rascal110/Models/Trajectory-Marker.xml diff --git a/flightgear/Rascal110/Models/fix.sh b/files/flightgear/Rascal110/Models/fix.sh similarity index 100% rename from flightgear/Rascal110/Models/fix.sh rename to files/flightgear/Rascal110/Models/fix.sh diff --git a/flightgear/Rascal110/Models/smoke.png b/files/flightgear/Rascal110/Models/smoke.png similarity index 100% rename from flightgear/Rascal110/Models/smoke.png rename to files/flightgear/Rascal110/Models/smoke.png diff --git a/flightgear/Rascal110/Models/smokeW.xml b/files/flightgear/Rascal110/Models/smokeW.xml similarity index 100% rename from flightgear/Rascal110/Models/smokeW.xml rename to files/flightgear/Rascal110/Models/smokeW.xml diff --git a/flightgear/Rascal110/README.Rascal b/files/flightgear/Rascal110/README.Rascal similarity index 100% rename from flightgear/Rascal110/README.Rascal rename to files/flightgear/Rascal110/README.Rascal diff --git a/flightgear/Rascal110/Rascal-keyboard.xml b/files/flightgear/Rascal110/Rascal-keyboard.xml similarity index 100% rename from flightgear/Rascal110/Rascal-keyboard.xml rename to files/flightgear/Rascal110/Rascal-keyboard.xml diff --git a/flightgear/Rascal110/Rascal-submodels.xml b/files/flightgear/Rascal110/Rascal-submodels.xml similarity index 100% rename from flightgear/Rascal110/Rascal-submodels.xml rename to files/flightgear/Rascal110/Rascal-submodels.xml diff --git a/flightgear/Rascal110/Rascal110-JSBSim-set.xml b/files/flightgear/Rascal110/Rascal110-JSBSim-set.xml similarity index 100% rename from flightgear/Rascal110/Rascal110-JSBSim-set.xml rename to files/flightgear/Rascal110/Rascal110-JSBSim-set.xml diff --git a/flightgear/Rascal110/Rascal110-JSBSim.xml b/files/flightgear/Rascal110/Rascal110-JSBSim.xml similarity index 100% rename from flightgear/Rascal110/Rascal110-JSBSim.xml rename to files/flightgear/Rascal110/Rascal110-JSBSim.xml diff --git a/flightgear/Rascal110/Rascal110-YASim-set.xml b/files/flightgear/Rascal110/Rascal110-YASim-set.xml similarity index 100% rename from flightgear/Rascal110/Rascal110-YASim-set.xml rename to files/flightgear/Rascal110/Rascal110-YASim-set.xml diff --git a/flightgear/Rascal110/Rascal110-YASim.xml b/files/flightgear/Rascal110/Rascal110-YASim.xml similarity index 100% rename from flightgear/Rascal110/Rascal110-YASim.xml rename to files/flightgear/Rascal110/Rascal110-YASim.xml diff --git a/flightgear/Rascal110/Rascal110-splash.rgb b/files/flightgear/Rascal110/Rascal110-splash.rgb similarity index 100% rename from flightgear/Rascal110/Rascal110-splash.rgb rename to files/flightgear/Rascal110/Rascal110-splash.rgb diff --git a/flightgear/Rascal110/Systems/.#110-autopilot.xml.1.2 b/files/flightgear/Rascal110/Systems/.#110-autopilot.xml.1.2 similarity index 100% rename from flightgear/Rascal110/Systems/.#110-autopilot.xml.1.2 rename to files/flightgear/Rascal110/Systems/.#110-autopilot.xml.1.2 diff --git a/flightgear/Rascal110/Systems/110-autopilot.xml b/files/flightgear/Rascal110/Systems/110-autopilot.xml similarity index 100% rename from flightgear/Rascal110/Systems/110-autopilot.xml rename to files/flightgear/Rascal110/Systems/110-autopilot.xml diff --git a/flightgear/Rascal110/Systems/110-autopilot.xml-a b/files/flightgear/Rascal110/Systems/110-autopilot.xml-a similarity index 100% rename from flightgear/Rascal110/Systems/110-autopilot.xml-a rename to files/flightgear/Rascal110/Systems/110-autopilot.xml-a diff --git a/flightgear/Rascal110/Systems/airdata.nas b/files/flightgear/Rascal110/Systems/airdata.nas similarity index 100% rename from flightgear/Rascal110/Systems/airdata.nas rename to files/flightgear/Rascal110/Systems/airdata.nas diff --git a/flightgear/Rascal110/Systems/electrical.xml b/files/flightgear/Rascal110/Systems/electrical.xml similarity index 100% rename from flightgear/Rascal110/Systems/electrical.xml rename to files/flightgear/Rascal110/Systems/electrical.xml diff --git a/flightgear/Rascal110/Systems/main.nas b/files/flightgear/Rascal110/Systems/main.nas similarity index 100% rename from flightgear/Rascal110/Systems/main.nas rename to files/flightgear/Rascal110/Systems/main.nas diff --git a/flightgear/Rascal110/Systems/ugear.nas b/files/flightgear/Rascal110/Systems/ugear.nas similarity index 100% rename from flightgear/Rascal110/Systems/ugear.nas rename to files/flightgear/Rascal110/Systems/ugear.nas diff --git a/flightgear/Rascal110/initfile.xml b/files/flightgear/Rascal110/initfile.xml similarity index 100% rename from flightgear/Rascal110/initfile.xml rename to files/flightgear/Rascal110/initfile.xml diff --git a/flightgear/YardStick/thumbnail.jpg b/files/flightgear/Rascal110/thumbnail.jpg similarity index 100% rename from flightgear/YardStick/thumbnail.jpg rename to files/flightgear/Rascal110/thumbnail.jpg diff --git a/flightgear/Malolo1/Engines/18x8.xml b/files/flightgear/YardStick/Engines/18x8.xml similarity index 100% rename from flightgear/Malolo1/Engines/18x8.xml rename to files/flightgear/YardStick/Engines/18x8.xml diff --git a/flightgear/Malolo1/Engines/Zenoah_G-26A.xml b/files/flightgear/YardStick/Engines/Zenoah_G-26A.xml similarity index 100% rename from flightgear/Malolo1/Engines/Zenoah_G-26A.xml rename to files/flightgear/YardStick/Engines/Zenoah_G-26A.xml diff --git a/flightgear/YardStick/Models/yardstik.ac b/files/flightgear/YardStick/Models/yardstik.ac similarity index 100% rename from flightgear/YardStick/Models/yardstik.ac rename to files/flightgear/YardStick/Models/yardstik.ac diff --git a/flightgear/YardStick/Models/yardstik.xml b/files/flightgear/YardStick/Models/yardstik.xml similarity index 100% rename from flightgear/YardStick/Models/yardstik.xml rename to files/flightgear/YardStick/Models/yardstik.xml diff --git a/flightgear/YardStick/YardStik-set.xml b/files/flightgear/YardStick/YardStik-set.xml similarity index 100% rename from flightgear/YardStick/YardStik-set.xml rename to files/flightgear/YardStick/YardStik-set.xml diff --git a/flightgear/YardStick/YardStik-splash.rgb b/files/flightgear/YardStick/YardStik-splash.rgb similarity index 100% rename from flightgear/YardStick/YardStik-splash.rgb rename to files/flightgear/YardStick/YardStik-splash.rgb diff --git a/flightgear/YardStick/YardStik.xml b/files/flightgear/YardStick/YardStik.xml similarity index 100% rename from flightgear/YardStick/YardStik.xml rename to files/flightgear/YardStick/YardStik.xml diff --git a/flightgear/Rascal110/thumbnail.jpg b/files/flightgear/YardStick/thumbnail.jpg similarity index 100% rename from flightgear/Rascal110/thumbnail.jpg rename to files/flightgear/YardStick/thumbnail.jpg diff --git a/flightgear/ardupilot.xml b/files/flightgear/ardupilot.xml similarity index 100% rename from flightgear/ardupilot.xml rename to files/flightgear/ardupilot.xml diff --git a/flightgear/connector_flightgear_uav.xml b/files/flightgear/connector_flightgear_uav.xml similarity index 100% rename from flightgear/connector_flightgear_uav.xml rename to files/flightgear/connector_flightgear_uav.xml diff --git a/flightgear/jeep/Models/AI-Liveries/airborn.xml b/files/flightgear/jeep/Models/AI-Liveries/airborn.xml similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/airborn.xml rename to files/flightgear/jeep/Models/AI-Liveries/airborn.xml diff --git a/flightgear/jeep/Models/AI-Liveries/army-g.xml b/files/flightgear/jeep/Models/AI-Liveries/army-g.xml similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/army-g.xml rename to files/flightgear/jeep/Models/AI-Liveries/army-g.xml diff --git a/flightgear/jeep/Models/AI-Liveries/hippie.xml b/files/flightgear/jeep/Models/AI-Liveries/hippie.xml similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/hippie.xml rename to files/flightgear/jeep/Models/AI-Liveries/hippie.xml diff --git a/flightgear/jeep/Models/AI-Liveries/jeep-1.png b/files/flightgear/jeep/Models/AI-Liveries/jeep-1.png similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/jeep-1.png rename to files/flightgear/jeep/Models/AI-Liveries/jeep-1.png diff --git a/flightgear/jeep/Models/AI-Liveries/jeep-1a.png b/files/flightgear/jeep/Models/AI-Liveries/jeep-1a.png similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/jeep-1a.png rename to files/flightgear/jeep/Models/AI-Liveries/jeep-1a.png diff --git a/flightgear/jeep/Models/AI-Liveries/jeep-1b.png b/files/flightgear/jeep/Models/AI-Liveries/jeep-1b.png similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/jeep-1b.png rename to files/flightgear/jeep/Models/AI-Liveries/jeep-1b.png diff --git a/flightgear/jeep/Models/AI-Liveries/jeep-1c.png b/files/flightgear/jeep/Models/AI-Liveries/jeep-1c.png similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/jeep-1c.png rename to files/flightgear/jeep/Models/AI-Liveries/jeep-1c.png diff --git a/flightgear/jeep/Models/AI-Liveries/jeep-1d.png b/files/flightgear/jeep/Models/AI-Liveries/jeep-1d.png similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/jeep-1d.png rename to files/flightgear/jeep/Models/AI-Liveries/jeep-1d.png diff --git a/flightgear/jeep/Models/Liveries/navy.xml b/files/flightgear/jeep/Models/AI-Liveries/navy.xml similarity index 100% rename from flightgear/jeep/Models/Liveries/navy.xml rename to files/flightgear/jeep/Models/AI-Liveries/navy.xml diff --git a/flightgear/jeep/Models/Liveries/raf.xml b/files/flightgear/jeep/Models/AI-Liveries/raf.xml similarity index 100% rename from flightgear/jeep/Models/Liveries/raf.xml rename to files/flightgear/jeep/Models/AI-Liveries/raf.xml diff --git a/flightgear/jeep/Models/AI-Liveries/softroof-a.png b/files/flightgear/jeep/Models/AI-Liveries/softroof-a.png similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/softroof-a.png rename to files/flightgear/jeep/Models/AI-Liveries/softroof-a.png diff --git a/flightgear/jeep/Models/AI-Liveries/softroof.png b/files/flightgear/jeep/Models/AI-Liveries/softroof.png similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/softroof.png rename to files/flightgear/jeep/Models/AI-Liveries/softroof.png diff --git a/flightgear/jeep/Models/GPA.xml b/files/flightgear/jeep/Models/GPA.xml similarity index 100% rename from flightgear/jeep/Models/GPA.xml rename to files/flightgear/jeep/Models/GPA.xml diff --git a/flightgear/jeep/Models/Jeep.xml b/files/flightgear/jeep/Models/Jeep.xml similarity index 100% rename from flightgear/jeep/Models/Jeep.xml rename to files/flightgear/jeep/Models/Jeep.xml diff --git a/flightgear/jeep/Models/Liveries/airborn.xml b/files/flightgear/jeep/Models/Liveries/airborn.xml similarity index 100% rename from flightgear/jeep/Models/Liveries/airborn.xml rename to files/flightgear/jeep/Models/Liveries/airborn.xml diff --git a/flightgear/jeep/Models/Liveries/army-g.xml b/files/flightgear/jeep/Models/Liveries/army-g.xml similarity index 100% rename from flightgear/jeep/Models/Liveries/army-g.xml rename to files/flightgear/jeep/Models/Liveries/army-g.xml diff --git a/flightgear/jeep/Models/Liveries/hippie.xml b/files/flightgear/jeep/Models/Liveries/hippie.xml similarity index 100% rename from flightgear/jeep/Models/Liveries/hippie.xml rename to files/flightgear/jeep/Models/Liveries/hippie.xml diff --git a/flightgear/jeep/Models/Liveries/jeep-1a.png b/files/flightgear/jeep/Models/Liveries/jeep-1a.png similarity index 100% rename from flightgear/jeep/Models/Liveries/jeep-1a.png rename to files/flightgear/jeep/Models/Liveries/jeep-1a.png diff --git a/flightgear/jeep/Models/Liveries/jeep-1b.png b/files/flightgear/jeep/Models/Liveries/jeep-1b.png similarity index 100% rename from flightgear/jeep/Models/Liveries/jeep-1b.png rename to files/flightgear/jeep/Models/Liveries/jeep-1b.png diff --git a/flightgear/jeep/Models/Liveries/jeep-1c.png b/files/flightgear/jeep/Models/Liveries/jeep-1c.png similarity index 100% rename from flightgear/jeep/Models/Liveries/jeep-1c.png rename to files/flightgear/jeep/Models/Liveries/jeep-1c.png diff --git a/flightgear/jeep/Models/Liveries/jeep-1d.png b/files/flightgear/jeep/Models/Liveries/jeep-1d.png similarity index 100% rename from flightgear/jeep/Models/Liveries/jeep-1d.png rename to files/flightgear/jeep/Models/Liveries/jeep-1d.png diff --git a/flightgear/jeep/Models/AI-Liveries/navy.xml b/files/flightgear/jeep/Models/Liveries/navy.xml similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/navy.xml rename to files/flightgear/jeep/Models/Liveries/navy.xml diff --git a/flightgear/jeep/Models/AI-Liveries/raf.xml b/files/flightgear/jeep/Models/Liveries/raf.xml similarity index 100% rename from flightgear/jeep/Models/AI-Liveries/raf.xml rename to files/flightgear/jeep/Models/Liveries/raf.xml diff --git a/flightgear/jeep/Models/Liveries/softroof-a.png b/files/flightgear/jeep/Models/Liveries/softroof-a.png similarity index 100% rename from flightgear/jeep/Models/Liveries/softroof-a.png rename to files/flightgear/jeep/Models/Liveries/softroof-a.png diff --git a/flightgear/jeep/Models/cabin.png b/files/flightgear/jeep/Models/cabin.png similarity index 100% rename from flightgear/jeep/Models/cabin.png rename to files/flightgear/jeep/Models/cabin.png diff --git a/flightgear/jeep/Models/current.ac b/files/flightgear/jeep/Models/current.ac similarity index 100% rename from flightgear/jeep/Models/current.ac rename to files/flightgear/jeep/Models/current.ac diff --git a/flightgear/jeep/Models/current.rgb b/files/flightgear/jeep/Models/current.rgb similarity index 100% rename from flightgear/jeep/Models/current.rgb rename to files/flightgear/jeep/Models/current.rgb diff --git a/flightgear/jeep/Models/current.xml b/files/flightgear/jeep/Models/current.xml similarity index 100% rename from flightgear/jeep/Models/current.xml rename to files/flightgear/jeep/Models/current.xml diff --git a/flightgear/jeep/Models/fuel.ac b/files/flightgear/jeep/Models/fuel.ac similarity index 100% rename from flightgear/jeep/Models/fuel.ac rename to files/flightgear/jeep/Models/fuel.ac diff --git a/flightgear/jeep/Models/fuel.rgb b/files/flightgear/jeep/Models/fuel.rgb similarity index 100% rename from flightgear/jeep/Models/fuel.rgb rename to files/flightgear/jeep/Models/fuel.rgb diff --git a/flightgear/jeep/Models/fuelgauge.xml b/files/flightgear/jeep/Models/fuelgauge.xml similarity index 100% rename from flightgear/jeep/Models/fuelgauge.xml rename to files/flightgear/jeep/Models/fuelgauge.xml diff --git a/flightgear/jeep/Models/gpa.ac b/files/flightgear/jeep/Models/gpa.ac similarity index 100% rename from flightgear/jeep/Models/gpa.ac rename to files/flightgear/jeep/Models/gpa.ac diff --git a/flightgear/jeep/Models/gpatrans.ac b/files/flightgear/jeep/Models/gpatrans.ac similarity index 100% rename from flightgear/jeep/Models/gpatrans.ac rename to files/flightgear/jeep/Models/gpatrans.ac diff --git a/flightgear/jeep/Models/gpatrans.xml b/files/flightgear/jeep/Models/gpatrans.xml similarity index 100% rename from flightgear/jeep/Models/gpatrans.xml rename to files/flightgear/jeep/Models/gpatrans.xml diff --git a/flightgear/jeep/Models/jeep-1.png b/files/flightgear/jeep/Models/jeep-1.png similarity index 100% rename from flightgear/jeep/Models/jeep-1.png rename to files/flightgear/jeep/Models/jeep-1.png diff --git a/flightgear/jeep/Models/jeep-2.png b/files/flightgear/jeep/Models/jeep-2.png similarity index 100% rename from flightgear/jeep/Models/jeep-2.png rename to files/flightgear/jeep/Models/jeep-2.png diff --git a/flightgear/jeep/Models/jeep.ac b/files/flightgear/jeep/Models/jeep.ac similarity index 100% rename from flightgear/jeep/Models/jeep.ac rename to files/flightgear/jeep/Models/jeep.ac diff --git a/flightgear/jeep/Models/pilot-b.ac b/files/flightgear/jeep/Models/pilot-b.ac similarity index 100% rename from flightgear/jeep/Models/pilot-b.ac rename to files/flightgear/jeep/Models/pilot-b.ac diff --git a/flightgear/jeep/Models/pilot.xml b/files/flightgear/jeep/Models/pilot.xml similarity index 100% rename from flightgear/jeep/Models/pilot.xml rename to files/flightgear/jeep/Models/pilot.xml diff --git a/flightgear/jeep/Models/pilot1.rgb b/files/flightgear/jeep/Models/pilot1.rgb similarity index 100% rename from flightgear/jeep/Models/pilot1.rgb rename to files/flightgear/jeep/Models/pilot1.rgb diff --git a/flightgear/jeep/Models/roof.ac b/files/flightgear/jeep/Models/roof.ac similarity index 100% rename from flightgear/jeep/Models/roof.ac rename to files/flightgear/jeep/Models/roof.ac diff --git a/flightgear/jeep/Models/softroof.png b/files/flightgear/jeep/Models/softroof.png similarity index 100% rename from flightgear/jeep/Models/softroof.png rename to files/flightgear/jeep/Models/softroof.png diff --git a/flightgear/jeep/Models/speedometer.ac b/files/flightgear/jeep/Models/speedometer.ac similarity index 100% rename from flightgear/jeep/Models/speedometer.ac rename to files/flightgear/jeep/Models/speedometer.ac diff --git a/flightgear/jeep/Models/speedometer.rgb b/files/flightgear/jeep/Models/speedometer.rgb similarity index 100% rename from flightgear/jeep/Models/speedometer.rgb rename to files/flightgear/jeep/Models/speedometer.rgb diff --git a/flightgear/jeep/Models/speedometer.xml b/files/flightgear/jeep/Models/speedometer.xml similarity index 100% rename from flightgear/jeep/Models/speedometer.xml rename to files/flightgear/jeep/Models/speedometer.xml diff --git a/flightgear/jeep/Models/transparent.ac b/files/flightgear/jeep/Models/transparent.ac similarity index 100% rename from flightgear/jeep/Models/transparent.ac rename to files/flightgear/jeep/Models/transparent.ac diff --git a/flightgear/jeep/Models/transparent.xml b/files/flightgear/jeep/Models/transparent.xml similarity index 100% rename from flightgear/jeep/Models/transparent.xml rename to files/flightgear/jeep/Models/transparent.xml diff --git a/flightgear/jeep/Nasal/failure.nas b/files/flightgear/jeep/Nasal/failure.nas similarity index 100% rename from flightgear/jeep/Nasal/failure.nas rename to files/flightgear/jeep/Nasal/failure.nas diff --git a/flightgear/jeep/Nasal/jeep.nas b/files/flightgear/jeep/Nasal/jeep.nas similarity index 100% rename from flightgear/jeep/Nasal/jeep.nas rename to files/flightgear/jeep/Nasal/jeep.nas diff --git a/flightgear/jeep/Nasal/walk.nas b/files/flightgear/jeep/Nasal/walk.nas similarity index 100% rename from flightgear/jeep/Nasal/walk.nas rename to files/flightgear/jeep/Nasal/walk.nas diff --git a/flightgear/jeep/README b/files/flightgear/jeep/README similarity index 100% rename from flightgear/jeep/README rename to files/flightgear/jeep/README diff --git a/flightgear/jeep/gpa-set.xml b/files/flightgear/jeep/gpa-set.xml similarity index 100% rename from flightgear/jeep/gpa-set.xml rename to files/flightgear/jeep/gpa-set.xml diff --git a/flightgear/jeep/gpa-yasim.xml b/files/flightgear/jeep/gpa-yasim.xml similarity index 100% rename from flightgear/jeep/gpa-yasim.xml rename to files/flightgear/jeep/gpa-yasim.xml diff --git a/flightgear/jeep/jeep-set.xml b/files/flightgear/jeep/jeep-set.xml similarity index 100% rename from flightgear/jeep/jeep-set.xml rename to files/flightgear/jeep/jeep-set.xml diff --git a/flightgear/jeep/jeep-yasim.xml b/files/flightgear/jeep/jeep-yasim.xml similarity index 100% rename from flightgear/jeep/jeep-yasim.xml rename to files/flightgear/jeep/jeep-yasim.xml diff --git a/flightgear/jeep/thumbnail.jpg b/files/flightgear/jeep/thumbnail.jpg similarity index 100% rename from flightgear/jeep/thumbnail.jpg rename to files/flightgear/jeep/thumbnail.jpg diff --git a/files/parameter_tooltips/MAV_AUTOPILOT_PIXHAWK-MAV_TYPE_FIXED_WING.csv b/files/parameter_tooltips/MAV_AUTOPILOT_PIXHAWK-MAV_TYPE_FIXED_WING.csv new file mode 100644 index 0000000..6108736 --- /dev/null +++ b/files/parameter_tooltips/MAV_AUTOPILOT_PIXHAWK-MAV_TYPE_FIXED_WING.csv @@ -0,0 +1,3 @@ +EEPROM,variable name,Min,Max,Default,Multiplier,Enabled (0 = no, 1 = yes),Comment +HDNG2RLL_P, 0, 5, 0.7, 1, 1, NAV_ROLL_P - Navigation control gains. Tuning values for the navigation control PID loops. The P term is the primary tuning value. This determines how the control deflection varies in proportion to the required correction. +SYS_TYPE, 0, 15, 1, 1, 1, System type (airframe) \ No newline at end of file diff --git a/files/parameter_tooltips/MAV_AUTOPILOT_PIXHAWK-MAV_TYPE_QUADROTOR.csv b/files/parameter_tooltips/MAV_AUTOPILOT_PIXHAWK-MAV_TYPE_QUADROTOR.csv new file mode 100644 index 0000000..6108736 --- /dev/null +++ b/files/parameter_tooltips/MAV_AUTOPILOT_PIXHAWK-MAV_TYPE_QUADROTOR.csv @@ -0,0 +1,3 @@ +EEPROM,variable name,Min,Max,Default,Multiplier,Enabled (0 = no, 1 = yes),Comment +HDNG2RLL_P, 0, 5, 0.7, 1, 1, NAV_ROLL_P - Navigation control gains. Tuning values for the navigation control PID loops. The P term is the primary tuning value. This determines how the control deflection varies in proportion to the required correction. +SYS_TYPE, 0, 15, 1, 1, 1, System type (airframe) \ No newline at end of file diff --git a/qgroundcontrol.pri b/qgroundcontrol.pri index c12b324..f79a299 100644 --- a/qgroundcontrol.pri +++ b/qgroundcontrol.pri @@ -89,6 +89,8 @@ macx { # Copy CSS stylesheets QMAKE_POST_LINK += && cp -f $$BASEDIR/images/style-mission.css $$TARGETDIR/qgroundcontrol.app/Contents/MacOS/style-indoor.css QMAKE_POST_LINK += && cp -f $$BASEDIR/images/style-outdoor.css $$TARGETDIR/qgroundcontrol.app/Contents/MacOS + # Copy parameter tooltip files + QMAKE_POST_LINK += && cp -rf $$BASEDIR/files $$TARGETDIR/qgroundcontrol.app/Contents/MacOS # Copy model files #QMAKE_POST_LINK += && cp -f $$BASEDIR/models/*.dae $$TARGETDIR/qgroundcontrol.app/Contents/MacOs diff --git a/src/comm/MAVLinkProtocol.cc b/src/comm/MAVLinkProtocol.cc index a5a3af3..2da2916 100644 --- a/src/comm/MAVLinkProtocol.cc +++ b/src/comm/MAVLinkProtocol.cc @@ -396,7 +396,7 @@ void MAVLinkProtocol::sendHeartbeat() { if (m_heartbeatsEnabled) { mavlink_message_t beat; - mavlink_msg_heartbeat_pack(getSystemId(), getComponentId(),&beat, MAV_TYPE_OCU, MAV_AUTOPILOT_INVALID, MAV_MODE_MANUAL, MAV_FLIGHT_MODE_MANUAL, MAV_STATE_ACTIVE, MAV_SAFETY_ARMED, 0xFF); + mavlink_msg_heartbeat_pack(getSystemId(), getComponentId(),&beat, MAV_TYPE_GCS, MAV_AUTOPILOT_INVALID, MAV_MODE_MANUAL, MAV_FLIGHT_MODE_MANUAL, MAV_STATE_ACTIVE, MAV_SAFETY_ARMED, 0xFF); sendMessage(beat); } if (m_authEnabled) { diff --git a/src/comm/MAVLinkSimulationLink.cc b/src/comm/MAVLinkSimulationLink.cc index 80e2080..7472a61 100644 --- a/src/comm/MAVLinkSimulationLink.cc +++ b/src/comm/MAVLinkSimulationLink.cc @@ -536,10 +536,13 @@ void MAVLinkSimulationLink::mainloop() static int typeCounter = 0; uint8_t mavType; - if (typeCounter < 10) { + if (typeCounter < 10) + { mavType = MAV_TYPE_QUADROTOR; - } else { - mavType = typeCounter % (MAV_TYPE_OCU); + } + else + { + mavType = typeCounter % (MAV_TYPE_GCS); } typeCounter++; diff --git a/src/comm/QGCFlightGearLink.cc b/src/comm/QGCFlightGearLink.cc index 4c498fb..a9f92d1 100644 --- a/src/comm/QGCFlightGearLink.cc +++ b/src/comm/QGCFlightGearLink.cc @@ -379,7 +379,7 @@ processCall << "--disable-ai-models"; processCall << "--wind=0@0"; processCall << "--fdm=jsb"; processCall << "--prop:/engines/engine[0]/running=true"; -if (mav->getType() == MAV_TYPE_QUADROTOR) +if (mav->getSystemType() == MAV_TYPE_QUADROTOR) { // Start the remaining three motors of the quad processCall << "--prop:/engines/engine[1]/running=true"; diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 365c590..03bc659 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -2308,7 +2308,7 @@ QString UAS::getShortModeTextFor(int id) mode = "STABILIZED"; break; case (uint8_t)MAV_MODE_TEST: - mode = "STABILIZED"; + mode = "TEST"; break; default: mode = "UNKNOWN"; diff --git a/src/uas/UAS.h b/src/uas/UAS.h index a917c0a..7cadbf3 100644 --- a/src/uas/UAS.h +++ b/src/uas/UAS.h @@ -81,10 +81,6 @@ public: int getAirframe() const { return airframe; } - - int getType() const { - return type; - } /** @brief The time interval the robot is switched on */ quint64 getUptime() const; /** @brief Get the status flag for the communication */ @@ -242,22 +238,130 @@ public: paramManager = manager; } int getSystemType(); + QString getSystemTypeName() + { + switch(type) + { + case MAV_TYPE_GENERIC: + return "GENERIC"; + break; + case MAV_TYPE_FIXED_WING: + return "FIXED_WING"; + break; + case MAV_TYPE_QUADROTOR: + return "QUADROTOR"; + break; + case MAV_TYPE_COAXIAL: + return "COAXIAL"; + break; + case MAV_TYPE_HELICOPTER: + return "HELICOPTER"; + break; + case MAV_TYPE_ANTENNA_TRACKER: + return "ANTENNA_TRACKER"; + break; + case MAV_TYPE_GCS: + return "GCS"; + break; + case MAV_TYPE_AIRSHIP: + return "AIRSHIP"; + break; + case MAV_TYPE_FREE_BALLOON: + return "FREE_BALLOON"; + break; + case MAV_TYPE_ROCKET: + return "ROCKET"; + break; + case MAV_TYPE_GROUND_ROVER: + return "GROUND_ROVER"; + break; + case MAV_TYPE_SURFACE_BOAT: + return "BOAT"; + break; + case MAV_TYPE_SUBMARINE: + return "SUBMARINE"; + break; + case MAV_TYPE_HEXAROTOR: + return "HEXAROTOR"; + break; + case MAV_TYPE_OCTOROTOR: + return "OCTOROTOR"; + break; + case MAV_TYPE_TRICOPTER: + return "TRICOPTER"; + break; + case MAV_TYPE_FLAPPING_WING: + return "FLAPPING_WING"; + break; + default: + return ""; + break; + } + } + QImage getImage(); void requestImage(); int getAutopilotType() { return autopilot; } + QString getAutopilotTypeName() + { + switch (autopilot) + { + case MAV_AUTOPILOT_GENERIC: + return "GENERIC"; + break; + case MAV_AUTOPILOT_PIXHAWK: + return "PIXHAWK"; + break; + case MAV_AUTOPILOT_SLUGS: + return "SLUGS"; + break; + case MAV_AUTOPILOT_ARDUPILOTMEGA: + return "ARDUPILOTMEGA"; + break; + case MAV_AUTOPILOT_OPENPILOT: + return "OPENPILOT"; + break; + case MAV_AUTOPILOT_GENERIC_MISSION_WAYPOINTS_ONLY: + return "GENERIC_MISSION_WAYPOINTS_ONLY"; + break; + case MAV_AUTOPILOT_GENERIC_MISSION_NAVIGATION_ONLY: + return "GENERIC_MISSION_NAVIGATION_ONLY"; + break; + case MAV_AUTOPILOT_GENERIC_MISSION_FULL: + return "GENERIC_MISSION_FULL"; + break; + case MAV_AUTOPILOT_INVALID: + return "NO AP"; + break; + case MAV_AUTOPILOT_PPZ: + return "PPZ"; + break; + case MAV_AUTOPILOT_UDB: + return "UDB"; + break; + case MAV_AUTOPILOT_FP: + return "FP"; + break; + default: + return ""; + break; + } + } public slots: /** @brief Set the autopilot type */ - void setAutopilotType(int apType) { + void setAutopilotType(int apType) + { autopilot = apType; emit systemSpecsChanged(uasId); } /** @brief Set the type of airframe */ void setSystemType(int systemType); /** @brief Set the specific airframe type */ - void setAirframe(int airframe) { + void setAirframe(int airframe) + { this->airframe = airframe; emit systemSpecsChanged(uasId); } diff --git a/src/uas/UASInterface.h b/src/uas/UASInterface.h index e0bdb10..b787897 100644 --- a/src/uas/UASInterface.h +++ b/src/uas/UASInterface.h @@ -72,7 +72,6 @@ public: virtual quint64 getUptime() const = 0; /** @brief Get the status flag for the communication **/ virtual int getCommunicationStatus() const = 0; - virtual int getType() const = 0; virtual double getLocalX() const = 0; virtual double getLocalY() const = 0; @@ -124,7 +123,9 @@ public: QGC_AIRFRAME_REAPER, QGC_AIRFRAME_PREDATOR, QGC_AIRFRAME_COAXIAL, - QGC_AIRFRAME_PTERYX + QGC_AIRFRAME_PTERYX, + QGC_AIRFRAME_TRICOPTER, + QGC_AIRFRAME_HEXCOPTER }; /** @@ -179,12 +180,14 @@ public: /** @brief Get the type of the system (airplane, quadrotor, helicopter,..)*/ virtual int getSystemType() = 0; + virtual QString getSystemTypeName() = 0; QColor getColor() { return color; } virtual int getAutopilotType() = 0; + virtual QString getAutopilotTypeName() = 0; virtual void setAutopilotType(int apType)= 0; public slots: diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc index a3140c0..33de0df 100644 --- a/src/ui/MainWindow.cc +++ b/src/ui/MainWindow.cc @@ -1628,14 +1628,17 @@ void MainWindow::UASCreated(UASInterface* uas) } // UAS List - if (listDockWidget) { + if (listDockWidget) + { UASListWidget *listWidget = dynamic_cast(listDockWidget->widget()); - if (listWidget) { + if (listWidget) + { listWidget->addUAS(uas); } } - switch (uas->getAutopilotType()) { + switch (uas->getAutopilotType()) + { case (MAV_AUTOPILOT_SLUGS): { // Build Slugs Widgets buildSlugsWidgets(); diff --git a/src/ui/QGCParamWidget.cc b/src/ui/QGCParamWidget.cc index c5883b0..efbe2ae 100644 --- a/src/ui/QGCParamWidget.cc +++ b/src/ui/QGCParamWidget.cc @@ -49,6 +49,9 @@ QGCParamWidget::QGCParamWidget(UASInterface* uas, QWidget *parent) : // Load settings loadSettings(); + // Load default values and tooltips + loadParameterInfoCSV(uas->getAutopilotTypeName(), uas->getSystemTypeName()); + // Create tree widget tree = new QTreeWidget(this); statusLabel = new QLabel(); @@ -143,6 +146,106 @@ void QGCParamWidget::loadSettings() settings.endGroup(); } +void QGCParamWidget::loadParameterInfoCSV(const QString& autopilot, const QString& airframe) +{ + QDir appDir = QDir::current(); + appDir.cd("files/parameter_tooltips"); + QString fileName = QString("MAV_AUTOPILOT_%1-MAV_TYPE_%2.csv").arg(autopilot).arg(airframe); + QString filePath = appDir.filePath(fileName); + QFile paramMetaFile(filePath); + + // Load CSV data + if (!paramMetaFile.open(QIODevice::ReadOnly | QIODevice::Text)) + { + qDebug() << "COULD NOT OPEN PARAM META INFO FILE:" << filePath; + return; + } + + // Extract header + + // Read in values + // Find all keys + QTextStream in(¶mMetaFile); + + // First line is header + QString header = in.readLine(); + + bool charRead = false; + QString separator = ""; + QList sepCandidates; + sepCandidates << '\t'; + sepCandidates << ','; + sepCandidates << ';'; + sepCandidates << ' '; + sepCandidates << '~'; + sepCandidates << '|'; + + // Iterate until separator is found + // or full header is parsed + for (int i = 0; i < header.length(); i++) + { + if (sepCandidates.contains(header.at(i))) + { + // Separator found + if (charRead) + { + separator += header[i]; + } + } + else + { + // Char found + charRead = true; + // If the separator is not empty, this char + // has been read after a separator, so detection + // is now complete + if (separator != "") break; + } + } + + QString out = separator; + out.replace("\t", ""); + qDebug() << " Separator: \"" << out << "\""; + //qDebug() << "READING CSV:" << header; + + + // Read data + while (!in.atEnd()) + { + QString line = in.readLine(); + + // Keep empty parts here - we still have to act on them + QStringList parts = line.split(separator, QString::KeepEmptyParts); + + // Each line is: + // variable name, Min, Max, Default, Multiplier, Enabled (0 = no, 1 = yes), Comment + + + // Fill in min, max and default values + if (parts.count() > 1) + { + // min + paramMin.insert(parts.at(0), parts.at(1).toDouble()); + } + if (parts.count() > 2) + { + // max + paramMax.insert(parts.at(0), parts.at(2).toDouble()); + } + if (parts.count() > 3) + { + // default + paramDefault.insert(parts.at(0), parts.at(3).toDouble()); + } + // IGNORING 4 and 5 for now + if (parts.count() > 6) + { + // tooltip + paramToolTips.insert(parts.at(0), parts.at(6).trimmed()); + } + } +} + /** * @return The MAV of this widget. Unless the MAV object has been destroyed, this * pointer is never zero. @@ -205,13 +308,16 @@ void QGCParamWidget::addParameter(int uas, int component, int paramCount, int pa if (transmissionListMode) { // Only accept the list size once on the first packet from // each component - if (!transmissionListSizeKnown.contains(component)) { + if (!transmissionListSizeKnown.contains(component)) + { // Mark list size as known transmissionListSizeKnown.insert(component, true); // Mark all parameters as missing - for (int i = 0; i < paramCount; ++i) { - if (!transmissionMissingPackets.value(component)->contains(i)) { + for (int i = 0; i < paramCount; ++i) + { + if (!transmissionMissingPackets.value(component)->contains(i)) + { transmissionMissingPackets.value(component)->append(i); } } @@ -220,7 +326,8 @@ void QGCParamWidget::addParameter(int uas, int component, int paramCount, int pa // since components do not manage their transmission, // the longest timeout is safe for all components. quint64 thisTransmissionTimeout = QGC::groundTimeMilliseconds() + ((paramCount/retransmissionBurstRequestSize+5)*retransmissionTimeout); - if (thisTransmissionTimeout > transmissionTimeout) { + if (thisTransmissionTimeout > transmissionTimeout) + { transmissionTimeout = thisTransmissionTimeout; } } @@ -240,47 +347,59 @@ void QGCParamWidget::addParameter(int uas, int component, int paramCount, int pa //bool lastWritten = false; // Mark this parameter as received in write ACK list QMap* map = transmissionMissingWriteAckPackets.value(component); - if (map && map->contains(parameterName)) { + if (map && map->contains(parameterName)) + { justWritten = true; - if (map->value(parameterName) != value) { + if (map->value(parameterName) != value) + { writeMismatch = true; } map->remove(parameterName); } int missCount = 0; - foreach (int key, transmissionMissingPackets.keys()) { + foreach (int key, transmissionMissingPackets.keys()) + { missCount += transmissionMissingPackets.value(key)->count(); } int missWriteCount = 0; - foreach (int key, transmissionMissingWriteAckPackets.keys()) { + foreach (int key, transmissionMissingWriteAckPackets.keys()) + { missWriteCount += transmissionMissingWriteAckPackets.value(key)->count(); } - if (justWritten && !writeMismatch && missWriteCount == 0) { + if (justWritten && !writeMismatch && missWriteCount == 0) + { // Just wrote one and count went to 0 - this was the last missing write parameter statusLabel->setText(tr("SUCCESS: WROTE ALL PARAMETERS")); QPalette pal = statusLabel->palette(); pal.setColor(backgroundRole(), QGC::colorGreen); statusLabel->setPalette(pal); - } else if (justWritten && !writeMismatch) { + } else if (justWritten && !writeMismatch) + { statusLabel->setText(tr("SUCCESS: Wrote %2 (#%1/%4): %3").arg(paramId+1).arg(parameterName).arg(value).arg(paramCount)); QPalette pal = statusLabel->palette(); pal.setColor(backgroundRole(), QGC::colorGreen); statusLabel->setPalette(pal); - } else if (justWritten && writeMismatch) { + } else if (justWritten && writeMismatch) + { // Mismatch, tell user QPalette pal = statusLabel->palette(); pal.setColor(backgroundRole(), QGC::colorRed); statusLabel->setPalette(pal); statusLabel->setText(tr("FAILURE: Wrote %1: sent %2 != onboard %3").arg(parameterName).arg(map->value(parameterName)).arg(value)); - } else { - if (missCount > 0) { + } + else + { + if (missCount > 0) + { QPalette pal = statusLabel->palette(); pal.setColor(backgroundRole(), QGC::colorOrange); statusLabel->setPalette(pal); - } else { + } + else + { QPalette pal = statusLabel->palette(); pal.setColor(backgroundRole(), QGC::colorGreen); statusLabel->setPalette(pal); @@ -289,11 +408,13 @@ void QGCParamWidget::addParameter(int uas, int component, int paramCount, int pa } // Check if last parameter was received - if (missCount == 0 && missWriteCount == 0) { + if (missCount == 0 && missWriteCount == 0) + { this->transmissionActive = false; this->transmissionListMode = false; transmissionListSizeKnown.clear(); - foreach (int key, transmissionMissingPackets.keys()) { + foreach (int key, transmissionMissingPackets.keys()) + { transmissionMissingPackets.value(key)->clear(); } } @@ -311,9 +432,11 @@ void QGCParamWidget::addParameter(int uas, int component, QString parameterName, QTreeWidgetItem* parameterItem = NULL; // Get component - if (!components->contains(component)) { + if (!components->contains(component)) + { QString componentName; - switch (component) { + switch (component) + { case MAV_COMP_ID_CAMERA: componentName = tr("Camera (#%1)").arg(component); break; @@ -337,7 +460,8 @@ void QGCParamWidget::addParameter(int uas, int component, QString parameterName, QString splitToken = "_"; // Check if auto-grouping can work - if (parameterName.contains(splitToken)) { + if (parameterName.contains(splitToken)) + { QString parent = parameterName.section(splitToken, 0, 0, QString::SectionSkipEmpty); QMap* compParamGroups = paramGroups.value(component); if (!compParamGroups->contains(parent)) { @@ -363,7 +487,8 @@ void QGCParamWidget::addParameter(int uas, int component, QString parameterName, } } - if (!found) { + if (!found) + { // Insert parameter into map QStringList plist; plist.append(parameterName); @@ -375,13 +500,17 @@ void QGCParamWidget::addParameter(int uas, int component, QString parameterName, compParamGroups->value(parent)->addChild(parameterItem); parameterItem->setFlags(parameterItem->flags() | Qt::ItemIsEditable); } - } else { + } + else + { bool found = false; QTreeWidgetItem* parent = components->value(component); - for (int i = 0; i < parent->childCount(); i++) { + for (int i = 0; i < parent->childCount(); i++) + { QTreeWidgetItem* child = parent->child(i); QString key = child->data(0, Qt::DisplayRole).toString(); - if (key == parameterName) { + if (key == parameterName) + { //qDebug() << "UPDATED CHILD"; parameterItem = child; parameterItem->setData(1, Qt::DisplayRole, value); @@ -389,7 +518,8 @@ void QGCParamWidget::addParameter(int uas, int component, QString parameterName, } } - if (!found) { + if (!found) + { // Insert parameter into map QStringList plist; plist.append(parameterName); @@ -406,6 +536,10 @@ void QGCParamWidget::addParameter(int uas, int component, QString parameterName, // Reset background color parameterItem->setBackground(0, QBrush(QColor(0, 0, 0))); parameterItem->setBackground(1, Qt::NoBrush); + // Add tooltip + parameterItem->setToolTip(0, paramToolTips.value(parameterName, "")); + parameterItem->setToolTip(1, paramToolTips.value(parameterName, "")); + //tree->update(); if (changedValues.contains(component)) changedValues.value(component)->remove(parameterName); } diff --git a/src/ui/QGCParamWidget.h b/src/ui/QGCParamWidget.h index 68bd77d..eb3b0c0 100644 --- a/src/ui/QGCParamWidget.h +++ b/src/ui/QGCParamWidget.h @@ -93,10 +93,19 @@ protected: QMap* components; ///< The list of components QMap* > paramGroups; ///< Parameter groups + // Tooltip data structures + QMap paramToolTips; ///< Tooltip values + // Min / Default / Max data structures + QMap paramMin; ///< Minimum param values + QMap paramDefault; ///< Default param values + QMap paramMax; ///< Minimum param values + /** @brief Activate / deactivate parameter retransmission */ void setRetransmissionGuardEnabled(bool enabled); /** @brief Load settings */ void loadSettings(); + /** @brief Load meta information from CSV */ + void loadParameterInfoCSV(const QString& autopilot, const QString& airframe); }; #endif // QGCPARAMWIDGET_H diff --git a/src/ui/uas/UASListWidget.cc b/src/ui/uas/UASListWidget.cc index 271c1c4..db00c93 100644 --- a/src/ui/uas/UASListWidget.cc +++ b/src/ui/uas/UASListWidget.cc @@ -75,7 +75,8 @@ UASListWidget::~UASListWidget() void UASListWidget::changeEvent(QEvent *e) { QWidget::changeEvent(e); - switch (e->type()) { + switch (e->type()) + { case QEvent::LanguageChange: m_ui->retranslateUi(this); break; @@ -88,13 +89,15 @@ void UASListWidget::changeEvent(QEvent *e) void UASListWidget::addUAS(UASInterface* uas) { - if (uasViews.isEmpty()) { + if (uasViews.isEmpty()) + { listLayout->removeWidget(uWidget); delete uWidget; uWidget = NULL; } - if (!uasViews.contains(uas)) { + if (!uasViews.contains(uas)) + { uasViews.insert(uas, new UASView(uas, this)); listLayout->addWidget(uasViews.value(uas)); //connect(uas, SIGNAL(destroyed(QObject*)), this, SLOT(removeUAS(QObject*))); diff --git a/src/ui/uas/UASView.cc b/src/ui/uas/UASView.cc index 4bd077f..d9d15c5 100644 --- a/src/ui/uas/UASView.cc +++ b/src/ui/uas/UASView.cc @@ -324,7 +324,7 @@ void UASView::setSystemType(UASInterface* uas, unsigned int systemType) case 6: { // A groundstation is a special system type, update widget QString result; - m_ui->nameLabel->setText(tr("OCU ") + result.sprintf("%03d", uas->getUASID())); + m_ui->nameLabel->setText(tr("GCS ") + result.sprintf("%03d", uas->getUASID())); m_ui->waypointLabel->setText(""); m_ui->timeRemainingLabel->setText("Online:"); m_ui->batteryBar->hide();