diff --git a/files/ardupilotmega/general/calibration/calibration.qgw b/files/ardupilotmega/general/calibration/calibration.qgw
index 20bbfd101370ecae7487c7d9287a9cdb0491fa14..04355429c018edb64ebc898a83e3a1438bf22d13 100644
--- a/files/ardupilotmega/general/calibration/calibration.qgw
+++ b/files/ardupilotmega/general/calibration/calibration.qgw
@@ -11,51 +11,82 @@ QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM4=0
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0
QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0
-QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMMANDBUTTON
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_DESCRIPTION=Magnetometer calibration
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_BUTTONTEXT=MAG
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_COMMANDID=241
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM1=0
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM2=1
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM3=0
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM4=0
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM5=0
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM6=0
-QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM7=0
+
+QGC_TOOL_WIDGET_ITEMS\2\TYPE=TEXT
+QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_SOURCE=NONE
+QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_ID=MAG_LABEL
+QGC_TOOL_WIDGET_ITEMS\2\QGC_TEXT_TEXT=
QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON
-QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration
-QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Magnetometer calibration
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=MAG
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_LABEL=MAG_TEXT
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=0
-QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=1
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0
-QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=1
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=0
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0
QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0
-QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMMANDBUTTON
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_DESCRIPTION=Gyroscope calibration
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_BUTTONTEXT=GYRO
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_COMMANDID=241
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM1=1
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM2=0
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM3=0
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM4=0
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM5=0
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM6=0
-QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM7=0
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_DESCRIPTION=RC Trim calibration
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_BUTTONTEXT=TRIM
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_COMMANDID=241
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM1=1
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM2=0
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM3=0
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM4=1
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM5=0
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM6=0
-QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM7=0
-QGC_TOOL_WIDGET_ITEMS\size=5
+QGC_TOOL_WIDGET_ITEMS\4\TYPE=TEXT
+QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_SOURCE=MAV
+QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_ID=MAG_TEXT
+QGC_TOOL_WIDGET_ITEMS\4\QGC_TEXT_TEXT=
+
+QGC_TOOL_WIDGET_ITEMS\5\TYPE=TEXT
+QGC_TOOL_WIDGET_ITEMS\5\QGC_TEXT_SOURCE=NONE
+QGC_TOOL_WIDGET_ITEMS\5\QGC_TEXT_ID=ACCEL_LABEL
+QGC_TOOL_WIDGET_ITEMS\5\QGC_TEXT_TEXT=
+QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMMANDBUTTON
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_COMMANDID=241
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_LABEL=ACCEL_TEXT
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM1=0
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM2=0
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM3=0
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM4=0
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM5=1
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM6=0
+QGC_TOOL_WIDGET_ITEMS\6\QGC_COMMAND_BUTTON_PARAM7=0
+QGC_TOOL_WIDGET_ITEMS\7\TYPE=TEXT
+QGC_TOOL_WIDGET_ITEMS\7\QGC_TEXT_SOURCE=MAV
+QGC_TOOL_WIDGET_ITEMS\7\QGC_TEXT_ID=ACCEL_TEXT
+QGC_TOOL_WIDGET_ITEMS\7\QGC_TEXT_TEXT=
+
+QGC_TOOL_WIDGET_ITEMS\8\TYPE=TEXT
+QGC_TOOL_WIDGET_ITEMS\8\QGC_TEXT_SOURCE=NONE
+QGC_TOOL_WIDGET_ITEMS\8\QGC_TEXT_ID=GYRO_LABEL
+QGC_TOOL_WIDGET_ITEMS\8\QGC_TEXT_TEXT=
+QGC_TOOL_WIDGET_ITEMS\9\TYPE=COMMANDBUTTON
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_DESCRIPTION=Gyroscope calibration
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_BUTTONTEXT=GYRO
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_COMMANDID=241
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_LABEL=GYRO_TEXT
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM1=1
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM2=0
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM3=0
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM4=0
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM5=0
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM6=0
+QGC_TOOL_WIDGET_ITEMS\9\QGC_COMMAND_BUTTON_PARAM7=0
+QGC_TOOL_WIDGET_ITEMS\10\TYPE=TEXT
+QGC_TOOL_WIDGET_ITEMS\10\QGC_TEXT_SOURCE=MAV
+QGC_TOOL_WIDGET_ITEMS\10\QGC_TEXT_ID=GYRO_TEXT
+QGC_TOOL_WIDGET_ITEMS\10\QGC_TEXT_TEXT=
+
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_DESCRIPTION=RC Trim calibration
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_BUTTONTEXT=TRIM
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_COMMANDID=241
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM1=1
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM2=0
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM3=0
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM4=1
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM5=0
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM6=0
+QGC_TOOL_WIDGET_ITEMS\11\QGC_COMMAND_BUTTON_PARAM7=0
+QGC_TOOL_WIDGET_ITEMS\size=11
diff --git a/files/ardupilotmega/general/calibration/description.txt b/files/ardupilotmega/general/calibration/description.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a765ab72db8c337d25796a1ad300c8bfbf7911e1
--- /dev/null
+++ b/files/ardupilotmega/general/calibration/description.txt
@@ -0,0 +1,19 @@
+
+
+Sensor Calibration
+
+The APM sensors can be calibrated with the buttons on the right. Gyroscope (GYRO) and Magnometer (MAG) calibrations have to be performed with a static, unmoved system. The Accelerometer (ACCEL) calibrations involve rotating the vehicle around. Please ensure all props are removed and motor power is off.
+
+Magnetometer Calibration
+
+Ensure the vehicle is clear of any metal, magnetic, or ferrus materials, and sitting on a flat surface. Click the MAG button and wait for the calibration to complete.
+
+Accelerometer Calibration
+
+Ensure the vehicle is on a absolutely level surface and click ACCEL. Follow the instructions that will show up below the button. This calibration procedure will require moving the vehicle at 90 degree angles (upright, left, right, front, back, and upside down), then clicking the button to save that position.
+
+Gyroscope Calibration
+
+Place the vehicle on an absolutely flat surface, and click the GYRO button. wait for the system to calibrate.
+
+
\ No newline at end of file
diff --git a/files/ardupilotmega/general/widgets/battery_monitoring.qgw b/files/ardupilotmega/general/widgets/Battery_Monitor/battery_monitoring.qgw
similarity index 98%
rename from files/ardupilotmega/general/widgets/battery_monitoring.qgw
rename to files/ardupilotmega/general/widgets/Battery_Monitor/battery_monitoring.qgw
index 6feea4444647d11d19aa79bc1052c479d9ebc19d..dd5e52dc58e40c406943c668775a7cebedf5a885 100644
--- a/files/ardupilotmega/general/widgets/battery_monitoring.qgw
+++ b/files/ardupilotmega/general/widgets/Battery_Monitor/battery_monitoring.qgw
@@ -42,7 +42,7 @@ QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_11_TEXT=A11
QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_11_VAL=11
QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_12_TEXT=A12
QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_12_VAL=12
-QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_13_TEXT=A3
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_13_TEXT=A13
QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_13_VAL=13
QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMBO
diff --git a/files/ardupilotmega/general/widgets/Failsafe/failsafes.qgw b/files/ardupilotmega/general/widgets/Failsafe/failsafes.qgw
new file mode 100644
index 0000000000000000000000000000000000000000..392d1a5d6723533ab44743e9f6be347e1a2919f8
--- /dev/null
+++ b/files/ardupilotmega/general/widgets/Failsafe/failsafes.qgw
@@ -0,0 +1,43 @@
+[Failsafe%20Configuration]
+QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Failsafe Action
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=FS_ACTION
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=3
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=RTL
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Hold
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_DESCRIPTION=GCS failsafe enable
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_PARAMID=FS_GCS_ENABLE
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COUNT=2
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Failsafe timeout (In Seconds)
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=FS_TIMEOUT
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100
+QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Throttle Failsafe Enable
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=FS_THR_ENABLE
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=2
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=Throttle Failsafe Value (PWM)
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=FS_THR_VALUE
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=1000
+QGC_TOOL_WIDGET_ITEMS\size=5
diff --git a/files/ardupilotmega/general/widgets/extra_sensors.qgw b/files/ardupilotmega/general/widgets/Hardware_Options/extra_sensors.qgw
similarity index 100%
rename from files/ardupilotmega/general/widgets/extra_sensors.qgw
rename to files/ardupilotmega/general/widgets/Hardware_Options/extra_sensors.qgw
diff --git a/files/ardupilotmega/general/widgets/general.qgw b/files/ardupilotmega/general/widgets/general.qgw
index 50f04cd3c6eaab9d729b179e834b31e31d49a46c..d0fcc6e5ecdd01db785846cf082112054fdc0bef 100644
--- a/files/ardupilotmega/general/widgets/general.qgw
+++ b/files/ardupilotmega/general/widgets/general.qgw
@@ -1,85 +1,105 @@
-[Extra%20Sensors]
+[General]
QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO
-QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Compass Enable
-QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=MAG_ENABLE
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Channel 7 Option
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=CH7_OPTION
QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1
QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=2
-QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Nothing
QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
-QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Learn Waypoint
QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
-QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMBO
-QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_DESCRIPTION=Auto Declination
-QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_PARAMID=COMPASS_AUTODEC
-QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COMPONENTID=1
-QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COUNT=2
-QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
-QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
-QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled
-QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
-
-QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Channel 7 Option
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=CH7_OPTION
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=2
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Nothing
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Learn Waypoint
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Target cruise speed in auto modes
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=CRUISE_SPEED
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=100
QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER
-QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Compass Declination
-QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=COMPASS_DEC
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Base throttle percentage in auto
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=CRUISE_THROTTLE
QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=1
QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0
QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=100
QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Sonar Enable
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=SONAR_ENABLE
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Receiver RSSI sensing pin
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=RSSI_PIN
QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=2
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=14
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=A0
QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
-QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=A1
QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=A2
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=A3
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=A4
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=A5
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_5_VAL=5
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=A6
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=A7
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=A8
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=A9
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=A10
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_10_VAL=10
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_11_TEXT=A11
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_11_VAL=11
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_12_TEXT=A12
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_12_VAL=12
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_13_TEXT=A13
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_13_VAL=13
+
QGC_TOOL_WIDGET_ITEMS\5\TYPE=COMBO
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_DESCRIPTION=Sonar Type
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_PARAMID=SONAR_TYPE
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_DESCRIPTION=USB Console Baud Rate
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_PARAMID=SERIAL0_BAUD
QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COMPONENTID=1
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COUNT=4
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=XL-EZ0
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=LV-EZ0
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=XL-EZL0
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=HRLV
-QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COUNT=9
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=1200
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=2400
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_VAL=2
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=4800
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_VAL=4
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=9600
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_VAL=9
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=19200
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_VAL=19
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=38400
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_5_VAL=38
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=57600
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_6_VAL=57
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=111100
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_7_VAL=111
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=115200
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_8_VAL=115
+
QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMBO
-QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_DESCRIPTION=Air speed Enable
-QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_PARAMID=ARSPD_ENABLE
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_DESCRIPTION=Telemetry Baud Rate
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_PARAMID=SERIAL3_BAUD
QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COMPONENTID=1
-QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COUNT=2
-QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
-QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
-QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled
-QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
-QGC_TOOL_WIDGET_ITEMS\7\TYPE=COMBO
-QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_DESCRIPTION=Air speed use
-QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_PARAMID=AIRSPD_USE
-QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COMPONENTID=1
-QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COUNT=2
-QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Do Not Use
-QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
-QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Use
-QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
-QGC_TOOL_WIDGET_ITEMS\8\TYPE=COMBO
-QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_DESCRIPTION=Optical Flow Enable
-QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_PARAMID=FLOW_ENABLE
-QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_COMPONENTID=1
-QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_COUNT=2
-QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
-QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
-QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled
-QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
-QGC_TOOL_WIDGET_ITEMS\size=8
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COUNT=9
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=1200
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=2400
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_VAL=2
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=4800
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_VAL=4
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=9600
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_VAL=9
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=19200
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_VAL=19
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=38400
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_5_VAL=38
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=57600
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_6_VAL=57
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=111100
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_7_VAL=111
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=115200
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_8_VAL=115
+
+QGC_TOOL_WIDGET_ITEMS\size=6
diff --git a/files/ardupilotmega/ground_rover/widgets/rover.qgw b/files/ardupilotmega/ground_rover/widgets/rover.qgw
index 9f5d8ee80433886317d8c7b4b8a017c516ec1c56..8e8c10c6ff52366cd786572c1b88240561331bce 100644
--- a/files/ardupilotmega/ground_rover/widgets/rover.qgw
+++ b/files/ardupilotmega/ground_rover/widgets/rover.qgw
@@ -29,4 +29,25 @@ QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=ROV_SONAR_TRIG
QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=1
QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=0
QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=100
-QGC_TOOL_WIDGET_ITEMS\size=5
+
+
+QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_DESCRIPTION=Skid Steering Input
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_PARAMID=SKID_STEER_IN
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COUNT=2
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\7\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_DESCRIPTION=Skid Steering Output
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_PARAMID=SKID_STEER_OUT
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COUNT=2
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Disabled
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Enabled
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+
+QGC_TOOL_WIDGET_ITEMS\size=6
\ No newline at end of file
diff --git a/files/ardupilotmega/quadrotor/calibration/calibration.qgw b/files/ardupilotmega/quadrotor/calibration/calibration.qgw
new file mode 100644
index 0000000000000000000000000000000000000000..d8e24e661ce667f8148ae2f0928ab527ae4dfdcd
--- /dev/null
+++ b/files/ardupilotmega/quadrotor/calibration/calibration.qgw
@@ -0,0 +1,17 @@
+[QuadCoptor%20Frame Setup]
+QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Quadcoptor Frame Type
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=FRAME
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=3
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Plus
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_IMG=files/images/mavs/frames_plus.png
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=X
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_IMG=files/images/mavs/frames_x.png
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=V
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_IMG=files/images/mavs/frames-05.png
+QGC_TOOL_WIDGET_ITEMS\size=1
+
\ No newline at end of file
diff --git a/files/ardupilotmega/quadrotor/widgets/Flight_Modes/driving_modes.qgw b/files/ardupilotmega/quadrotor/widgets/Flight_Modes/driving_modes.qgw
new file mode 100644
index 0000000000000000000000000000000000000000..194a8b7b6e4f5374f79abea338ce3b979f61a140
--- /dev/null
+++ b/files/ardupilotmega/quadrotor/widgets/Flight_Modes/driving_modes.qgw
@@ -0,0 +1,193 @@
+[Flight%20Modes]
+QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode Channel
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE_CH
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=12
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=RC 1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=RC 2
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=2
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=RC 3
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=3
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=RC 4
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_3_VAL=4
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=RC 5
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_4_VAL=5
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=RC 6
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RC 7
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_6_VAL=7
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=RC 8
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_7_VAL=8
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=RC 9
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_8_VAL=9
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=RC 10
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_9_VAL=10
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=RC 11
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_11_TEXT=RC 12
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_11_VAL=12
+QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 1 (PWM 0-1230)
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE1
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_COUNT=11
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11
+QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 2 (PWM 1231-1360)
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE2
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_COUNT=11
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_COMBOBOX_ITEM_10_VAL=1
+1QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 3 (PWM 1361-1490)
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE3
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_COUNT=11
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11
+QGC_TOOL_WIDGET_ITEMS\5\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 4 (PWM 1491-1620)
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE4
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_COUNT=11
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11
+QGC_TOOL_WIDGET_ITEMS\6\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 5 (PWM 1621-1749)
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE5
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_COUNT=11
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11
+QGC_TOOL_WIDGET_ITEMS\7\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_DESCRIPTION=Mode 6 (PWM 1750+)
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_PARAMID=FLTMODE6
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_COUNT=11
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Stablilize
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=Acro
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=Alt Hold
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_3_TEXT=Auto
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_3_VAL=3
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_4_TEXT=Guided
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_4_VAL=4
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_5_TEXT=Loiter
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_5_VAL=6
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_6_TEXT=RTL
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_6_VAL=6
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_7_TEXT=Circle
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_7_VAL=7
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_8_TEXT=Pos Hold
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_8_VAL=8
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_9_TEXT=Land
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_9_VAL=9
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_10_TEXT=Toy
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_COMBOBOX_ITEM_10_VAL=11
+QGC_TOOL_WIDGET_ITEMS\size=7
diff --git a/files/ardupilotmega/quadrotor/widgets/airframe_config.qgw b/files/ardupilotmega/quadrotor/widgets/airframe_config.qgw
new file mode 100644
index 0000000000000000000000000000000000000000..336d2532c81eb0125ad8b0648ed707444e4f56a0
--- /dev/null
+++ b/files/ardupilotmega/quadrotor/widgets/airframe_config.qgw
@@ -0,0 +1,13 @@
+[Airframe%20Config]
+QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMBO
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_DESCRIPTION=Quadcoptor Configuration
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_PARAMID=FRAME
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COMPONENTID=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_COUNT=3
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_TEXT=Plus
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_0_VAL=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_TEXT=X
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_1_VAL=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_TEXT=V
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_COMBOBOX_ITEM_2_VAL=2
+QGC_TOOL_WIDGET_ITEMS\size=1
diff --git a/files/images/mavs/frames-05.png b/files/images/mavs/frames-05.png
new file mode 100644
index 0000000000000000000000000000000000000000..39ef8ec4e8ea30b910fa4536cbc1b4050ba6e4d4
Binary files /dev/null and b/files/images/mavs/frames-05.png differ
diff --git a/files/images/mavs/frames_plus.png b/files/images/mavs/frames_plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..614770ebb13fd06ea6137dbefc5059f17a4cffe9
Binary files /dev/null and b/files/images/mavs/frames_plus.png differ
diff --git a/files/images/mavs/frames_x.png b/files/images/mavs/frames_x.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d13983b4be288a8f0581992e3d514ad761e4057
Binary files /dev/null and b/files/images/mavs/frames_x.png differ
diff --git a/files/px4/general/calibration/description.txt b/files/px4/general/calibration/description.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c243d4ef8aa7e07b93b0f77256986e98eb98f299
--- /dev/null
+++ b/files/px4/general/calibration/description.txt
@@ -0,0 +1,19 @@
+
+
+Sensor Calibration
+
+The PX4FMU sensors can be calibrated with the buttons on the right. Gyroscope (GYRO) and Accelerometer (ACCEL) calibrations have to be performed with a static, unmoved system. The magnetometer calibration needs to be performed while moving the device.
+
+Magnetometer Calibration
+
+Carefully follow the instructions. Click on MAG to start the calibration. Watch the communication console for further instructions (Available through Main Menu -> Tool Widgets -> Communication Console). Do not calibrate the vehicle in vincinity of metal, e.g. from a table or chair. Start the calibration, leave the system unmoved on the table. Wait for the double beep. Next move the system in a figure eight, roll and pitch it strongly, rotate around all axes and perform the figure eight also upside-down. The calibration is finished after the triple beep.
+
+Accelerometer Calibration
+
+Put the system on an absolutely level surface and press ACCEL, wait for the the triple beep. Do not move the system. If no flat surface is available, rather not calibrate the system.
+
+Gyroscope Calibration
+
+The orientation is not important for this calibration, but do not move the system until the triple beep or the matching text message in the console.
\ No newline at end of file
diff --git a/files/px4/widgets/px4_calibration.qgw b/files/px4/widgets/px4_calibration.qgw
new file mode 100644
index 0000000000000000000000000000000000000000..2a498a3ebfdd93c12a8a8e89738eb3cf75496281
--- /dev/null
+++ b/files/px4/widgets/px4_calibration.qgw
@@ -0,0 +1,61 @@
+[PX4%20Calibration%20Tool]
+QGC_TOOL_WIDGET_ITEMS\1\TYPE=COMMANDBUTTON
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_DESCRIPTION=Reboot (only in standby)
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_BUTTONTEXT=REBOOT
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_COMMANDID=246
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM1=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM2=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM3=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM4=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM5=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM6=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_COMMAND_BUTTON_PARAM7=0
+QGC_TOOL_WIDGET_ITEMS\2\TYPE=COMMANDBUTTON
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_DESCRIPTION=Magnetometer calibration
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_BUTTONTEXT=MAG
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_COMMANDID=241
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM1=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM2=1
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM3=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM4=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM5=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM6=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_COMMAND_BUTTON_PARAM7=0
+QGC_TOOL_WIDGET_ITEMS\3\TYPE=COMMANDBUTTON
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_DESCRIPTION=Accelerometer calibration
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_BUTTONTEXT=ACCEL
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_COMMANDID=241
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM1=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM2=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM3=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM4=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM5=1
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM6=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_COMMAND_BUTTON_PARAM7=0
+QGC_TOOL_WIDGET_ITEMS\4\TYPE=COMMANDBUTTON
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_DESCRIPTION=Gyroscope calibration
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_BUTTONTEXT=GYRO
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_COMMANDID=241
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM1=1
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM2=0
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM3=0
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM4=0
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM5=0
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM6=0
+QGC_TOOL_WIDGET_ITEMS\4\QGC_COMMAND_BUTTON_PARAM7=0
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_DESCRIPTION=RC Trim calibration
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_BUTTONTEXT=TRIM
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_COMMANDID=241
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAMS_VISIBLE=false
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM1=1
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM2=0
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM3=0
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM4=1
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM5=0
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM6=0
+QGC_TOOL_WIDGET_ITEMS\5\QGC_COMMAND_BUTTON_PARAM7=0
+QGC_TOOL_WIDGET_ITEMS\size=5
diff --git a/files/px4/widgets/px4_fw_attitude_pid_params.qgw b/files/px4/widgets/px4_fw_attitude_pid_params.qgw
new file mode 100644
index 0000000000000000000000000000000000000000..6f3186e78f3544c718ee98a9d5f02d205f3fc85b
--- /dev/null
+++ b/files/px4/widgets/px4_fw_attitude_pid_params.qgw
@@ -0,0 +1,8 @@
+[PX4%20Fixed%20Wing%20Attitude%20Control]
+QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Roll Rate P Gain
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=FW_ROLLRATE_P
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=2
+QGC_TOOL_WIDGET_ITEMS\size=1
diff --git a/files/px4/widgets/px4_fw_position_pid_params.qgw b/files/px4/widgets/px4_fw_position_pid_params.qgw
new file mode 100644
index 0000000000000000000000000000000000000000..e99f9890e9beb6984c4932c9a2be46cad04bb521
--- /dev/null
+++ b/files/px4/widgets/px4_fw_position_pid_params.qgw
@@ -0,0 +1,8 @@
+[PX4%20Fixed%20Wing%20Position%20Control]
+QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Heading P Gain
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=FW_HEADING_P
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=2
+QGC_TOOL_WIDGET_ITEMS\size=1
diff --git a/files/px4/widgets/px4_mc_attitude_pid_params.qgw b/files/px4/widgets/px4_mc_attitude_pid_params.qgw
new file mode 100644
index 0000000000000000000000000000000000000000..1931dfa3b912adac6f5185a7bfee217e3dee332a
--- /dev/null
+++ b/files/px4/widgets/px4_mc_attitude_pid_params.qgw
@@ -0,0 +1,72 @@
+[PX4%20Multirotor%20Attitude%20Control]
+QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Attitude P Gain
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=MC_ATT_P
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=1.5
+QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Attitude I Gain
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=MC_ATT_I
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Attitude D Gain
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=MC_ATT_D
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=Attitude Anti-Windup
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=MC_ATT_AWU
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=Attitude Output Limit
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=MC_ATT_LIM
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=3
+QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=Heading / Yaw P Gain
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=MC_YAWPOS_P
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=1.2
+QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=Heading / Yaw D Gain
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID=MC_YAWPOS_D
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\8\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DESCRIPTION=Roll / Pitch Rate P Gain
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_PARAMID=MC_ATTRATE_P
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MAX=1.5
+QGC_TOOL_WIDGET_ITEMS\9\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DESCRIPTION=Roll / Pitch Rate D Gain
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_PARAMID=MC_ATTRATE_D
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MAX=0.3
+QGC_TOOL_WIDGET_ITEMS\10\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DESCRIPTION=Yaw Rate P Gain
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_PARAMID=MC_YAWRATE_P
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DISPLAY_INFO=false
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\size=10
diff --git a/files/px4/widgets/px4_mc_position_pid_params.qgw b/files/px4/widgets/px4_mc_position_pid_params.qgw
new file mode 100644
index 0000000000000000000000000000000000000000..1931dfa3b912adac6f5185a7bfee217e3dee332a
--- /dev/null
+++ b/files/px4/widgets/px4_mc_position_pid_params.qgw
@@ -0,0 +1,72 @@
+[PX4%20Multirotor%20Attitude%20Control]
+QGC_TOOL_WIDGET_ITEMS\1\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DESCRIPTION=Attitude P Gain
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_PARAMID=MC_ATT_P
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_MAX=1.5
+QGC_TOOL_WIDGET_ITEMS\2\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DESCRIPTION=Attitude I Gain
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_PARAMID=MC_ATT_I
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\3\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DESCRIPTION=Attitude D Gain
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_PARAMID=MC_ATT_D
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\4\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DESCRIPTION=Attitude Anti-Windup
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_PARAMID=MC_ATT_AWU
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\5\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DESCRIPTION=Attitude Output Limit
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_PARAMID=MC_ATT_LIM
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_MAX=3
+QGC_TOOL_WIDGET_ITEMS\6\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DESCRIPTION=Heading / Yaw P Gain
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_PARAMID=MC_YAWPOS_P
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_MAX=1.2
+QGC_TOOL_WIDGET_ITEMS\7\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DESCRIPTION=Heading / Yaw D Gain
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_PARAMID=MC_YAWPOS_D
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\8\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DESCRIPTION=Roll / Pitch Rate P Gain
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_PARAMID=MC_ATTRATE_P
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_MAX=1.5
+QGC_TOOL_WIDGET_ITEMS\9\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DESCRIPTION=Roll / Pitch Rate D Gain
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_PARAMID=MC_ATTRATE_D
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_MAX=0.3
+QGC_TOOL_WIDGET_ITEMS\10\TYPE=SLIDER
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DESCRIPTION=Yaw Rate P Gain
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_PARAMID=MC_YAWRATE_P
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_COMPONENTID=50
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MIN=0
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_MAX=1
+QGC_TOOL_WIDGET_ITEMS\1\QGC_PARAM_SLIDER_DISPLAY_INFO=false
+QGC_TOOL_WIDGET_ITEMS\2\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\3\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\4\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\5\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\6\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\7\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\8\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\9\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\10\QGC_PARAM_SLIDER_DISPLAY_INFO=true
+QGC_TOOL_WIDGET_ITEMS\size=10
diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro
index dac4449cdde77c011e25ebe41585e425f4a3f7fc..7abbce9eeb585ad003db2dfeadf6b905cc1e5e71 100644
--- a/qgroundcontrol.pro
+++ b/qgroundcontrol.pro
@@ -228,7 +228,8 @@ FORMS += src/ui/MainWindow.ui \
src/ui/QGCHilFlightGearConfiguration.ui \
src/ui/QGCHilJSBSimConfiguration.ui \
src/ui/QGCHilXPlaneConfiguration.ui \
- src/ui/designer/QGCComboBox.ui
+ src/ui/designer/QGCComboBox.ui \
+ src/ui/designer/QGCTextLabel.ui
INCLUDEPATH += src \
src/ui \
src/ui/linechart \
@@ -372,7 +373,8 @@ HEADERS += src/MG.h \
src/ui/QGCHilFlightGearConfiguration.h \
src/ui/QGCHilJSBSimConfiguration.h \
src/ui/QGCHilXPlaneConfiguration.h \
- src/ui/designer/QGCComboBox.h
+ src/ui/designer/QGCComboBox.h \
+ src/ui/designer/QGCTextLabel.h
# Google Earth is only supported on Mac OS and Windows with Visual Studio Compiler
macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010::HEADERS += src/ui/map3D/QGCGoogleEarthView.h
@@ -535,7 +537,8 @@ SOURCES += src/main.cc \
src/ui/QGCHilFlightGearConfiguration.cc \
src/ui/QGCHilJSBSimConfiguration.cc \
src/ui/QGCHilXPlaneConfiguration.cc \
- src/ui/designer/QGCComboBox.cc
+ src/ui/designer/QGCComboBox.cc \
+ src/ui/designer/QGCTextLabel.cc
# Enable Google Earth only on Mac OS and Windows with Visual Studio compiler
macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010::SOURCES += src/ui/map3D/QGCGoogleEarthView.cc
@@ -669,4 +672,3 @@ win32-msvc2008|win32-msvc2010 {
}
unix:!macx:!symbian: LIBS += -losg
->>>>>>> New ComboBox param configuration UI element, and qgw widgets for general
diff --git a/src/ui/QGCVehicleConfig.cc b/src/ui/QGCVehicleConfig.cc
index 507961598061e6ae435be97aaa4324e0b0c19089..1bcbf5ddc443d2c7d89d2d1bcdbcfb5ecb376ebd 100644
--- a/src/ui/QGCVehicleConfig.cc
+++ b/src/ui/QGCVehicleConfig.cc
@@ -156,7 +156,8 @@ void QGCVehicleConfig::stopCalibrationRC()
ui->rcTypeComboBox->setEnabled(true);
ui->rcCalibrationButton->setText(tr("Start RC Calibration"));
}
-void QGCVehicleConfig::loadQgcConfig()
+
+void QGCVehicleConfig::loadQgcConfig(bool primary)
{
QDir autopilotdir(qApp->applicationDirPath() + "/files/" + mav->getAutopilotTypeName().toLower());
QDir generaldir = QDir(autopilotdir.absolutePath() + "/general/widgets");
@@ -185,15 +186,18 @@ void QGCVehicleConfig::loadQgcConfig()
box->setTitle(tool->objectName());
box->setLayout(new QVBoxLayout());
box->layout()->addWidget(tool);
- if (left)
- {
- left = false;
- ui->leftGeneralLayout->addWidget(box);
- }
- else
+ if (!primary)
{
- left = true;
- ui->rightGeneralLayout->addWidget(box);
+ if (left)
+ {
+ left = false;
+ ui->leftGeneralLayout->addWidget(box);
+ }
+ else
+ {
+ left = true;
+ ui->rightGeneralLayout->addWidget(box);
+ }
}
} else {
delete tool;
@@ -213,15 +217,18 @@ void QGCVehicleConfig::loadQgcConfig()
box->setTitle(tool->objectName());
box->setLayout(new QVBoxLayout());
box->layout()->addWidget(tool);
- if (left)
- {
- left = false;
- ui->leftAdvancedLayout->addWidget(box);
- }
- else
+ if (!primary)
{
- left = true;
- ui->rightAdvancedLayout->addWidget(box);
+ if (left)
+ {
+ left = false;
+ ui->leftAdvancedLayout->addWidget(box);
+ }
+ else
+ {
+ left = true;
+ ui->rightAdvancedLayout->addWidget(box);
+ }
}
} else {
@@ -230,18 +237,112 @@ void QGCVehicleConfig::loadQgcConfig()
}
}
+ //Load tabs for general configuration
+ foreach (QString dir,generaldir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
+ {
+ QWidget *tab = new QWidget(ui->tabWidget);
+ tab->setLayout(new QVBoxLayout());
+ ui->tabWidget->insertTab(2,tab,dir);
+ tab->show();
+ QGroupBox *gbox = new QGroupBox(tab);
+ tab->layout()->addWidget(gbox);
+ gbox->show();
+ gbox->setLayout(new QVBoxLayout());
+ QDir newdir = QDir(generaldir.absoluteFilePath(dir));
+ foreach (QString file,newdir.entryList(QDir::Files| QDir::NoDotAndDotDot))
+ {
+ if (file.toLower().endsWith(".qgw")) {
+ tool = new QGCToolWidget("", this);
+ if (tool->loadSettings(newdir.absoluteFilePath(file), false))
+ {
+ toolWidgets.append(tool);
+ //ui->sensorLayout->addWidget(tool);
+ QGroupBox *box = new QGroupBox(this);
+ box->setTitle(tool->objectName());
+ box->setLayout(new QVBoxLayout());
+ box->layout()->addWidget(tool);
+ gbox->layout()->addWidget(box);
+ } else {
+ delete tool;
+ }
+ }
+ }
+ }
+
+ //Load tabs for vehicle specific configuration
+ foreach (QString dir,vehicledir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
+ {
+ QWidget *tab = new QWidget(ui->tabWidget);
+ tab->setLayout(new QVBoxLayout());
+ ui->tabWidget->insertTab(2,tab,dir);
+ tab->show();
+ QGroupBox *gbox = new QGroupBox(tab);
+ tab->layout()->addWidget(gbox);
+ gbox->show();
+ gbox->setLayout(new QVBoxLayout());
+ QDir newdir = QDir(vehicledir.absoluteFilePath(dir));
+ foreach (QString file,newdir.entryList(QDir::Files| QDir::NoDotAndDotDot))
+ {
+ if (file.toLower().endsWith(".qgw")) {
+ tool = new QGCToolWidget("", this);
+ tool->addUAS(mav);
+ if (tool->loadSettings(newdir.absoluteFilePath(file), false))
+ {
+ toolWidgets.append(tool);
+ //ui->sensorLayout->addWidget(tool);
+ QGroupBox *box = new QGroupBox(this);
+ box->setTitle(tool->objectName());
+ box->setLayout(new QVBoxLayout());
+ box->layout()->addWidget(tool);
+ gbox->layout()->addWidget(box);
+ } else {
+ delete tool;
+ }
+ }
+ }
+ }
// Load calibration
//TODO: Handle this more gracefully, maybe have it scan the directory for multiple calibration entries?
tool = new QGCToolWidget("", this);
+ tool->addUAS(mav);
if (tool->loadSettings(autopilotdir.absolutePath() + "/general/calibration/calibration.qgw", false))
{
toolWidgets.append(tool);
- ui->sensorLayout->addWidget(tool);
+ QGroupBox *box = new QGroupBox(this);
+ box->setTitle(tool->objectName());
+ box->setLayout(new QVBoxLayout());
+ box->layout()->addWidget(tool);
+ ui->sensorLayout->addWidget(box);
+ } else {
+ delete tool;
+ }
+
+
+ tool = new QGCToolWidget("", this);
+ tool->addUAS(mav);
+ if (tool->loadSettings(autopilotdir.absolutePath() + "/" + mav->getSystemTypeName().toLower() + "/calibration/calibration.qgw", false))
+ {
+ toolWidgets.append(tool);
+ QGroupBox *box = new QGroupBox(this);
+ box->setTitle(tool->objectName());
+ box->setLayout(new QVBoxLayout());
+ box->layout()->addWidget(tool);
+ ui->sensorLayout->addWidget(box);
} else {
delete tool;
}
+ //description.txt
+ QFile sensortipsfile(autopilotdir.absolutePath() + "/general/calibration/description.txt");
+ sensortipsfile.open(QIODevice::ReadOnly);
+ ui->sensorTips->setHtml(sensortipsfile.readAll());
+ sensortipsfile.close();
+
+
+
+
+
}
void QGCVehicleConfig::loadConfig()
@@ -267,10 +368,11 @@ void QGCVehicleConfig::loadConfig()
QFile xmlfile(autopilotdir.absolutePath() + "/arduplane.pdef.xml");
if (xmlfile.exists() && !xmlfile.open(QIODevice::ReadOnly))
{
- loadQgcConfig();
+ loadQgcConfig(false);
doneLoadingConfig = true;
return;
}
+ loadQgcConfig(true);
QXmlStreamReader xml(xmlfile.readAll());
xmlfile.close();
@@ -394,6 +496,7 @@ void QGCVehicleConfig::loadConfig()
set["count"] = arraycount;
tool = new QGCToolWidget("", this);
+ tool->addUAS(mav);
tool->setTitle(parametersname);
tool->setObjectName(parametersname);
tool->setSettings(set);
diff --git a/src/ui/QGCVehicleConfig.h b/src/ui/QGCVehicleConfig.h
index d05b064c93f8eace7aa89b5015513f91d9ac0be4..242c11b20233cda7c2d3523db943b266ace17feb 100644
--- a/src/ui/QGCVehicleConfig.h
+++ b/src/ui/QGCVehicleConfig.h
@@ -32,7 +32,7 @@ public slots:
/** Set the MAV currently being calibrated */
void setActiveUAS(UASInterface* active);
/** Fallback function, automatically called by loadConfig() upon failure to find and xml file*/
- void loadQgcConfig();
+ void loadQgcConfig(bool primary);
/** Load configuration from xml file */
void loadConfig();
/** Start the RC calibration routine */
diff --git a/src/ui/QGCVehicleConfig.ui b/src/ui/QGCVehicleConfig.ui
index 45adc2a6b3d05439436cf7b33db4ba034875b374..158b6bc7714f76958a06e92548cc522640ac35a3 100644
--- a/src/ui/QGCVehicleConfig.ui
+++ b/src/ui/QGCVehicleConfig.ui
@@ -6,8 +6,8 @@
0
0
- 780
- 586
+ 760
+ 541
@@ -725,50 +725,47 @@
Sensor Calibration
-
-
- 20
-
- -
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+
-
+
+
-
+
+
+ <!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;">
-<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:'Lucida Grande'; font-size:18pt;">Sensor Calibration</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:'Lucida Grande'; font-size:16pt;"><br /></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:'Lucida Grande'; font-size:12pt;">The PX4FMU sensors can be calibrated with the buttons on the right. Gyroscope (GYRO) and Accelerometer (ACCEL) calibrations have to be performed with a static, unmoved system. The magnetometer calibration needs to be performed while moving the device.</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:'Lucida Grande'; font-size:12pt;"><br /></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:'Lucida Grande'; font-size:16pt;">Magnetometer Calibration</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:'Lucida Grande'; font-size:16pt;"><br /></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:'Lucida Grande'; font-size:12pt;">Carefully follow the instructions. Click on MAG to start the calibration. Watch the communication console for further instructions (Available through Main Menu -> Tool Widgets -> Communication Console). Do not calibrate the vehicle in vincinity of metal, e.g. from a table or chair. Start the calibration, leave the system unmoved on the table. Wait for the double beep. Next move the system in a figure eight, roll and pitch it strongly, rotate around all axes and perform the figure eight also upside-down. The calibration is finished after the triple beep.</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:'Lucida Grande'; font-size:12pt;"><br /></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:'Lucida Grande'; font-size:16pt;">Accelerometer Calibration</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:'Lucida Grande'; font-size:16pt;"><br /></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:'Lucida Grande'; font-size:12pt;">Put the system on an absolutely level surface and press ACCEL, wait for the the triple beep. Do not move the system. If no flat surface is available, rather not calibrate the system.</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:'Lucida Grande'; font-size:12pt;"><br /></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:'Lucida Grande'; font-size:16pt;">Gyroscope Calibration</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:'Lucida Grande'; font-size:16pt;"><br /></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:'Lucida Grande'; font-size:12pt;">The orientation is not important for this calibration, but do not move the system until the triple beep or the matching text message in the console.</span></p></body></html>
-
-
+<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;"><br /></p></body></html>
+
+
+
+ -
+
+
-
+
+
+ true
+
+
+
+
+ 0
+ 0
+ 354
+ 448
+
+
+
+
-
+
+
+
+
+
+
+
+
+
@@ -825,8 +822,8 @@ p, li { white-space: pre-wrap; }
0
0
- 364
- 449
+ 354
+ 404
@@ -862,8 +859,8 @@ p, li { white-space: pre-wrap; }
0
0
- 364
- 449
+ 354
+ 404
@@ -937,8 +934,8 @@ p, li { white-space: pre-wrap; }
0
0
- 364
- 449
+ 354
+ 404
@@ -974,8 +971,8 @@ p, li { white-space: pre-wrap; }
0
0
- 364
- 449
+ 354
+ 404
diff --git a/src/ui/designer/QGCComboBox.cc b/src/ui/designer/QGCComboBox.cc
index e982c674749a13f42dda4a841098ca6942c6ad54..df96567658a5756d40f0b5263c7b2886f0eef364 100644
--- a/src/ui/designer/QGCComboBox.cc
+++ b/src/ui/designer/QGCComboBox.cc
@@ -39,6 +39,7 @@ QGCComboBox::QGCComboBox(QWidget *parent) :
ui->editItemNameLabel->hide();
ui->itemValueLabel->hide();
ui->itemNameLabel->hide();
+ ui->infoLabel->hide();
ui->editOptionComboBox->setEnabled(false);
isDisabled = true;
//ui->editLine1->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }");
@@ -110,7 +111,11 @@ void QGCComboBox::setActiveUAS(UASInterface* activeUas)
//requestParameter();
// Set param info
QString text = uas->getParamManager()->getParamInfo(parameterName);
- ui->infoLabel->setToolTip(text);
+ if (text != "")
+ {
+ ui->infoLabel->setToolTip(text);
+ ui->infoLabel->show();
+ }
// Force-uncheck and hide label if no description is available
if (ui->editInfoCheckBox->isChecked())
{
@@ -165,7 +170,7 @@ void QGCComboBox::selectParameter(int paramIndex)
// Description
QString text = uas->getParamManager()->getParamInfo(parameterName);
- ui->infoLabel->setText(text);
+ //ui->infoLabel->setText(text);
showInfo(!(text.length() > 0));
}
}
@@ -369,6 +374,11 @@ void QGCComboBox::readSettings(const QString& pre,const QVariantMap& settings)
int num = settings.value(pre + "QGC_PARAM_COMBOBOX_COUNT").toInt();
for (int i=0;ieditOptionComboBox->addItem(settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString());
//qDebug() << "Adding val:" << settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString() << settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_VAL").toInt();
comboBoxTextToValMap[settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString()] = settings.value(pre + "QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_VAL").toInt();
@@ -397,6 +407,11 @@ void QGCComboBox::readSettings(const QSettings& settings)
int num = settings.value("QGC_PARAM_COMBOBOX_COUNT").toInt();
for (int i=0;ieditOptionComboBox->addItem(settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString());
qDebug() << "Adding val:" << settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i)).toString() << settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_VAL").toInt();
comboBoxTextToValMap[settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_TEXT").toString()] = settings.value("QGC_PARAM_COMBOBOX_ITEM_" + QString::number(i) + "_VAL").toInt();
@@ -421,6 +436,7 @@ void QGCComboBox::delButtonClicked()
}
void QGCComboBox::comboBoxIndexChanged(QString val)
{
+ ui->imageLabel->setPixmap(comboBoxIndexToPixmap[ui->editOptionComboBox->currentIndex()]);
switch (parameterValue.type())
{
case QVariant::Char:
diff --git a/src/ui/designer/QGCComboBox.h b/src/ui/designer/QGCComboBox.h
index 96270c7161ba0cf8466395e254069c1231dd3998..e40eb92a516dc3b60612eb2b669898ea16933474 100644
--- a/src/ui/designer/QGCComboBox.h
+++ b/src/ui/designer/QGCComboBox.h
@@ -49,6 +49,7 @@ protected slots:
/** @brief Updates current parameter based on new combobox value */
void comboBoxIndexChanged(QString val);
protected:
+ QMap comboBoxIndexToPixmap;
QMap comboBoxTextToValMap; ///< Comboboxtext/parameter value map
QString parameterName; ///< Key/Name of the parameter
QVariant parameterValue; ///< Value of the parameter
diff --git a/src/ui/designer/QGCComboBox.ui b/src/ui/designer/QGCComboBox.ui
index dc21384bde97aaf965e9a5ba507a59cf20b27ec0..4a12005c37ab517716501fc187c97e99063d29be 100644
--- a/src/ui/designer/QGCComboBox.ui
+++ b/src/ui/designer/QGCComboBox.ui
@@ -35,66 +35,134 @@
12
- -
-
+
-
+
- 0
+ 60
0
-
- Qt::Horizontal
+
+ Name
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ Qt::LeftToRight
+
+
+ ?
+
+
+ QToolButton::DelayedPopup
+
+
+ Qt::ToolButtonIconOnly
+
+
+ false
+
+
+ Qt::NoArrow
+
+
+
+ -
+
+
+ <Parameter Name / Label>
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ Name
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ false
+
+
+ Select component
+
+
+ Select component
+
+
+
+ -
+
+
+ Add Item
-
-
+
- Done
+ Delete Item
- -
-
-
-
- 0
- 0
-
+
-
+
+
+ Value
-
- Qt::Horizontal
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
- -
-
-
- Qt::Horizontal
+
-
+
+
+ false
-
+
+ Select parameter
+
+
+ Select parameter
+
+
+
+ -
+
+
0
- 20
+ 0
-
-
- -
-
- Qt::Vertical
-
-
-
- 20
- 40
-
+ Qt::Horizontal
-
+
- -
+
-
@@ -113,7 +181,14 @@
- -
+
-
+
+
+ Done
+
+
+
+ -
@@ -138,7 +213,7 @@
- -
+
-
Show Info
@@ -148,134 +223,75 @@
- -
-
-
- Please click first on refresh to update selection menus..
-
-
-
- -
-
-
- true
-
-
- Refresh
-
-
-
- -
-
-
- false
-
-
- Select parameter
-
-
- Select parameter
-
-
-
- -
-
-
- -
-
-
- false
-
-
- Select component
-
-
- Select component
-
-
-
- -
-
-
- Delete Item
+
-
+
+
+
+ 0
+ 0
+
-
-
- -
-
-
- Add Item
+
+ Qt::Horizontal
- -
-
-
- -
-
-
- -
-
-
- Name
+
-
+
+
+ Qt::Vertical
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ 20
+ 40
+
-
+
- -
-
-
- Value
+
-
+
+
+ Qt::Horizontal
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ 0
+ 20
+
-
+
- -
-
+
-
+
- <Parameter Name / Label>
+ Please click first on refresh to update selection menus..
- -
-
-
- Qt::LeftToRight
+
-
+
+
+ true
- ?
-
-
- QToolButton::DelayedPopup
-
-
- Qt::ToolButtonIconOnly
-
-
- false
-
-
- Qt::NoArrow
+ Refresh
- -
-
-
+
-
+
+
- 60
- 0
+ 16777215
+ 150
- Name
+
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+ true
diff --git a/src/ui/designer/QGCCommandButton.cc b/src/ui/designer/QGCCommandButton.cc
index fd5ffeea2134177b9b93754b1bafe1146da5db79..a237b832b92366c2033004b4aac13ae2955539c6 100644
--- a/src/ui/designer/QGCCommandButton.cc
+++ b/src/ui/designer/QGCCommandButton.cc
@@ -116,7 +116,10 @@ void QGCCommandButton::sendCommand()
float param6 = ui->editParam6SpinBox->value();
float param7 = ui->editParam7SpinBox->value();
int component = ui->editComponentSpinBox->value();
-
+ if (showlabelname != "")
+ {
+ emit showLabel(showlabelname,index);
+ }
QGCToolWidgetItem::uas->executeCommand(command, confirm, param1, param2, param3, param4, param5, param6, param7, component);
//qDebug() << __FILE__ << __LINE__ << "SENDING COMMAND" << index;
}
@@ -309,6 +312,8 @@ void QGCCommandButton::readSettings(const QSettings& settings)
ui->editParam6SpinBox->setValue(settings.value("QGC_COMMAND_BUTTON_PARAM6", 0.0).toDouble());
ui->editParam7SpinBox->setValue(settings.value("QGC_COMMAND_BUTTON_PARAM7", 0.0).toDouble());
+ showlabelname = settings.value("QGC_COMMAND_BUTTON_LABEL","").toString();
+
ui->editCommandComboBox->setCurrentIndex(0);
// Find combobox entry for this data
diff --git a/src/ui/designer/QGCCommandButton.h b/src/ui/designer/QGCCommandButton.h
index 7832bef890e0b74ce110bd29445660952e696ca3..0073bae5f1678039b88145a6456c2d97cf38c824 100644
--- a/src/ui/designer/QGCCommandButton.h
+++ b/src/ui/designer/QGCCommandButton.h
@@ -26,8 +26,10 @@ public slots:
void writeSettings(QSettings& settings);
void readSettings(const QSettings& settings);
void readSettings(const QString& pre,const QVariantMap& settings);
-
+signals:
+ void showLabel(QString name, int num);
private:
+ QString showlabelname;
Ui::QGCCommandButton *ui;
UASInterface* uas;
};
diff --git a/src/ui/designer/QGCParamSlider.cc b/src/ui/designer/QGCParamSlider.cc
index 92cb3fa8cad6bc71fe09a2c8d085845e00efed0f..5c82bef7019959dab3a7ed1a3e3288ab15017ecf 100644
--- a/src/ui/designer/QGCParamSlider.cc
+++ b/src/ui/designer/QGCParamSlider.cc
@@ -41,6 +41,7 @@ QGCParamSlider::QGCParamSlider(QWidget *parent) :
ui->editMaxSpinBox->hide();
ui->editLine1->hide();
ui->editLine2->hide();
+ ui->infoLabel->hide();
//ui->editLine1->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }");
//ui->editLine2->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }");
@@ -107,7 +108,11 @@ void QGCParamSlider::setActiveUAS(UASInterface* activeUas)
//requestParameter();
// Set param info
QString text = uas->getParamManager()->getParamInfo(parameterName);
- ui->infoLabel->setToolTip(text);
+ if (text != "")
+ {
+ ui->infoLabel->setToolTip(text);
+ ui->infoLabel->show();
+ }
// Force-uncheck and hide label if no description is available
if (ui->editInfoCheckBox->isChecked())
{
@@ -195,9 +200,10 @@ void QGCParamSlider::selectParameter(int paramIndex)
}
// Description
- QString text = uas->getParamManager()->getParamInfo(parameterName);
- ui->infoLabel->setText(text);
- showInfo(!(text.length() > 0));
+ //QString text = uas->getParamManager()->getParamInfo(parameterName);
+ //ui->infoLabel->setText(text);
+
+ //showInfo(!(text.length() > 0));
}
}
}
diff --git a/src/ui/designer/QGCTextLabel.cc b/src/ui/designer/QGCTextLabel.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e824e018f218edd0edbc434e757e40db0b18abf5
--- /dev/null
+++ b/src/ui/designer/QGCTextLabel.cc
@@ -0,0 +1,189 @@
+#include
+
+#include "QGCTextLabel.h"
+#include "ui_QGCTextLabel.h"
+
+#include "MAVLinkProtocol.h"
+#include "UASManager.h"
+
+QGCTextLabel::QGCTextLabel(QWidget *parent) :
+ QGCToolWidgetItem("Command Button", parent),
+ ui(new Ui::QGCTextLabel)
+{
+ uas = 0;
+ enabledNum = -1;
+ ui->setupUi(this);
+
+ connect(ui->editFinishButton, SIGNAL(clicked()), this, SLOT(endEditMode()));
+
+ // Hide all edit items
+ ui->editFinishButton->hide();
+ ui->editNameLabel->hide();
+ ui->editTextParam->hide();
+ ui->editComponentSpinBox->hide();
+ ui->editLine1->hide();
+ ui->editLine2->hide();
+
+ ui->editLine1->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }");
+ ui->editLine2->setStyleSheet("QWidget { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }");
+
+ // Add commands to combo box
+
+}
+
+QGCTextLabel::~QGCTextLabel()
+{
+ delete ui;
+}
+
+
+
+void QGCTextLabel::startEditMode()
+{
+ // Hide elements
+ ui->nameLabel->hide();
+
+ ui->editTextParam->show();
+ ui->editFinishButton->show();
+ ui->editNameLabel->show();
+ ui->editComponentSpinBox->show();
+ ui->editLine1->show();
+ ui->editLine2->show();
+ //setStyleSheet("QGroupBox { border: 1px solid #66666B; border-radius: 3px; padding: 10px 0px 0px 0px; background: #111122; }");
+
+ // Attempt to undock the dock widget
+ QWidget* p = this;
+ QDockWidget* dock;
+
+ do {
+ p = p->parentWidget();
+ dock = dynamic_cast(p);
+
+ if (dock)
+ {
+ dock->setFloating(true);
+ break;
+ }
+ } while (p && !dock);
+
+ isInEditMode = true;
+}
+
+void QGCTextLabel::endEditMode()
+{
+ ui->editFinishButton->hide();
+ ui->editTextParam->hide();
+ ui->editNameLabel->hide();
+ ui->editComponentSpinBox->hide();
+ ui->editLine1->hide();
+ ui->editLine2->hide();
+
+ ui->nameLabel->show();
+
+ // Write to settings
+ emit editingFinished();
+ //setStyleSheet("");
+
+ // Attempt to dock the dock widget
+ QWidget* p = this;
+ QDockWidget* dock;
+
+ do {
+ p = p->parentWidget();
+ dock = dynamic_cast(p);
+
+ if (dock)
+ {
+ dock->setFloating(false);
+ break;
+ }
+ } while (p && !dock);
+
+ isInEditMode = false;
+}
+
+void QGCTextLabel::writeSettings(QSettings& settings)
+{
+ qDebug() << "COMMAND BUTTON WRITING SETTINGS";
+ settings.setValue("TYPE", "COMMANDBUTTON");
+ settings.setValue("QGC_COMMAND_BUTTON_DESCRIPTION", ui->nameLabel->text());
+
+ settings.sync();
+}
+void QGCTextLabel::readSettings(const QString& pre,const QVariantMap& settings)
+{
+ ui->editTextParam->setText(settings.value(pre + "QGC_TEXT_SOURCE", "UNKNOWN").toString());
+ //ui->editCommandComboBox->setCurrentIndex(settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt());
+ if (ui->editTextParam->text() == "NONE")
+ {
+ ui->editNameLabel->setText(settings.value(pre + "QGC_TEXT_TEXT","").toString());
+ ui->nameLabel->setText(ui->editNameLabel->text());
+ }
+ else if (ui->editTextParam->text() == "MAV")
+ {
+ //MAV command text
+ connect(uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(textMessageReceived(int,int,int,QString)));
+ }
+
+ //int commandId = settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt();
+
+
+
+
+ //ui->editNameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString());
+ //ui->nameLabel->setText(settings.value(pre + "QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString());
+}
+void QGCTextLabel::textMessageReceived(int uasid, int component, int severity, QString message)
+{
+ if (enabledNum != -1)
+ {
+ //SUCCESS: Executed CMD: 241
+ if (message.contains("SUCCESS"))
+ {
+ if (message.trimmed().endsWith(QString::number(enabledNum)))
+ {
+ enabledNum = -1;
+ ui->textLabel->setText(ui->textLabel->text() + " Complete");
+ }
+ }
+ else
+ {
+ ui->textLabel->setText(message);
+ }
+ }
+}
+
+void QGCTextLabel::readSettings(const QSettings& settings)
+{
+ //ui->editNameLabel->setText(settings.value("QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString());
+ //ui->nameLabel->setText(settings.value("QGC_COMMAND_BUTTON_DESCRIPTION", "ERROR LOADING BUTTON").toString());
+ ui->editTextParam->setText(settings.value("QGC_TEXT_SOURCE", "UNKNOWN").toString());
+ ui->editNameLabel->setText(settings.value("QGC_TEXT_TEXT","").toString());
+ //ui->editCommandComboBox->setCurrentIndex(settings.value(pre + "QGC_COMMAND_BUTTON_COMMANDID", 0).toInt());
+ if (ui->editTextParam->text() == "NONE")
+ {
+ ui->textLabel->setText(ui->editNameLabel->text());
+ ui->nameLabel->setText("");
+ }
+ else if (ui->editTextParam->text() == "MAV")
+ {
+ //MAV command text
+ ui->nameLabel->setText(ui->editNameLabel->text());
+ ui->textLabel->setText("");
+ connect(uas,SIGNAL(textMessageReceived(int,int,int,QString)),this,SLOT(textMessageReceived(int,int,int,QString)));
+ }
+ else
+ {
+
+ }
+}
+void QGCTextLabel::enableText(int num)
+{
+ enabledNum = num;
+
+}
+
+void QGCTextLabel::setActiveUAS(UASInterface *uas)
+{
+ this->uas = uas;
+}
diff --git a/src/ui/designer/QGCTextLabel.h b/src/ui/designer/QGCTextLabel.h
new file mode 100644
index 0000000000000000000000000000000000000000..67ed0ae638c2aa142f1e4faf04a83de175749648
--- /dev/null
+++ b/src/ui/designer/QGCTextLabel.h
@@ -0,0 +1,34 @@
+#ifndef QGCTEXTLABEL_H
+#define QGCTEXTLABEL_H
+
+#include "QGCToolWidgetItem.h"
+
+namespace Ui
+{
+class QGCTextLabel;
+}
+
+class UASInterface;
+
+class QGCTextLabel : public QGCToolWidgetItem
+{
+ Q_OBJECT
+
+public:
+ explicit QGCTextLabel(QWidget *parent = 0);
+ ~QGCTextLabel();
+ void setActiveUAS(UASInterface *uas);
+ void enableText(int num);
+public slots:
+ void startEditMode();
+ void endEditMode();
+ void writeSettings(QSettings& settings);
+ void readSettings(const QSettings& settings);
+ void readSettings(const QString& pre,const QVariantMap& settings);
+ void textMessageReceived(int uasid, int component, int severity, QString message);
+private:
+ int enabledNum;
+ Ui::QGCTextLabel *ui;
+};
+
+#endif // QGCTEXTLABEL_H
diff --git a/src/ui/designer/QGCTextLabel.ui b/src/ui/designer/QGCTextLabel.ui
new file mode 100644
index 0000000000000000000000000000000000000000..78ba1dda55884e0df0c0dca04935d8808d11b4fb
--- /dev/null
+++ b/src/ui/designer/QGCTextLabel.ui
@@ -0,0 +1,133 @@
+
+
+ QGCTextLabel
+
+
+
+ 0
+ 0
+ 1183
+ 166
+
+
+
+ Form
+
+
+
+ 6
+
+
+ 3
+
+
+ 6
+
+
+ 3
+
+ -
+
+
+ <Label Description Label (in front of text)>
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 50
+ 0
+
+
+
+ Description
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+ <Text Param>
+
+
+
+ -
+
+
+ Done
+
+
+
+ -
+
+
+ Component ID:
+
+
+ 0
+
+
+ 255
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+ TextLabel
+
+
+
+
+
+
+
+
+ editNameLabel
+ textChanged(QString)
+ nameLabel
+ setText(QString)
+
+
+ 114
+ 22
+
+
+ 114
+ 55
+
+
+
+
+
diff --git a/src/ui/designer/QGCToolWidget.cc b/src/ui/designer/QGCToolWidget.cc
index 0b285d2b2b4b89470d707deda68b0f85e49d1d86..84dd6aebcdf9b45bb3d351a75c761be2713777f3 100644
--- a/src/ui/designer/QGCToolWidget.cc
+++ b/src/ui/designer/QGCToolWidget.cc
@@ -12,6 +12,7 @@
#include "QGCParamSlider.h"
#include "QGCComboBox.h"
+#include "QGCTextLabel.h"
#include "QGCCommandButton.h"
#include "UASManager.h"
@@ -148,6 +149,20 @@ QList QGCToolWidget::createWidgetsFromSettings(QWidget* parent,
return instances()->values();
}
+void QGCToolWidget::showLabel(QString name,int num)
+{
+ for (int i=0;iobjectName() == name)
+ {
+ QGCTextLabel *label = qobject_cast(toolItemList[i]);
+ if (label)
+ {
+ label->enableText(num);
+ }
+ }
+ }
+}
/**
* @param singleinstance If this is set to true, the widget settings will only be loaded if not another widget with the same title exists
@@ -266,6 +281,11 @@ void QGCToolWidget::loadSettings(QVariantMap& settings)
item = new QGCCommandButton(this);
//qDebug() << "CREATED COMMANDBUTTON";
}
+ else if (type == "TEXT")
+ {
+ item = new QGCTextLabel(this);
+ item->setActiveUAS(mav);
+ }
else if (type == "SLIDER")
{
item = new QGCParamSlider(this);
@@ -310,19 +330,30 @@ void QGCToolWidget::loadSettings(QSettings& settings)
QGCToolWidgetItem* item = NULL;
if (type == "COMMANDBUTTON")
{
- item = new QGCCommandButton(this);
+ QGCCommandButton *button = new QGCCommandButton(this);
+ connect(button,SIGNAL(showLabel(QString,int)),this,SLOT(showLabel(QString,int)));
+ item = button;
+ item->setActiveUAS(mav);
//qDebug() << "CREATED COMMANDBUTTON";
}
else if (type == "SLIDER")
{
item = new QGCParamSlider(this);
+ item->setActiveUAS(mav);
//qDebug() << "CREATED PARAM SLIDER";
}
else if (type == "COMBO")
{
item = new QGCComboBox(this);
+ item->setActiveUAS(mav);
qDebug() << "CREATED PARAM COMBOBOX";
}
+ else if (type == "TEXT")
+ {
+ item = new QGCTextLabel(this);
+ item->setObjectName(settings.value("QGC_TEXT_ID").toString());
+ item->setActiveUAS(mav);
+ }
if (item)
{
@@ -565,6 +596,7 @@ void QGCToolWidget::addToolWidget(QGCToolWidgetItem* widget)
}
connect(widget, SIGNAL(destroyed()), this, SLOT(storeSettings()));
toolLayout->addWidget(widget);
+ toolItemList.append(widget);
}
void QGCToolWidget::exportWidget()
diff --git a/src/ui/designer/QGCToolWidget.h b/src/ui/designer/QGCToolWidget.h
index e261e47f7e2b69c7d5e4bc05280a9df314863cec..c3abb0faf240834ddb16f57315d54e8db2c1e542 100644
--- a/src/ui/designer/QGCToolWidget.h
+++ b/src/ui/designer/QGCToolWidget.h
@@ -62,12 +62,14 @@ public slots:
QList getParamList();
void setParameterValue(int uas, int component, QString parameterName, const QVariant value);
bool fromMetaData() { return isFromMetaData; }
+ void showLabel(QString name,int num);
signals:
void titleChanged(QString);
protected:
bool isFromMetaData;
QMap paramToItemMap;
+ QList toolItemList;
QList paramList;
QVariantMap settingsMap;
QAction* addParamAction;