1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-05 21:52:10 +01:00

Merge remote branch 'origin/OP-532_Heli_GUI_Improvements'

WARNING: this will wipe out system settings. Don't forget to export
settings first with old GCS and import using new GCS after upgrade.
This commit is contained in:
Oleg Semyonov 2011-06-24 10:05:54 +03:00
commit dc651b6604
4 changed files with 4461 additions and 3199 deletions

View File

@ -1,3140 +1,3960 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>ccpmWidget</class> <class>ccpmWidget</class>
<widget class="QWidget" name="ccpmWidget"> <widget class="QWidget" name="ccpmWidget">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>660</width> <width>660</width>
<height>572</height> <height>572</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>300</width> <width>300</width>
<height>300</height> <height>300</height>
</size> </size>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Form</string> <string>Form</string>
</property> </property>
<property name="autoFillBackground"> <property name="autoFillBackground">
<bool>false</bool> <bool>false</bool>
</property> </property>
<layout class="QGridLayout" name="gridLayout_17"> <layout class="QGridLayout" name="gridLayout_17">
<item row="0" column="0"> <item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_13"> <layout class="QGridLayout" name="gridLayout_13">
<item row="0" column="0"> <item row="0" column="0">
<layout class="QFormLayout" name="formLayout_6"> <layout class="QFormLayout" name="formLayout_6">
<property name="fieldGrowthPolicy"> <property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum> <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property> </property>
<property name="topMargin"> <property name="topMargin">
<number>0</number> <number>0</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label"> <widget class="QLabel" name="label">
<property name="text"> <property name="text">
<string>Swashplate config:</string> <string>Swashplate config:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="QComboBox" name="ccpmType"> <widget class="QComboBox" name="ccpmType">
<property name="font"> <property name="font">
<font> <font>
<pointsize>10</pointsize> <pointsize>10</pointsize>
</font> </font>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Select aircraft type here</string> <string>Select aircraft type here</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QTabWidget" name="TabObject"> <widget class="QTabWidget" name="TabObject">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>400</width> <width>300</width>
<height>300</height> <height>300</height>
</size> </size>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="BasicTab"> <widget class="QWidget" name="BasicTab">
<attribute name="title"> <attribute name="title">
<string>Basic settings</string> <string>Basic settings</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_6"> <layout class="QGridLayout" name="gridLayout_6">
<property name="margin"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<property name="spacing"> <property name="topMargin">
<number>3</number> <number>0</number>
</property> </property>
<item row="0" column="0"> <property name="rightMargin">
<layout class="QVBoxLayout" name="verticalLayout_6" stretch="1,1,1,0"> <number>3</number>
<item> </property>
<widget class="QGroupBox" name="SwashplateBox_2"> <property name="bottomMargin">
<property name="sizePolicy"> <number>3</number>
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> </property>
<horstretch>0</horstretch> <property name="spacing">
<verstretch>0</verstretch> <number>3</number>
</sizepolicy> </property>
</property> <item row="0" column="0">
<property name="title"> <layout class="QVBoxLayout" name="ccpmSettingsBox" stretch="0,1,1,0,0">
<string>Outputs</string> <item>
</property> <widget class="QGroupBox" name="SwashplateBox_2">
<layout class="QGridLayout" name="gridLayout_18"> <property name="sizePolicy">
<property name="horizontalSpacing"> <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
<number>3</number> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
<property name="verticalSpacing"> </sizepolicy>
<number>2</number> </property>
</property> <property name="maximumSize">
<property name="margin"> <size>
<number>3</number> <width>190</width>
</property> <height>16777215</height>
<item row="2" column="1"> </size>
<widget class="QComboBox" name="ccpmTailChannel"> </property>
<property name="sizePolicy"> <property name="font">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <font>
<horstretch>0</horstretch> <pointsize>11</pointsize>
<verstretch>0</verstretch> </font>
</sizepolicy> </property>
</property> <property name="title">
<property name="minimumSize"> <string>Outputs</string>
<size> </property>
<width>85</width> <layout class="QGridLayout" name="gridLayout_18">
<height>0</height> <property name="horizontalSpacing">
</size> <number>3</number>
</property> </property>
<property name="maximumSize"> <property name="verticalSpacing">
<size> <number>2</number>
<width>85</width> </property>
<height>16777215</height> <property name="margin">
</size> <number>3</number>
</property> </property>
</widget> <item row="2" column="1">
</item> <widget class="QComboBox" name="ccpmTailChannel">
<item row="1" column="1"> <property name="sizePolicy">
<widget class="QComboBox" name="ccpmEngineChannel"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<property name="sizePolicy"> <horstretch>0</horstretch>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <verstretch>0</verstretch>
<horstretch>0</horstretch> </sizepolicy>
<verstretch>0</verstretch> </property>
</sizepolicy> <property name="minimumSize">
</property> <size>
<property name="minimumSize"> <width>85</width>
<size> <height>0</height>
<width>85</width> </size>
<height>0</height> </property>
</size> <property name="maximumSize">
</property> <size>
<property name="maximumSize"> <width>100</width>
<size> <height>16777215</height>
<width>85</width> </size>
<height>16777215</height> </property>
</size> <property name="font">
</property> <font>
</widget> <pointsize>11</pointsize>
</item> </font>
<item row="2" column="0"> </property>
<widget class="QLabel" name="ccpmTailLabel"> </widget>
<property name="sizePolicy"> </item>
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <item row="1" column="1">
<horstretch>0</horstretch> <widget class="QComboBox" name="ccpmEngineChannel">
<verstretch>0</verstretch> <property name="sizePolicy">
</sizepolicy> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
</property> <horstretch>0</horstretch>
<property name="minimumSize"> <verstretch>0</verstretch>
<size> </sizepolicy>
<width>80</width> </property>
<height>0</height> <property name="minimumSize">
</size> <size>
</property> <width>85</width>
<property name="maximumSize"> <height>0</height>
<size> </size>
<width>80</width> </property>
<height>16777215</height> <property name="maximumSize">
</size> <size>
</property> <width>100</width>
<property name="text"> <height>16777215</height>
<string>Tail Rotor</string> </size>
</property> </property>
</widget> <property name="font">
</item> <font>
<item row="1" column="0"> <pointsize>11</pointsize>
<widget class="QLabel" name="ccpmEngineLabel"> </font>
<property name="sizePolicy"> </property>
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> </widget>
<horstretch>0</horstretch> </item>
<verstretch>0</verstretch> <item row="2" column="0">
</sizepolicy> <widget class="QLabel" name="ccpmTailLabel">
</property> <property name="sizePolicy">
<property name="minimumSize"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<size> <horstretch>0</horstretch>
<width>80</width> <verstretch>0</verstretch>
<height>0</height> </sizepolicy>
</size> </property>
</property> <property name="minimumSize">
<property name="maximumSize"> <size>
<size> <width>80</width>
<width>80</width> <height>0</height>
<height>16777215</height> </size>
</size> </property>
</property> <property name="maximumSize">
<property name="text"> <size>
<string>Engine</string> <width>80</width>
</property> <height>16777215</height>
</widget> </size>
</item> </property>
</layout> <property name="text">
</widget> <string>Tail Rotor</string>
</item> </property>
<item> </widget>
<widget class="QGroupBox" name="SwashplateBox"> </item>
<property name="sizePolicy"> <item row="1" column="0">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <widget class="QLabel" name="ccpmEngineLabel">
<horstretch>0</horstretch> <property name="sizePolicy">
<verstretch>0</verstretch> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
</sizepolicy> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
<property name="title"> </sizepolicy>
<string>Swashplate Outputs</string> </property>
</property> <property name="minimumSize">
<layout class="QGridLayout" name="gridLayout_19"> <size>
<property name="horizontalSpacing"> <width>80</width>
<number>3</number> <height>0</height>
</property> </size>
<property name="verticalSpacing"> </property>
<number>2</number> <property name="maximumSize">
</property> <size>
<property name="margin"> <width>80</width>
<number>3</number> <height>16777215</height>
</property> </size>
<item row="0" column="0"> </property>
<widget class="QLabel" name="ccpmServoWLabel"> <property name="text">
<property name="enabled"> <string>Engine</string>
<bool>true</bool> </property>
</property> </widget>
<property name="sizePolicy"> </item>
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> </layout>
<horstretch>1</horstretch> </widget>
<verstretch>1</verstretch> </item>
</sizepolicy> <item>
</property> <widget class="QGroupBox" name="SwashplateBox">
<property name="minimumSize"> <property name="sizePolicy">
<size> <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<width>80</width> <horstretch>0</horstretch>
<height>0</height> <verstretch>0</verstretch>
</size> </sizepolicy>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>80</width> <width>190</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="text"> <property name="font">
<string>Servo W</string> <font>
</property> <pointsize>11</pointsize>
</widget> </font>
</item> </property>
<item row="0" column="1"> <property name="title">
<widget class="QComboBox" name="ccpmServoWChannel"> <string>Swashplate Outputs</string>
<property name="enabled"> </property>
<bool>true</bool> <layout class="QGridLayout" name="gridLayout_19">
</property> <property name="horizontalSpacing">
<property name="sizePolicy"> <number>3</number>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> </property>
<horstretch>0</horstretch> <property name="verticalSpacing">
<verstretch>0</verstretch> <number>2</number>
</sizepolicy> </property>
</property> <property name="margin">
<property name="minimumSize"> <number>3</number>
<size> </property>
<width>85</width> <item row="0" column="0">
<height>0</height> <widget class="QLabel" name="ccpmServoWLabel">
</size> <property name="enabled">
</property> <bool>true</bool>
<property name="maximumSize"> </property>
<size> <property name="sizePolicy">
<width>85</width> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<height>16777215</height> <horstretch>1</horstretch>
</size> <verstretch>1</verstretch>
</property> </sizepolicy>
</widget> </property>
</item> <property name="minimumSize">
<item row="1" column="1"> <size>
<widget class="QComboBox" name="ccpmServoXChannel"> <width>80</width>
<property name="sizePolicy"> <height>0</height>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> </size>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="maximumSize">
</sizepolicy> <size>
</property> <width>80</width>
<property name="minimumSize"> <height>16777215</height>
<size> </size>
<width>85</width> </property>
<height>0</height> <property name="text">
</size> <string>Servo W</string>
</property> </property>
<property name="maximumSize"> </widget>
<size> </item>
<width>85</width> <item row="0" column="1">
<height>16777215</height> <widget class="QComboBox" name="ccpmServoWChannel">
</size> <property name="enabled">
</property> <bool>true</bool>
</widget> </property>
</item> <property name="sizePolicy">
<item row="3" column="1"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<widget class="QComboBox" name="ccpmServoYChannel"> <horstretch>0</horstretch>
<property name="enabled"> <verstretch>0</verstretch>
<bool>true</bool> </sizepolicy>
</property> </property>
<property name="sizePolicy"> <property name="minimumSize">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <size>
<horstretch>0</horstretch> <width>85</width>
<verstretch>0</verstretch> <height>0</height>
</sizepolicy> </size>
</property> </property>
<property name="minimumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>100</width>
<height>0</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="maximumSize"> </widget>
<size> </item>
<width>85</width> <item row="1" column="1">
<height>16777215</height> <widget class="QComboBox" name="ccpmServoXChannel">
</size> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</widget> <horstretch>0</horstretch>
</item> <verstretch>0</verstretch>
<item row="1" column="0"> </sizepolicy>
<widget class="QLabel" name="ccpmServoXLabel"> </property>
<property name="sizePolicy"> <property name="minimumSize">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <size>
<horstretch>1</horstretch> <width>85</width>
<verstretch>1</verstretch> <height>0</height>
</sizepolicy> </size>
</property> </property>
<property name="minimumSize"> <property name="maximumSize">
<size> <size>
<width>80</width> <width>100</width>
<height>0</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="maximumSize"> </widget>
<size> </item>
<width>80</width> <item row="3" column="1">
<height>16777215</height> <widget class="QComboBox" name="ccpmServoYChannel">
</size> <property name="enabled">
</property> <bool>true</bool>
<property name="text"> </property>
<string>Servo X</string> <property name="sizePolicy">
</property> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
</widget> <horstretch>0</horstretch>
</item> <verstretch>0</verstretch>
<item row="5" column="1"> </sizepolicy>
<widget class="QComboBox" name="ccpmSingleServo"> </property>
<property name="sizePolicy"> <property name="minimumSize">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <size>
<horstretch>0</horstretch> <width>85</width>
<verstretch>0</verstretch> <height>0</height>
</sizepolicy> </size>
</property> </property>
<property name="minimumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>100</width>
<height>0</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="maximumSize"> </widget>
<size> </item>
<width>85</width> <item row="1" column="0">
<height>16777215</height> <widget class="QLabel" name="ccpmServoXLabel">
</size> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<item> <horstretch>1</horstretch>
<property name="text"> <verstretch>1</verstretch>
<string>Front</string> </sizepolicy>
</property> </property>
</item> <property name="minimumSize">
<item> <size>
<property name="text"> <width>80</width>
<string>Right</string> <height>0</height>
</property> </size>
</item> </property>
<item> <property name="maximumSize">
<property name="text"> <size>
<string>Rear</string> <width>80</width>
</property> <height>16777215</height>
</item> </size>
<item> </property>
<property name="text"> <property name="text">
<string>Left</string> <string>Servo X</string>
</property> </property>
</item> </widget>
</widget> </item>
</item> <item row="5" column="1">
<item row="5" column="0"> <widget class="QComboBox" name="ccpmSingleServo">
<widget class="QLabel" name="ccpmServoZLabel_3"> <property name="sizePolicy">
<property name="sizePolicy"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <horstretch>0</horstretch>
<horstretch>1</horstretch> <verstretch>0</verstretch>
<verstretch>1</verstretch> </sizepolicy>
</sizepolicy> </property>
</property> <property name="minimumSize">
<property name="minimumSize"> <size>
<size> <width>85</width>
<width>80</width> <height>0</height>
<height>0</height> </size>
</size> </property>
</property> <property name="maximumSize">
<property name="maximumSize"> <size>
<size> <width>100</width>
<width>80</width> <height>16777215</height>
<height>16777215</height> </size>
</size> </property>
</property> <item>
<property name="text"> <property name="text">
<string>Single Servo</string> <string>Front</string>
</property> </property>
</widget> </item>
</item> <item>
<item row="4" column="1"> <property name="text">
<widget class="QComboBox" name="ccpmServoZChannel"> <string>Right</string>
<property name="sizePolicy"> </property>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> </item>
<horstretch>0</horstretch> <item>
<verstretch>0</verstretch> <property name="text">
</sizepolicy> <string>Rear</string>
</property> </property>
<property name="minimumSize"> </item>
<size> <item>
<width>85</width> <property name="text">
<height>0</height> <string>Left</string>
</size> </property>
</property> </item>
<property name="maximumSize"> </widget>
<size> </item>
<width>85</width> <item row="5" column="0">
<height>16777215</height> <widget class="QLabel" name="ccpmServoZLabel_3">
</size> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
</widget> <horstretch>1</horstretch>
</item> <verstretch>1</verstretch>
<item row="4" column="0"> </sizepolicy>
<widget class="QLabel" name="ccpmServoZLabel"> </property>
<property name="sizePolicy"> <property name="minimumSize">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <size>
<horstretch>1</horstretch> <width>80</width>
<verstretch>1</verstretch> <height>0</height>
</sizepolicy> </size>
</property> </property>
<property name="minimumSize"> <property name="maximumSize">
<size> <size>
<width>80</width> <width>80</width>
<height>0</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="text">
<size> <string>1st Servo</string>
<width>80</width> </property>
<height>16777215</height> </widget>
</size> </item>
</property> <item row="4" column="1">
<property name="text"> <widget class="QComboBox" name="ccpmServoZChannel">
<string>Servo Z</string> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</widget> <horstretch>0</horstretch>
</item> <verstretch>0</verstretch>
<item row="3" column="0"> </sizepolicy>
<widget class="QLabel" name="ccpmServoYLabel"> </property>
<property name="enabled"> <property name="minimumSize">
<bool>true</bool> <size>
</property> <width>85</width>
<property name="sizePolicy"> <height>0</height>
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> </size>
<horstretch>1</horstretch> </property>
<verstretch>1</verstretch> <property name="maximumSize">
</sizepolicy> <size>
</property> <width>100</width>
<property name="minimumSize"> <height>16777215</height>
<size> </size>
<width>80</width> </property>
<height>0</height> </widget>
</size> </item>
</property> <item row="4" column="0">
<property name="maximumSize"> <widget class="QLabel" name="ccpmServoZLabel">
<size> <property name="sizePolicy">
<width>80</width> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<height>16777215</height> <horstretch>1</horstretch>
</size> <verstretch>1</verstretch>
</property> </sizepolicy>
<property name="text"> </property>
<string>Servo Y</string> <property name="minimumSize">
</property> <size>
</widget> <width>80</width>
</item> <height>0</height>
</layout> </size>
</widget> </property>
</item> <property name="maximumSize">
<item> <size>
<widget class="QGroupBox" name="SwashplateBox_3"> <width>80</width>
<property name="sizePolicy"> <height>16777215</height>
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> </size>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="text">
</sizepolicy> <string>Servo Z</string>
</property> </property>
<property name="minimumSize"> </widget>
<size> </item>
<width>70</width> <item row="3" column="0">
<height>0</height> <widget class="QLabel" name="ccpmServoYLabel">
</size> <property name="enabled">
</property> <bool>true</bool>
<property name="title"> </property>
<string>Swashplate Servo Angles</string> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<layout class="QGridLayout" name="gridLayout_20"> <horstretch>1</horstretch>
<property name="horizontalSpacing"> <verstretch>1</verstretch>
<number>3</number> </sizepolicy>
</property> </property>
<property name="verticalSpacing"> <property name="minimumSize">
<number>2</number> <size>
</property> <width>80</width>
<property name="margin"> <height>0</height>
<number>3</number> </size>
</property> </property>
<item row="0" column="1"> <property name="maximumSize">
<widget class="QDoubleSpinBox" name="ccpmAngleW"> <size>
<property name="sizePolicy"> <width>80</width>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <height>16777215</height>
<horstretch>0</horstretch> </size>
<verstretch>0</verstretch> </property>
</sizepolicy> <property name="text">
</property> <string>Servo Y</string>
<property name="minimumSize"> </property>
<size> </widget>
<width>85</width> </item>
<height>0</height> </layout>
</size> </widget>
</property> </item>
<property name="maximumSize"> <item>
<size> <widget class="QGroupBox" name="SwashplateBox_3">
<width>85</width> <property name="sizePolicy">
<height>16777215</height> <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
</size> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
<property name="decimals"> </sizepolicy>
<number>0</number> </property>
</property> <property name="minimumSize">
<property name="maximum"> <size>
<double>360.000000000000000</double> <width>70</width>
</property> <height>0</height>
<property name="singleStep"> </size>
<double>15.000000000000000</double> </property>
</property> <property name="maximumSize">
</widget> <size>
</item> <width>190</width>
<item row="0" column="0"> <height>16777215</height>
<widget class="QLabel" name="ccpmServoWLabel_2"> </size>
<property name="enabled"> </property>
<bool>true</bool> <property name="font">
</property> <font>
<property name="sizePolicy"> <pointsize>11</pointsize>
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> </font>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="title">
</sizepolicy> <string>Swashplate Servo Angles</string>
</property> </property>
<property name="minimumSize"> <layout class="QGridLayout" name="gridLayout_20">
<size> <property name="horizontalSpacing">
<width>80</width> <number>3</number>
<height>0</height> </property>
</size> <property name="verticalSpacing">
</property> <number>2</number>
<property name="maximumSize"> </property>
<size> <property name="margin">
<width>80</width> <number>3</number>
<height>16777215</height> </property>
</size> <item row="0" column="1">
</property> <widget class="QDoubleSpinBox" name="ccpmAngleW">
<property name="text"> <property name="sizePolicy">
<string>Angle W</string> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</property> <horstretch>0</horstretch>
</widget> <verstretch>0</verstretch>
</item> </sizepolicy>
<item row="1" column="0"> </property>
<widget class="QLabel" name="ccpmServoXLabel_2"> <property name="minimumSize">
<property name="sizePolicy"> <size>
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <width>85</width>
<horstretch>0</horstretch> <height>0</height>
<verstretch>0</verstretch> </size>
</sizepolicy> </property>
</property> <property name="maximumSize">
<property name="minimumSize"> <size>
<size> <width>85</width>
<width>80</width> <height>16777215</height>
<height>0</height> </size>
</size> </property>
</property> <property name="decimals">
<property name="maximumSize"> <number>0</number>
<size> </property>
<width>80</width> <property name="maximum">
<height>16777215</height> <double>360.000000000000000</double>
</size> </property>
</property> <property name="singleStep">
<property name="text"> <double>15.000000000000000</double>
<string>Angle X</string> </property>
</property> </widget>
</widget> </item>
</item> <item row="0" column="0">
<item row="2" column="0"> <widget class="QLabel" name="ccpmServoWLabel_2">
<widget class="QLabel" name="ccpmServoYLabel_2"> <property name="enabled">
<property name="enabled"> <bool>true</bool>
<bool>true</bool> </property>
</property> <property name="sizePolicy">
<property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <horstretch>0</horstretch>
<horstretch>0</horstretch> <verstretch>0</verstretch>
<verstretch>0</verstretch> </sizepolicy>
</sizepolicy> </property>
</property> <property name="minimumSize">
<property name="minimumSize"> <size>
<size> <width>80</width>
<width>80</width> <height>0</height>
<height>0</height> </size>
</size> </property>
</property> <property name="maximumSize">
<property name="maximumSize"> <size>
<size> <width>80</width>
<width>80</width> <height>16777215</height>
<height>16777215</height> </size>
</size> </property>
</property> <property name="text">
<property name="text"> <string>Angle W</string>
<string>Angle Y</string> </property>
</property> </widget>
</widget> </item>
</item> <item row="1" column="0">
<item row="4" column="0"> <widget class="QLabel" name="ccpmServoXLabel_2">
<widget class="QLabel" name="ccpmServoZLabel_2"> <property name="sizePolicy">
<property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <horstretch>0</horstretch>
<horstretch>0</horstretch> <verstretch>0</verstretch>
<verstretch>0</verstretch> </sizepolicy>
</sizepolicy> </property>
</property> <property name="minimumSize">
<property name="minimumSize"> <size>
<size> <width>80</width>
<width>80</width> <height>0</height>
<height>0</height> </size>
</size> </property>
</property> <property name="maximumSize">
<property name="maximumSize"> <size>
<size> <width>80</width>
<width>80</width> <height>16777215</height>
<height>16777215</height> </size>
</size> </property>
</property> <property name="text">
<property name="text"> <string>Angle X</string>
<string>Angle Z</string> </property>
</property> </widget>
</widget> </item>
</item> <item row="2" column="0">
<item row="5" column="0"> <widget class="QLabel" name="ccpmServoYLabel_2">
<widget class="QLabel" name="label_10"> <property name="enabled">
<property name="enabled"> <bool>true</bool>
<bool>true</bool> </property>
</property> <property name="sizePolicy">
<property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <horstretch>0</horstretch>
<horstretch>0</horstretch> <verstretch>0</verstretch>
<verstretch>0</verstretch> </sizepolicy>
</sizepolicy> </property>
</property> <property name="minimumSize">
<property name="minimumSize"> <size>
<size> <width>80</width>
<width>80</width> <height>0</height>
<height>0</height> </size>
</size> </property>
</property> <property name="maximumSize">
<property name="maximumSize"> <size>
<size> <width>80</width>
<width>80</width> <height>16777215</height>
<height>16777215</height> </size>
</size> </property>
</property> <property name="text">
<property name="text"> <string>Angle Y</string>
<string>CorrectionAngle</string> </property>
</property> </widget>
</widget> </item>
</item> <item row="4" column="0">
<item row="1" column="1"> <widget class="QLabel" name="ccpmServoZLabel_2">
<widget class="QDoubleSpinBox" name="ccpmAngleX"> <property name="sizePolicy">
<property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <horstretch>0</horstretch>
<horstretch>0</horstretch> <verstretch>0</verstretch>
<verstretch>0</verstretch> </sizepolicy>
</sizepolicy> </property>
</property> <property name="minimumSize">
<property name="minimumSize"> <size>
<size> <width>80</width>
<width>85</width> <height>0</height>
<height>0</height> </size>
</size> </property>
</property> <property name="maximumSize">
<property name="maximumSize"> <size>
<size> <width>80</width>
<width>85</width> <height>16777215</height>
<height>16777215</height> </size>
</size> </property>
</property> <property name="text">
<property name="decimals"> <string>Angle Z</string>
<number>0</number> </property>
</property> </widget>
<property name="maximum"> </item>
<double>360.000000000000000</double> <item row="5" column="0">
</property> <widget class="QLabel" name="label_10">
<property name="singleStep"> <property name="enabled">
<double>15.000000000000000</double> <bool>true</bool>
</property> </property>
</widget> <property name="sizePolicy">
</item> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<item row="5" column="1"> <horstretch>0</horstretch>
<widget class="QDoubleSpinBox" name="ccpmCorrectionAngle"> <verstretch>0</verstretch>
<property name="enabled"> </sizepolicy>
<bool>true</bool> </property>
</property> <property name="minimumSize">
<property name="sizePolicy"> <size>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <width>80</width>
<horstretch>0</horstretch> <height>0</height>
<verstretch>0</verstretch> </size>
</sizepolicy> </property>
</property> <property name="maximumSize">
<property name="minimumSize"> <size>
<size> <width>80</width>
<width>85</width> <height>16777215</height>
<height>0</height> </size>
</size> </property>
</property> <property name="text">
<property name="maximumSize"> <string>Correction Angle</string>
<size> </property>
<width>85</width> <property name="wordWrap">
<height>16777215</height> <bool>true</bool>
</size> </property>
</property> </widget>
<property name="decimals"> </item>
<number>0</number> <item row="1" column="1">
</property> <widget class="QDoubleSpinBox" name="ccpmAngleX">
<property name="maximum"> <property name="sizePolicy">
<double>360.000000000000000</double> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</property> <horstretch>0</horstretch>
<property name="singleStep"> <verstretch>0</verstretch>
<double>15.000000000000000</double> </sizepolicy>
</property> </property>
</widget> <property name="minimumSize">
</item> <size>
<item row="4" column="1"> <width>85</width>
<widget class="QDoubleSpinBox" name="ccpmAngleZ"> <height>0</height>
<property name="sizePolicy"> </size>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> </property>
<horstretch>0</horstretch> <property name="maximumSize">
<verstretch>0</verstretch> <size>
</sizepolicy> <width>85</width>
</property> <height>16777215</height>
<property name="minimumSize"> </size>
<size> </property>
<width>85</width> <property name="decimals">
<height>0</height> <number>0</number>
</size> </property>
</property> <property name="maximum">
<property name="maximumSize"> <double>360.000000000000000</double>
<size> </property>
<width>85</width> <property name="singleStep">
<height>16777215</height> <double>15.000000000000000</double>
</size> </property>
</property> </widget>
<property name="decimals"> </item>
<number>0</number> <item row="5" column="1">
</property> <widget class="QDoubleSpinBox" name="ccpmCorrectionAngle">
<property name="maximum"> <property name="enabled">
<double>360.000000000000000</double> <bool>true</bool>
</property> </property>
<property name="singleStep"> <property name="sizePolicy">
<double>15.000000000000000</double> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</property> <horstretch>0</horstretch>
</widget> <verstretch>0</verstretch>
</item> </sizepolicy>
<item row="2" column="1"> </property>
<widget class="QDoubleSpinBox" name="ccpmAngleY"> <property name="minimumSize">
<property name="sizePolicy"> <size>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <width>85</width>
<horstretch>0</horstretch> <height>0</height>
<verstretch>0</verstretch> </size>
</sizepolicy> </property>
</property> <property name="maximumSize">
<property name="minimumSize"> <size>
<size> <width>85</width>
<width>85</width> <height>16777215</height>
<height>0</height> </size>
</size> </property>
</property> <property name="decimals">
<property name="maximumSize"> <number>0</number>
<size> </property>
<width>85</width> <property name="maximum">
<height>16777215</height> <double>360.000000000000000</double>
</size> </property>
</property> <property name="singleStep">
<property name="decimals"> <double>15.000000000000000</double>
<number>0</number> </property>
</property> </widget>
<property name="maximum"> </item>
<double>360.000000000000000</double> <item row="4" column="1">
</property> <widget class="QDoubleSpinBox" name="ccpmAngleZ">
<property name="singleStep"> <property name="sizePolicy">
<double>15.000000000000000</double> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</property> <horstretch>0</horstretch>
</widget> <verstretch>0</verstretch>
</item> </sizepolicy>
</layout> </property>
</widget> <property name="minimumSize">
</item> <size>
<item> <width>85</width>
<spacer name="verticalSpacer_5"> <height>0</height>
<property name="orientation"> </size>
<enum>Qt::Vertical</enum> </property>
</property> <property name="maximumSize">
<property name="sizeType"> <size>
<enum>QSizePolicy::MinimumExpanding</enum> <width>85</width>
</property> <height>16777215</height>
<property name="sizeHint" stdset="0"> </size>
<size> </property>
<width>20</width> <property name="decimals">
<height>0</height> <number>0</number>
</size> </property>
</property> <property name="maximum">
</spacer> <double>360.000000000000000</double>
</item> </property>
</layout> <property name="singleStep">
</item> <double>15.000000000000000</double>
<item row="0" column="1"> </property>
<widget class="QGroupBox" name="ccpmRevoMixingBox"> </widget>
<property name="enabled"> </item>
<bool>false</bool> <item row="2" column="1">
</property> <widget class="QDoubleSpinBox" name="ccpmAngleY">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>50</width> <width>85</width>
<height>100</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>50</width> <width>85</width>
<height>600</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="title"> <property name="decimals">
<string>REVO</string> <number>0</number>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <property name="maximum">
<property name="spacing"> <double>360.000000000000000</double>
<number>0</number> </property>
</property> <property name="singleStep">
<property name="margin"> <double>15.000000000000000</double>
<number>3</number> </property>
</property> </widget>
<item> </item>
<widget class="QLabel" name="label_14"> </layout>
<property name="enabled"> </widget>
<bool>false</bool> </item>
</property> <item>
<property name="font"> <widget class="QGroupBox" name="SwashplateBox_4">
<font> <property name="sizePolicy">
<pointsize>7</pointsize> <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
</font> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
<property name="text"> </sizepolicy>
<string>100%</string> </property>
</property> <property name="maximumSize">
<property name="alignment"> <size>
<set>Qt::AlignCenter</set> <width>190</width>
</property> <height>16777215</height>
</widget> </size>
</item> </property>
<item> <property name="font">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <font>
<item> <pointsize>11</pointsize>
<spacer name="horizontalSpacer_5"> </font>
<property name="orientation"> </property>
<enum>Qt::Horizontal</enum> <property name="title">
</property> <string>CCPM Options</string>
<property name="sizeHint" stdset="0"> </property>
<size> <layout class="QGridLayout" name="gridLayout_21">
<width>5</width> <property name="horizontalSpacing">
<height>25</height> <number>3</number>
</size> </property>
</property> <property name="verticalSpacing">
</spacer> <number>2</number>
</item> </property>
<item> <property name="margin">
<widget class="QSlider" name="ccpmRevoSlider"> <number>3</number>
<property name="enabled"> </property>
<bool>false</bool> <item row="1" column="0">
</property> <widget class="QCheckBox" name="ccpmCollectivePassthrough">
<property name="sizePolicy"> <property name="text">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <string>Collective Pass through</string>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> </widget>
</sizepolicy> </item>
</property> <item row="4" column="0">
<property name="minimumSize"> <widget class="QCheckBox" name="ccpmLinkRoll">
<size> <property name="text">
<width>0</width> <string>Link Roll/Pitch</string>
<height>100</height> </property>
</size> <property name="checked">
</property> <bool>true</bool>
<property name="maximum"> </property>
<number>100</number> </widget>
</property> </item>
<property name="singleStep"> <item row="3" column="0">
<number>5</number> <widget class="QCheckBox" name="ccpmLinkCyclic">
</property> <property name="text">
<property name="orientation"> <string>Link Cyclic/Collective</string>
<enum>Qt::Vertical</enum> </property>
</property> <property name="checked">
</widget> <bool>true</bool>
</item> </property>
<item> </widget>
<spacer name="horizontalSpacer_4"> </item>
<property name="orientation"> <item row="2" column="0">
<enum>Qt::Horizontal</enum> <layout class="QHBoxLayout" name="ccpmCollectiveChannelBox">
</property> <property name="sizeConstraint">
<property name="sizeHint" stdset="0"> <enum>QLayout::SetNoConstraint</enum>
<size> </property>
<width>5</width> <item>
<height>25</height> <widget class="QLabel" name="ccpmCollectiveChLabel">
</size> <property name="enabled">
</property> <bool>true</bool>
</spacer> </property>
</item> <property name="sizePolicy">
</layout> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
</item> <horstretch>0</horstretch>
<item> <verstretch>0</verstretch>
<widget class="QLabel" name="label_13"> </sizepolicy>
<property name="enabled"> </property>
<bool>false</bool> <property name="minimumSize">
</property> <size>
<property name="font"> <width>80</width>
<font> <height>0</height>
<pointsize>7</pointsize> </size>
</font> </property>
</property> <property name="maximumSize">
<property name="text"> <size>
<string>0%</string> <width>80</width>
</property> <height>16777215</height>
<property name="alignment"> </size>
<set>Qt::AlignCenter</set> </property>
</property> <property name="font">
</widget> <font>
</item> <pointsize>11</pointsize>
<item> </font>
<widget class="QSpinBox" name="ccpmREVOspinBox"/> </property>
</item> <property name="layoutDirection">
</layout> <enum>Qt::LeftToRight</enum>
</widget> </property>
</item> <property name="text">
<item row="0" column="2"> <string>Collective Ch</string>
<widget class="QGroupBox" name="ccpmPitchMixingBox"> </property>
<property name="enabled"> <property name="alignment">
<bool>true</bool> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
<property name="sizePolicy"> <property name="wordWrap">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <bool>true</bool>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> </widget>
</sizepolicy> </item>
</property> <item>
<property name="minimumSize"> <widget class="QComboBox" name="ccpmCollectiveChannel">
<size> <property name="enabled">
<width>50</width> <bool>true</bool>
<height>100</height> </property>
</size> <property name="sizePolicy">
</property> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<property name="maximumSize"> <horstretch>0</horstretch>
<size> <verstretch>0</verstretch>
<width>50</width> </sizepolicy>
<height>600</height> </property>
</size> <property name="minimumSize">
</property> <size>
<property name="font"> <width>90</width>
<font> <height>0</height>
<pointsize>8</pointsize> </size>
</font> </property>
</property> <property name="maximumSize">
<property name="title"> <size>
<string>CCPM</string> <width>100</width>
</property> <height>16777215</height>
<property name="alignment"> </size>
<set>Qt::AlignCenter</set> </property>
</property> </widget>
<layout class="QVBoxLayout" name="verticalLayout_4"> </item>
<property name="spacing"> </layout>
<number>0</number> </item>
</property> </layout>
<property name="margin"> </widget>
<number>3</number> </item>
</property> <item>
<item> <spacer name="verticalSpacer_3">
<widget class="QLabel" name="label_15"> <property name="orientation">
<property name="enabled"> <enum>Qt::Vertical</enum>
<bool>true</bool> </property>
</property> <property name="sizeHint" stdset="0">
<property name="font"> <size>
<font> <width>20</width>
<pointsize>7</pointsize> <height>40</height>
</font> </size>
</property> </property>
<property name="text"> </spacer>
<string>Collective</string> </item>
</property> </layout>
<property name="scaledContents"> </item>
<bool>true</bool> <item row="0" column="10">
</property> <layout class="QVBoxLayout" name="ccpmSwashImageBox_2">
<property name="alignment"> <property name="topMargin">
<set>Qt::AlignCenter</set> <number>0</number>
</property> </property>
</widget> <property name="rightMargin">
</item> <number>0</number>
<item> </property>
<layout class="QHBoxLayout" name="horizontalLayout"> <item>
<item> <widget class="QGroupBox" name="ccpmSwashImageBox">
<spacer name="horizontalSpacer_3"> <property name="sizePolicy">
<property name="orientation"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<enum>Qt::Horizontal</enum> <horstretch>1</horstretch>
</property> <verstretch>1</verstretch>
<property name="sizeHint" stdset="0"> </sizepolicy>
<size> </property>
<width>5</width> <property name="minimumSize">
<height>25</height> <size>
</size> <width>200</width>
</property> <height>200</height>
</spacer> </size>
</item> </property>
<item> <property name="maximumSize">
<widget class="QSlider" name="ccpmCollectiveSlider"> <size>
<property name="enabled"> <width>600</width>
<bool>true</bool> <height>600</height>
</property> </size>
<property name="sizePolicy"> </property>
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <property name="sizeIncrement">
<horstretch>0</horstretch> <size>
<verstretch>0</verstretch> <width>10</width>
</sizepolicy> <height>10</height>
</property> </size>
<property name="minimumSize"> </property>
<size> <property name="baseSize">
<width>0</width> <size>
<height>100</height> <width>200</width>
</size> <height>200</height>
</property> </size>
<property name="maximum"> </property>
<number>100</number> <property name="font">
</property> <font>
<property name="singleStep"> <pointsize>11</pointsize>
<number>5</number> </font>
</property> </property>
<property name="value"> <property name="title">
<number>50</number> <string>Swashplate Layout</string>
</property> </property>
<property name="orientation"> <property name="alignment">
<enum>Qt::Vertical</enum> <set>Qt::AlignHCenter|Qt::AlignTop</set>
</property> </property>
</widget> <property name="flat">
</item> <bool>false</bool>
<item> </property>
<spacer name="horizontalSpacer_2"> <property name="checkable">
<property name="orientation"> <bool>false</bool>
<enum>Qt::Horizontal</enum> </property>
</property> <layout class="QGridLayout" name="gridLayout_10">
<property name="sizeHint" stdset="0"> <property name="horizontalSpacing">
<size> <number>3</number>
<width>5</width> </property>
<height>25</height> <property name="margin">
</size> <number>3</number>
</property> </property>
</spacer> <item row="0" column="0">
</item> <widget class="QSplitter" name="splitter_3">
</layout> <property name="orientation">
</item> <enum>Qt::Vertical</enum>
<item> </property>
<widget class="QLabel" name="label_16"> <widget class="QGraphicsView" name="SwashplateImage">
<property name="enabled"> <property name="sizePolicy">
<bool>true</bool> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
</property> <horstretch>1</horstretch>
<property name="font"> <verstretch>1</verstretch>
<font> </sizepolicy>
<pointsize>7</pointsize> </property>
</font> <property name="minimumSize">
</property> <size>
<property name="text"> <width>10</width>
<string>Cyclic</string> <height>10</height>
</property> </size>
<property name="alignment"> </property>
<set>Qt::AlignCenter</set> <property name="maximumSize">
</property> <size>
</widget> <width>1000</width>
</item> <height>1000</height>
<item> </size>
<widget class="QSpinBox" name="ccpmCollectivespinBox"> </property>
<property name="maximum"> <property name="sizeIncrement">
<number>100</number> <size>
</property> <width>10</width>
<property name="singleStep"> <height>10</height>
<number>5</number> </size>
</property> </property>
<property name="value"> <property name="baseSize">
<number>50</number> <size>
</property> <width>200</width>
</widget> <height>200</height>
</item> </size>
</layout> </property>
</widget> <property name="frameShape">
</item> <enum>QFrame::Box</enum>
<item row="0" column="3"> </property>
<layout class="QVBoxLayout" name="verticalLayout_9"> <property name="frameShadow">
<item> <enum>QFrame::Plain</enum>
<widget class="QGroupBox" name="ccpmSwashImageBox"> </property>
<property name="sizePolicy"> <property name="lineWidth">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <number>1</number>
<horstretch>1</horstretch> </property>
<verstretch>1</verstretch> <property name="verticalScrollBarPolicy">
</sizepolicy> <enum>Qt::ScrollBarAlwaysOff</enum>
</property> </property>
<property name="minimumSize"> <property name="horizontalScrollBarPolicy">
<size> <enum>Qt::ScrollBarAlwaysOff</enum>
<width>200</width> </property>
<height>200</height> <property name="backgroundBrush">
</size> <brush brushstyle="DiagCrossPattern">
</property> <color alpha="50">
<property name="maximumSize"> <red>112</red>
<size> <green>184</green>
<width>600</width> <blue>138</blue>
<height>600</height> </color>
</size> </brush>
</property> </property>
<property name="sizeIncrement"> <property name="foregroundBrush">
<size> <brush brushstyle="SolidPattern">
<width>10</width> <color alpha="0">
<height>10</height> <red>127</red>
</size> <green>127</green>
</property> <blue>127</blue>
<property name="baseSize"> </color>
<size> </brush>
<width>200</width> </property>
<height>200</height> <property name="sceneRect">
</size> <rectf>
</property> <x>0.000000000000000</x>
<property name="title"> <y>0.000000000000000</y>
<string>Swashplate Layout</string> <width>400.000000000000000</width>
</property> <height>400.000000000000000</height>
<property name="alignment"> </rectf>
<set>Qt::AlignHCenter|Qt::AlignTop</set> </property>
</property> <property name="alignment">
<property name="flat"> <set>Qt::AlignCenter</set>
<bool>false</bool> </property>
</property> <property name="resizeAnchor">
<property name="checkable"> <enum>QGraphicsView::AnchorViewCenter</enum>
<bool>false</bool> </property>
</property> </widget>
<layout class="QGridLayout" name="gridLayout_10"> </widget>
<property name="horizontalSpacing"> </item>
<number>3</number> </layout>
</property> </widget>
<property name="margin"> </item>
<number>3</number> </layout>
</property> </item>
<item row="0" column="0"> <item row="0" column="3">
<widget class="QSplitter" name="splitter_3"> <layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="orientation"> <property name="sizeConstraint">
<enum>Qt::Vertical</enum> <enum>QLayout::SetNoConstraint</enum>
</property> </property>
<widget class="QGraphicsView" name="SwashplateImage"> <property name="rightMargin">
<property name="sizePolicy"> <number>3</number>
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> </property>
<horstretch>1</horstretch> <property name="bottomMargin">
<verstretch>1</verstretch> <number>3</number>
</sizepolicy> </property>
</property> <item>
<property name="minimumSize"> <widget class="QGroupBox" name="ccpmRevoMixingBox">
<size> <property name="enabled">
<width>200</width> <bool>true</bool>
<height>200</height> </property>
</size> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<property name="maximumSize"> <horstretch>0</horstretch>
<size> <verstretch>0</verstretch>
<width>500</width> </sizepolicy>
<height>500</height> </property>
</size> <property name="minimumSize">
</property> <size>
<property name="sizeIncrement"> <width>50</width>
<size> <height>100</height>
<width>10</width> </size>
<height>10</height> </property>
</size> <property name="maximumSize">
</property> <size>
<property name="baseSize"> <width>50</width>
<size> <height>600</height>
<width>200</width> </size>
<height>200</height> </property>
</size> <property name="font">
</property> <font>
<property name="frameShape"> <pointsize>8</pointsize>
<enum>QFrame::Box</enum> </font>
</property> </property>
<property name="frameShadow"> <property name="title">
<enum>QFrame::Plain</enum> <string>REVO</string>
</property> </property>
<property name="lineWidth"> <layout class="QVBoxLayout" name="verticalLayout_3">
<number>1</number> <property name="spacing">
</property> <number>0</number>
<property name="verticalScrollBarPolicy"> </property>
<enum>Qt::ScrollBarAlwaysOff</enum> <property name="margin">
</property> <number>3</number>
<property name="horizontalScrollBarPolicy"> </property>
<enum>Qt::ScrollBarAlwaysOff</enum> <item>
</property> <widget class="QLabel" name="label_14">
<property name="backgroundBrush"> <property name="enabled">
<brush brushstyle="DiagCrossPattern"> <bool>false</bool>
<color alpha="50"> </property>
<red>112</red> <property name="font">
<green>184</green> <font>
<blue>138</blue> <pointsize>7</pointsize>
</color> </font>
</brush> </property>
</property> <property name="text">
<property name="foregroundBrush"> <string>100%</string>
<brush brushstyle="SolidPattern"> </property>
<color alpha="0"> <property name="alignment">
<red>127</red> <set>Qt::AlignCenter</set>
<green>127</green> </property>
<blue>127</blue> </widget>
</color> </item>
</brush> <item>
</property> <layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="sceneRect"> <item>
<rectf> <spacer name="horizontalSpacer_5">
<x>0.000000000000000</x> <property name="orientation">
<y>0.000000000000000</y> <enum>Qt::Horizontal</enum>
<width>400.000000000000000</width> </property>
<height>400.000000000000000</height> <property name="sizeHint" stdset="0">
</rectf> <size>
</property> <width>5</width>
<property name="alignment"> <height>25</height>
<set>Qt::AlignCenter</set> </size>
</property> </property>
<property name="resizeAnchor"> </spacer>
<enum>QGraphicsView::AnchorViewCenter</enum> </item>
</property> <item>
</widget> <widget class="QSlider" name="ccpmRevoSlider">
</widget> <property name="enabled">
</item> <bool>true</bool>
</layout> </property>
</widget> <property name="sizePolicy">
</item> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
</layout> <horstretch>0</horstretch>
</item> <verstretch>0</verstretch>
</layout> </sizepolicy>
</widget> </property>
<widget class="QWidget" name="SwashPlateLevel"> <property name="minimumSize">
<attribute name="title"> <size>
<string>Swashplate Levelling</string> <width>0</width>
</attribute> <height>100</height>
<layout class="QGridLayout" name="gridLayout_8"> </size>
<property name="margin"> </property>
<number>3</number> <property name="maximum">
</property> <number>100</number>
<property name="spacing"> </property>
<number>3</number> <property name="singleStep">
</property> <number>5</number>
<item row="0" column="0"> </property>
<layout class="QVBoxLayout" name="verticalLayout_8"> <property name="orientation">
<property name="leftMargin"> <enum>Qt::Vertical</enum>
<number>3</number> </property>
</property> </widget>
<item> </item>
<widget class="QGroupBox" name="SwashLvlInstructionsBox"> <item>
<property name="sizePolicy"> <spacer name="horizontalSpacer_4">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <property name="orientation">
<horstretch>0</horstretch> <enum>Qt::Horizontal</enum>
<verstretch>0</verstretch> </property>
</sizepolicy> <property name="sizeHint" stdset="0">
</property> <size>
<property name="minimumSize"> <width>5</width>
<size> <height>25</height>
<width>228</width> </size>
<height>0</height> </property>
</size> </spacer>
</property> </item>
<property name="title"> </layout>
<string>Commands</string> </item>
</property> <item>
<layout class="QVBoxLayout" name="verticalLayout"> <widget class="QLabel" name="label_13">
<property name="margin"> <property name="enabled">
<number>3</number> <bool>false</bool>
</property> </property>
<item> <property name="font">
<layout class="QHBoxLayout" name="horizontalLayout_9"> <font>
<property name="spacing"> <pointsize>7</pointsize>
<number>0</number> </font>
</property> </property>
<item> <property name="text">
<widget class="QPushButton" name="SwashLvlStartButton"> <string>0%</string>
<property name="minimumSize"> </property>
<size> <property name="alignment">
<width>85</width> <set>Qt::AlignCenter</set>
<height>0</height> </property>
</size> </widget>
</property> </item>
<property name="maximumSize"> <item>
<size> <widget class="QSpinBox" name="ccpmREVOspinBox"/>
<width>85</width> </item>
<height>16777215</height> </layout>
</size> </widget>
</property> </item>
<property name="text"> <item>
<string>Start</string> <widget class="QGroupBox" name="ccpmPitchMixingBox">
</property> <property name="enabled">
</widget> <bool>true</bool>
</item> </property>
<item> <property name="sizePolicy">
<widget class="QPushButton" name="SwashLvlNextButton"> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<property name="enabled"> <horstretch>0</horstretch>
<bool>false</bool> <verstretch>0</verstretch>
</property> </sizepolicy>
<property name="minimumSize"> </property>
<size> <property name="minimumSize">
<width>85</width> <size>
<height>0</height> <width>50</width>
</size> <height>100</height>
</property> </size>
<property name="maximumSize"> </property>
<size> <property name="maximumSize">
<width>85</width> <size>
<height>16777215</height> <width>50</width>
</size> <height>600</height>
</property> </size>
<property name="text"> </property>
<string>Next</string> <property name="font">
</property> <font>
</widget> <pointsize>8</pointsize>
</item> </font>
</layout> </property>
</item> <property name="title">
<item> <string>CCPM</string>
<widget class="QTextEdit" name="SwashLvlStepInstruction"> </property>
<property name="minimumSize"> <property name="alignment">
<size> <set>Qt::AlignCenter</set>
<width>0</width> </property>
<height>150</height> <layout class="QVBoxLayout" name="verticalLayout_4">
</size> <property name="spacing">
</property> <number>0</number>
<property name="maximumSize"> </property>
<size> <property name="margin">
<width>220</width> <number>3</number>
<height>450</height> </property>
</size> <item>
</property> <widget class="QLabel" name="label_15">
<property name="horizontalScrollBarPolicy"> <property name="enabled">
<enum>Qt::ScrollBarAlwaysOff</enum> <bool>true</bool>
</property> </property>
<property name="readOnly"> <property name="font">
<bool>true</bool> <font>
</property> <pointsize>7</pointsize>
</widget> </font>
</item> </property>
<item> <property name="text">
<layout class="QGridLayout" name="gridLayout_3"> <string>Collective</string>
<item row="0" column="0"> </property>
<widget class="QPushButton" name="SwashLvlCancelButton"> <property name="scaledContents">
<property name="enabled"> <bool>true</bool>
<bool>false</bool> </property>
</property> <property name="alignment">
<property name="minimumSize"> <set>Qt::AlignCenter</set>
<size> </property>
<width>170</width> </widget>
<height>0</height> </item>
</size> <item>
</property> <layout class="QHBoxLayout" name="horizontalLayout">
<property name="maximumSize"> <item>
<size> <spacer name="horizontalSpacer_3">
<width>170</width> <property name="orientation">
<height>16777215</height> <enum>Qt::Horizontal</enum>
</size> </property>
</property> <property name="sizeHint" stdset="0">
<property name="text"> <size>
<string>Cancel</string> <width>5</width>
</property> <height>25</height>
</widget> </size>
</item> </property>
<item row="1" column="0"> </spacer>
<widget class="QPushButton" name="SwashLvlFinishButton"> </item>
<property name="enabled"> <item>
<bool>false</bool> <widget class="QSlider" name="ccpmCollectiveSlider">
</property> <property name="enabled">
<property name="minimumSize"> <bool>true</bool>
<size> </property>
<width>170</width> <property name="sizePolicy">
<height>0</height> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
</size> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
<property name="maximumSize"> </sizepolicy>
<size> </property>
<width>170</width> <property name="minimumSize">
<height>16777215</height> <size>
</size> <width>0</width>
</property> <height>100</height>
<property name="text"> </size>
<string>Finish</string> </property>
</property> <property name="maximum">
</widget> <number>100</number>
</item> </property>
</layout> <property name="singleStep">
</item> <number>5</number>
</layout> </property>
</widget> <property name="value">
</item> <number>50</number>
<item> </property>
<widget class="QGroupBox" name="SwashLvlStatusBox"> <property name="orientation">
<property name="sizePolicy"> <enum>Qt::Vertical</enum>
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> </property>
<horstretch>0</horstretch> </widget>
<verstretch>0</verstretch> </item>
</sizepolicy> <item>
</property> <spacer name="horizontalSpacer_2">
<property name="minimumSize"> <property name="orientation">
<size> <enum>Qt::Horizontal</enum>
<width>200</width> </property>
<height>0</height> <property name="sizeHint" stdset="0">
</size> <size>
</property> <width>5</width>
<property name="title"> <height>25</height>
<string>Status</string> </size>
</property> </property>
<layout class="QGridLayout" name="gridLayout_22"> </spacer>
<property name="horizontalSpacing"> </item>
<number>3</number> </layout>
</property> </item>
<property name="verticalSpacing"> <item>
<number>2</number> <widget class="QLabel" name="label_16">
</property> <property name="enabled">
<property name="margin"> <bool>true</bool>
<number>3</number> </property>
</property> <property name="font">
<item row="1" column="0"> <font>
<widget class="QListWidget" name="SwashLvlStepList"> <pointsize>7</pointsize>
<property name="minimumSize"> </font>
<size> </property>
<width>220</width> <property name="text">
<height>0</height> <string>Cyclic</string>
</size> </property>
</property> <property name="alignment">
<property name="maximumSize"> <set>Qt::AlignCenter</set>
<size> </property>
<width>190</width> </widget>
<height>125</height> </item>
</size> <item>
</property> <widget class="QSpinBox" name="ccpmCollectivespinBox">
<property name="editTriggers"> <property name="maximum">
<set>QAbstractItemView::NoEditTriggers</set> <number>100</number>
</property> </property>
<property name="alternatingRowColors"> <property name="singleStep">
<bool>true</bool> <number>5</number>
</property> </property>
<property name="selectionMode"> <property name="value">
<enum>QAbstractItemView::NoSelection</enum> <number>50</number>
</property> </property>
<property name="selectionBehavior"> </widget>
<enum>QAbstractItemView::SelectRows</enum> </item>
</property> </layout>
<item> </widget>
<property name="text"> </item>
<string>Neutral</string> <item>
</property> <widget class="QGroupBox" name="ccpmCollectiveScalingBox">
<property name="icon"> <property name="enabled">
<iconset> <bool>true</bool>
<normaloff>:/configgadget/images/none.png</normaloff> </property>
<normalon>:/configgadget/images/ok.png</normalon>:/configgadget/images/none.png</iconset> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
</item> <horstretch>0</horstretch>
<item> <verstretch>0</verstretch>
<property name="text"> </sizepolicy>
<string>Max</string> </property>
</property> <property name="minimumSize">
<property name="icon"> <size>
<iconset> <width>50</width>
<normaloff>:/configgadget/images/none.png</normaloff> <height>100</height>
<normalon>:/configgadget/images/ok.png</normalon>:/configgadget/images/none.png</iconset> </size>
</property> </property>
</item> <property name="maximumSize">
<item> <size>
<property name="text"> <width>50</width>
<string>Min</string> <height>600</height>
</property> </size>
<property name="icon"> </property>
<iconset> <property name="font">
<normaloff>:/configgadget/images/none.png</normaloff> <font>
<normalon>:/configgadget/images/ok.png</normalon>:/configgadget/images/none.png</iconset> <pointsize>8</pointsize>
</property> </font>
<property name="flags"> </property>
<set>ItemIsSelectable|ItemIsEnabled</set> <property name="title">
</property> <string>Collective</string>
</item> </property>
<item> <property name="alignment">
<property name="text"> <set>Qt::AlignCenter</set>
<string>Verify</string> </property>
</property> <layout class="QVBoxLayout" name="verticalLayout_12">
<property name="icon"> <property name="spacing">
<iconset> <number>0</number>
<normaloff>:/configgadget/images/none.png</normaloff> </property>
<normalon>:/configgadget/images/ok.png</normalon>:/configgadget/images/none.png</iconset> <property name="margin">
</property> <number>3</number>
<property name="flags"> </property>
<set>ItemIsEnabled</set> <item>
</property> <layout class="QHBoxLayout" name="horizontalLayout_11">
</item> <item>
</widget> <spacer name="horizontalSpacer_15">
</item> <property name="orientation">
</layout> <enum>Qt::Horizontal</enum>
</widget> </property>
</item> <property name="sizeHint" stdset="0">
<item> <size>
<spacer name="verticalSpacer_4"> <width>5</width>
<property name="orientation"> <height>25</height>
<enum>Qt::Vertical</enum> </size>
</property> </property>
<property name="sizeType"> </spacer>
<enum>QSizePolicy::MinimumExpanding</enum> </item>
</property> <item>
<property name="sizeHint" stdset="0"> <widget class="QSlider" name="ccpmCollectiveScale">
<size> <property name="enabled">
<width>20</width> <bool>true</bool>
<height>0</height> </property>
</size> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
</spacer> <horstretch>0</horstretch>
</item> <verstretch>0</verstretch>
</layout> </sizepolicy>
</item> </property>
<item row="0" column="1"> <property name="minimumSize">
<widget class="QGroupBox" name="SwashLvlccpmSliderBox"> <size>
<property name="enabled"> <width>0</width>
<bool>true</bool> <height>100</height>
</property> </size>
<property name="sizePolicy"> </property>
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <property name="maximum">
<horstretch>0</horstretch> <number>100</number>
<verstretch>0</verstretch> </property>
</sizepolicy> <property name="singleStep">
</property> <number>5</number>
<property name="minimumSize"> </property>
<size> <property name="value">
<width>50</width> <number>50</number>
<height>100</height> </property>
</size> <property name="orientation">
</property> <enum>Qt::Vertical</enum>
<property name="maximumSize"> </property>
<size> </widget>
<width>50</width> </item>
<height>600</height> <item>
</size> <spacer name="horizontalSpacer_16">
</property> <property name="orientation">
<property name="font"> <enum>Qt::Horizontal</enum>
<font> </property>
<pointsize>8</pointsize> <property name="sizeHint" stdset="0">
</font> <size>
</property> <width>5</width>
<property name="title"> <height>25</height>
<string>Position</string> </size>
</property> </property>
<property name="alignment"> </spacer>
<set>Qt::AlignCenter</set> </item>
</property> </layout>
<layout class="QVBoxLayout" name="verticalLayout_5"> </item>
<property name="spacing"> <item>
<number>0</number> <widget class="QSpinBox" name="ccpmCollectiveScaleBox">
</property> <property name="maximum">
<property name="margin"> <number>100</number>
<number>3</number> </property>
</property> <property name="singleStep">
<item> <number>5</number>
<widget class="QLabel" name="label_17"> </property>
<property name="enabled"> <property name="value">
<bool>true</bool> <number>50</number>
</property> </property>
<property name="font"> </widget>
<font> </item>
<pointsize>7</pointsize> </layout>
</font> </widget>
</property> </item>
<property name="text"> <item>
<string>Max</string> <widget class="QGroupBox" name="ccpmCyclicScalingBox">
</property> <property name="enabled">
<property name="scaledContents"> <bool>true</bool>
<bool>true</bool> </property>
</property> <property name="sizePolicy">
<property name="alignment"> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<set>Qt::AlignCenter</set> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
</widget> </sizepolicy>
</item> </property>
<item> <property name="minimumSize">
<layout class="QHBoxLayout" name="horizontalLayout_4"> <size>
<item> <width>50</width>
<spacer name="horizontalSpacer_7"> <height>100</height>
<property name="orientation"> </size>
<enum>Qt::Horizontal</enum> </property>
</property> <property name="maximumSize">
<property name="sizeHint" stdset="0"> <size>
<size> <width>50</width>
<width>5</width> <height>600</height>
<height>25</height> </size>
</size> </property>
</property> <property name="font">
</spacer> <font>
</item> <pointsize>8</pointsize>
<item> </font>
<widget class="QSlider" name="SwashLvlPositionSlider"> </property>
<property name="enabled"> <property name="title">
<bool>true</bool> <string>Cyclic</string>
</property> </property>
<property name="sizePolicy"> <property name="alignment">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <set>Qt::AlignCenter</set>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="checkable">
</sizepolicy> <bool>false</bool>
</property> </property>
<property name="minimumSize"> <layout class="QVBoxLayout" name="verticalLayout_7">
<size> <property name="spacing">
<width>0</width> <number>0</number>
<height>100</height> </property>
</size> <property name="margin">
</property> <number>3</number>
<property name="maximum"> </property>
<number>100</number> <item>
</property> <layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="singleStep"> <item>
<number>5</number> <spacer name="horizontalSpacer_9">
</property> <property name="orientation">
<property name="value"> <enum>Qt::Horizontal</enum>
<number>50</number> </property>
</property> <property name="sizeHint" stdset="0">
<property name="orientation"> <size>
<enum>Qt::Vertical</enum> <width>5</width>
</property> <height>25</height>
</widget> </size>
</item> </property>
<item> </spacer>
<spacer name="horizontalSpacer_8"> </item>
<property name="orientation"> <item>
<enum>Qt::Horizontal</enum> <widget class="QSlider" name="ccpmCyclicScale">
</property> <property name="enabled">
<property name="sizeHint" stdset="0"> <bool>true</bool>
<size> </property>
<width>5</width> <property name="sizePolicy">
<height>25</height> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
</size> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
</spacer> </sizepolicy>
</item> </property>
</layout> <property name="minimumSize">
</item> <size>
<item> <width>0</width>
<widget class="QLabel" name="label_18"> <height>100</height>
<property name="enabled"> </size>
<bool>true</bool> </property>
</property> <property name="maximum">
<property name="font"> <number>100</number>
<font> </property>
<pointsize>7</pointsize> <property name="singleStep">
</font> <number>5</number>
</property> </property>
<property name="text"> <property name="value">
<string>Min</string> <number>50</number>
</property> </property>
<property name="alignment"> <property name="orientation">
<set>Qt::AlignCenter</set> <enum>Qt::Vertical</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QSpinBox" name="SwashLvlPositionSpinBox"> <spacer name="horizontalSpacer_10">
<property name="maximum"> <property name="orientation">
<number>100</number> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="singleStep"> <property name="sizeHint" stdset="0">
<number>5</number> <size>
</property> <width>5</width>
<property name="value"> <height>25</height>
<number>50</number> </size>
</property> </property>
</widget> </spacer>
</item> </item>
</layout> </layout>
</widget> </item>
</item> <item>
<item row="0" column="2"> <widget class="QSpinBox" name="ccpmCyclicScaleBox">
<widget class="QGroupBox" name="SwashLvlccpmSwashImageBox"> <property name="maximum">
<property name="sizePolicy"> <number>100</number>
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> </property>
<horstretch>1</horstretch> <property name="singleStep">
<verstretch>1</verstretch> <number>5</number>
</sizepolicy> </property>
</property> <property name="value">
<property name="minimumSize"> <number>50</number>
<size> </property>
<width>200</width> </widget>
<height>200</height> </item>
</size> </layout>
</property> </widget>
<property name="maximumSize"> </item>
<size> <item>
<width>600</width> <widget class="QGroupBox" name="ccpmPitchScalingBox">
<height>600</height> <property name="enabled">
</size> <bool>true</bool>
</property> </property>
<property name="sizeIncrement"> <property name="sizePolicy">
<size> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<width>10</width> <horstretch>0</horstretch>
<height>10</height> <verstretch>0</verstretch>
</size> </sizepolicy>
</property> </property>
<property name="baseSize"> <property name="minimumSize">
<size> <size>
<width>200</width> <width>50</width>
<height>200</height> <height>100</height>
</size> </size>
</property> </property>
<property name="title"> <property name="maximumSize">
<string>Swashplate Adjustment</string> <size>
</property> <width>50</width>
<property name="alignment"> <height>600</height>
<set>Qt::AlignHCenter|Qt::AlignTop</set> </size>
</property> </property>
<property name="flat"> <property name="font">
<bool>false</bool> <font>
</property> <pointsize>8</pointsize>
<property name="checkable"> </font>
<bool>false</bool> </property>
</property> <property name="title">
<layout class="QGridLayout" name="gridLayout_11"> <string>Pitch</string>
<property name="horizontalSpacing"> </property>
<number>3</number> <property name="alignment">
</property> <set>Qt::AlignCenter</set>
<property name="margin"> </property>
<number>3</number> <layout class="QVBoxLayout" name="verticalLayout_13">
</property> <property name="spacing">
<item row="0" column="0"> <number>0</number>
<widget class="QSplitter" name="splitter_4"> </property>
<property name="orientation"> <property name="margin">
<enum>Qt::Vertical</enum> <number>3</number>
</property> </property>
<widget class="QGraphicsView" name="SwashLvlSwashplateImage"> <item>
<property name="sizePolicy"> <layout class="QHBoxLayout" name="horizontalLayout_12">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <item>
<horstretch>1</horstretch> <spacer name="horizontalSpacer_17">
<verstretch>1</verstretch> <property name="orientation">
</sizepolicy> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="minimumSize"> <property name="sizeHint" stdset="0">
<size> <size>
<width>200</width> <width>5</width>
<height>200</height> <height>25</height>
</size> </size>
</property> </property>
<property name="maximumSize"> </spacer>
<size> </item>
<width>500</width> <item>
<height>500</height> <widget class="QSlider" name="ccpmPitchScale">
</size> <property name="enabled">
</property> <bool>true</bool>
<property name="sizeIncrement"> </property>
<size> <property name="sizePolicy">
<width>10</width> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<height>10</height> <horstretch>0</horstretch>
</size> <verstretch>0</verstretch>
</property> </sizepolicy>
<property name="baseSize"> </property>
<size> <property name="minimumSize">
<width>200</width> <size>
<height>200</height> <width>0</width>
</size> <height>100</height>
</property> </size>
<property name="frameShape"> </property>
<enum>QFrame::Box</enum> <property name="maximum">
</property> <number>100</number>
<property name="frameShadow"> </property>
<enum>QFrame::Plain</enum> <property name="singleStep">
</property> <number>5</number>
<property name="lineWidth"> </property>
<number>1</number> <property name="value">
</property> <number>50</number>
<property name="midLineWidth"> </property>
<number>0</number> <property name="orientation">
</property> <enum>Qt::Vertical</enum>
<property name="verticalScrollBarPolicy"> </property>
<enum>Qt::ScrollBarAlwaysOff</enum> </widget>
</property> </item>
<property name="horizontalScrollBarPolicy"> <item>
<enum>Qt::ScrollBarAlwaysOff</enum> <spacer name="horizontalSpacer_18">
</property> <property name="orientation">
<property name="backgroundBrush"> <enum>Qt::Horizontal</enum>
<brush brushstyle="DiagCrossPattern"> </property>
<color alpha="25"> <property name="sizeHint" stdset="0">
<red>126</red> <size>
<green>176</green> <width>5</width>
<blue>220</blue> <height>25</height>
</color> </size>
</brush> </property>
</property> </spacer>
<property name="foregroundBrush"> </item>
<brush brushstyle="NoBrush"> </layout>
<color alpha="255"> </item>
<red>0</red> <item>
<green>0</green> <widget class="QSpinBox" name="ccpmPitchScaleBox">
<blue>0</blue> <property name="maximum">
</color> <number>100</number>
</brush> </property>
</property> <property name="singleStep">
<property name="sceneRect"> <number>5</number>
<rectf> </property>
<x>0.000000000000000</x> <property name="value">
<y>0.000000000000000</y> <number>50</number>
<width>400.000000000000000</width> </property>
<height>400.000000000000000</height> </widget>
</rectf> </item>
</property> </layout>
<property name="alignment"> </widget>
<set>Qt::AlignCenter</set> </item>
</property> <item>
<property name="resizeAnchor"> <widget class="QGroupBox" name="ccpmRollScalingBox">
<enum>QGraphicsView::AnchorViewCenter</enum> <property name="enabled">
</property> <bool>true</bool>
</widget> </property>
</widget> <property name="sizePolicy">
</item> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
</layout> <horstretch>0</horstretch>
</widget> <verstretch>0</verstretch>
</item> </sizepolicy>
</layout> </property>
</widget> <property name="minimumSize">
<widget class="QWidget" name="CurveTab"> <size>
<attribute name="title"> <width>50</width>
<string>Curve settings</string> <height>100</height>
</attribute> </size>
<layout class="QGridLayout" name="gridLayout_7"> </property>
<property name="margin"> <property name="maximumSize">
<number>3</number> <size>
</property> <width>50</width>
<property name="spacing"> <height>600</height>
<number>3</number> </size>
</property> </property>
<item row="0" column="0"> <property name="font">
<layout class="QHBoxLayout" name="horizontalLayout_5"> <font>
<item> <pointsize>8</pointsize>
<widget class="QComboBox" name="CurveType"> </font>
<property name="minimumSize"> </property>
<size> <property name="title">
<width>150</width> <string>Roll</string>
<height>0</height> </property>
</size> <property name="alignment">
</property> <set>Qt::AlignCenter</set>
<property name="font"> </property>
<font> <layout class="QVBoxLayout" name="verticalLayout_10">
<pointsize>10</pointsize> <property name="spacing">
</font> <number>0</number>
</property> </property>
<property name="toolTip"> <property name="margin">
<string>Select aircraft type here</string> <number>3</number>
</property> </property>
<item> <item>
<property name="text"> <layout class="QHBoxLayout" name="horizontalLayout_8">
<string>Linear</string> <item>
</property> <spacer name="horizontalSpacer_11">
</item> <property name="orientation">
<item> <enum>Qt::Horizontal</enum>
<property name="text"> </property>
<string>Flat</string> <property name="sizeHint" stdset="0">
</property> <size>
</item> <width>5</width>
<item> <height>25</height>
<property name="text"> </size>
<string>Step</string> </property>
</property> </spacer>
</item> </item>
<item> <item>
<property name="text"> <widget class="QSlider" name="ccpmRollScale">
<string>Exp</string> <property name="enabled">
</property> <bool>true</bool>
</item> </property>
<item> <property name="sizePolicy">
<property name="text"> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<string>Log</string> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
</item> </sizepolicy>
<item> </property>
<property name="text"> <property name="minimumSize">
<string>Custom</string> <size>
</property> <width>0</width>
</item> <height>100</height>
</widget> </size>
</item> </property>
<item> <property name="maximum">
<spacer name="horizontalSpacer"> <number>100</number>
<property name="orientation"> </property>
<enum>Qt::Horizontal</enum> <property name="singleStep">
</property> <number>5</number>
<property name="sizeHint" stdset="0"> </property>
<size> <property name="value">
<width>40</width> <number>50</number>
<height>20</height> </property>
</size> <property name="orientation">
</property> <enum>Qt::Vertical</enum>
</spacer> </property>
</item> </widget>
<item> </item>
<widget class="QLabel" name="label_2"> <item>
<property name="sizePolicy"> <spacer name="horizontalSpacer_12">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <property name="orientation">
<horstretch>0</horstretch> <enum>Qt::Horizontal</enum>
<verstretch>0</verstretch> </property>
</sizepolicy> <property name="sizeHint" stdset="0">
</property> <size>
<property name="text"> <width>5</width>
<string>Number of points</string> <height>25</height>
</property> </size>
</widget> </property>
</item> </spacer>
<item> </item>
<widget class="QSpinBox" name="NumCurvePoints"> </layout>
<property name="sizePolicy"> </item>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <item>
<horstretch>0</horstretch> <widget class="QSpinBox" name="ccpmRollScaleBox">
<verstretch>0</verstretch> <property name="maximum">
</sizepolicy> <number>100</number>
</property> </property>
<property name="minimum"> <property name="singleStep">
<number>2</number> <number>5</number>
</property> </property>
<property name="maximum"> <property name="value">
<number>10</number> <number>50</number>
</property> </property>
<property name="value"> </widget>
<number>5</number> </item>
</property> </layout>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item row="1" column="0"> </layout>
<layout class="QGridLayout" name="gridLayout_2"> </widget>
<item row="0" column="0"> <widget class="QWidget" name="SwashPlateLevel">
<widget class="QLabel" name="CurveLabel1"> <attribute name="title">
<property name="text"> <string>Swashplate Levelling</string>
<string>Min</string> </attribute>
</property> <layout class="QGridLayout" name="gridLayout_8">
</widget> <property name="margin">
</item> <number>3</number>
<item row="0" column="1"> </property>
<widget class="QLabel" name="CurveLabel2"> <property name="spacing">
<property name="text"> <number>3</number>
<string>Max</string> </property>
</property> <item row="0" column="0">
</widget> <layout class="QVBoxLayout" name="verticalLayout_8">
</item> <property name="leftMargin">
<item row="0" column="2"> <number>3</number>
<widget class="QLabel" name="CurveLabel3"> </property>
<property name="text"> <item>
<string>Step point</string> <widget class="QGroupBox" name="SwashLvlInstructionsBox">
</property> <property name="sizePolicy">
</widget> <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
</item> <horstretch>0</horstretch>
<item row="1" column="0"> <verstretch>0</verstretch>
<widget class="QDoubleSpinBox" name="CurveValue1"> </sizepolicy>
<property name="decimals"> </property>
<number>1</number> <property name="minimumSize">
</property> <size>
<property name="maximum"> <width>228</width>
<double>10.000000000000000</double> <height>0</height>
</property> </size>
</widget> </property>
</item> <property name="title">
<item row="1" column="1"> <string>Commands</string>
<widget class="QDoubleSpinBox" name="CurveValue2"> </property>
<property name="decimals"> <layout class="QVBoxLayout" name="verticalLayout">
<number>1</number> <property name="margin">
</property> <number>3</number>
<property name="maximum"> </property>
<double>10.000000000000000</double> <item>
</property> <layout class="QHBoxLayout" name="horizontalLayout_9">
<property name="value"> <property name="spacing">
<double>1.000000000000000</double> <number>0</number>
</property> </property>
</widget> <item>
</item> <widget class="QPushButton" name="SwashLvlStartButton">
<item row="1" column="2"> <property name="minimumSize">
<widget class="QDoubleSpinBox" name="CurveValue3"> <size>
<property name="decimals"> <width>85</width>
<number>1</number> <height>0</height>
</property> </size>
<property name="maximum"> </property>
<double>100.000000000000000</double> <property name="maximumSize">
</property> <size>
<property name="value"> <width>85</width>
<double>50.000000000000000</double> <height>16777215</height>
</property> </size>
</widget> </property>
</item> <property name="text">
</layout> <string>Start</string>
</item> </property>
<item row="2" column="0"> </widget>
<layout class="QHBoxLayout" name="horizontalLayout_6"> </item>
<item> <item>
<widget class="QComboBox" name="CurveToGenerate"> <widget class="QPushButton" name="SwashLvlNextButton">
<property name="sizePolicy"> <property name="enabled">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <bool>false</bool>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="minimumSize">
</sizepolicy> <size>
</property> <width>85</width>
<property name="minimumSize"> <height>0</height>
<size> </size>
<width>150</width> </property>
<height>0</height> <property name="maximumSize">
</size> <size>
</property> <width>85</width>
<property name="font"> <height>16777215</height>
<font> </size>
<pointsize>10</pointsize> </property>
</font> <property name="text">
</property> <string>Next</string>
<property name="toolTip"> </property>
<string>Select aircraft type here</string> </widget>
</property> </item>
<item> </layout>
<property name="text"> </item>
<string>Throttle</string> <item>
</property> <widget class="QTextEdit" name="SwashLvlStepInstruction">
</item> <property name="minimumSize">
<item> <size>
<property name="text"> <width>0</width>
<string>Pitch</string> <height>150</height>
</property> </size>
</item> </property>
</widget> <property name="maximumSize">
</item> <size>
<item> <width>220</width>
<widget class="QPushButton" name="ccpmGenerateCurve"> <height>450</height>
<property name="sizePolicy"> </size>
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> </property>
<horstretch>0</horstretch> <property name="horizontalScrollBarPolicy">
<verstretch>0</verstretch> <enum>Qt::ScrollBarAlwaysOff</enum>
</sizepolicy> </property>
</property> <property name="readOnly">
<property name="minimumSize"> <bool>true</bool>
<size> </property>
<width>150</width> </widget>
<height>0</height> </item>
</size> <item>
</property> <layout class="QGridLayout" name="gridLayout_3">
<property name="toolTip"> <item row="0" column="0">
<string>Generate curves based on settings</string> <widget class="QPushButton" name="SwashLvlCancelButton">
</property> <property name="enabled">
<property name="text"> <bool>false</bool>
<string>&lt;-- Generate Curve</string> </property>
</property> <property name="minimumSize">
</widget> <size>
</item> <width>170</width>
<item> <height>0</height>
<spacer name="horizontalSpacer_6"> </size>
<property name="orientation"> </property>
<enum>Qt::Horizontal</enum> <property name="maximumSize">
</property> <size>
<property name="sizeHint" stdset="0"> <width>170</width>
<size> <height>16777215</height>
<width>40</width> </size>
<height>20</height> </property>
</size> <property name="text">
</property> <string>Cancel</string>
</spacer> </property>
</item> </widget>
</layout> </item>
</item> <item row="1" column="0">
<item row="3" column="0"> <widget class="QPushButton" name="SwashLvlFinishButton">
<layout class="QHBoxLayout" name="horizontalLayout_3"> <property name="enabled">
<property name="spacing"> <bool>false</bool>
<number>3</number> </property>
</property> <property name="minimumSize">
<item> <size>
<widget class="QTableWidget" name="CurveSettings"> <width>170</width>
<property name="sizePolicy"> <height>0</height>
<sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding"> </size>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="maximumSize">
</sizepolicy> <size>
</property> <width>170</width>
<property name="minimumSize"> <height>16777215</height>
<size> </size>
<width>250</width> </property>
<height>200</height> <property name="text">
</size> <string>Finish</string>
</property> </property>
<property name="maximumSize"> </widget>
<size> </item>
<width>250</width> </layout>
<height>273</height> </item>
</size> </layout>
</property> </widget>
<property name="font"> </item>
<font> <item>
<pointsize>8</pointsize> <widget class="QGroupBox" name="SwashLvlStatusBox">
</font> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Fixed" vsizetype="Maximum">
<property name="verticalScrollBarPolicy"> <horstretch>0</horstretch>
<enum>Qt::ScrollBarAsNeeded</enum> <verstretch>0</verstretch>
</property> </sizepolicy>
<property name="horizontalScrollBarPolicy"> </property>
<enum>Qt::ScrollBarAsNeeded</enum> <property name="minimumSize">
</property> <size>
<property name="autoScroll"> <width>200</width>
<bool>true</bool> <height>0</height>
</property> </size>
<property name="alternatingRowColors"> </property>
<bool>true</bool> <property name="title">
</property> <string>Status</string>
<property name="cornerButtonEnabled"> </property>
<bool>true</bool> <layout class="QGridLayout" name="gridLayout_22">
</property> <property name="horizontalSpacing">
<attribute name="horizontalHeaderCascadingSectionResizes"> <number>3</number>
<bool>true</bool> </property>
</attribute> <property name="verticalSpacing">
<attribute name="horizontalHeaderStretchLastSection"> <number>2</number>
<bool>true</bool> </property>
</attribute> <property name="margin">
<attribute name="verticalHeaderDefaultSectionSize"> <number>3</number>
<number>25</number> </property>
</attribute> <item row="1" column="0">
<attribute name="verticalHeaderMinimumSectionSize"> <widget class="QListWidget" name="SwashLvlStepList">
<number>25</number> <property name="minimumSize">
</attribute> <size>
<row> <width>220</width>
<property name="text"> <height>0</height>
<string>0%</string> </size>
</property> </property>
</row> <property name="maximumSize">
<row> <size>
<property name="text"> <width>190</width>
<string>25%</string> <height>125</height>
</property> </size>
</row> </property>
<row> <property name="editTriggers">
<property name="text"> <set>QAbstractItemView::NoEditTriggers</set>
<string>50%</string> </property>
</property> <property name="alternatingRowColors">
</row> <bool>true</bool>
<row> </property>
<property name="text"> <property name="selectionMode">
<string>75%</string> <enum>QAbstractItemView::NoSelection</enum>
</property> </property>
</row> <property name="selectionBehavior">
<row> <enum>QAbstractItemView::SelectRows</enum>
<property name="text"> </property>
<string>100%</string> <item>
</property> <property name="text">
</row> <string>Neutral</string>
<row> </property>
<property name="text"> <property name="icon">
<string>none</string> <iconset>
</property> <normaloff>:/configgadget/images/none.png</normaloff>
</row> <normalon>:/configgadget/images/ok.png</normalon>:/configgadget/images/none.png</iconset>
<row> </property>
<property name="text"> </item>
<string>none</string> <item>
</property> <property name="text">
</row> <string>Max</string>
<row> </property>
<property name="text"> <property name="icon">
<string>none</string> <iconset>
</property> <normaloff>:/configgadget/images/none.png</normaloff>
</row> <normalon>:/configgadget/images/ok.png</normalon>:/configgadget/images/none.png</iconset>
<row> </property>
<property name="text"> </item>
<string>none</string> <item>
</property> <property name="text">
</row> <string>Min</string>
<row> </property>
<property name="text"> <property name="icon">
<string>none</string> <iconset>
</property> <normaloff>:/configgadget/images/none.png</normaloff>
</row> <normalon>:/configgadget/images/ok.png</normalon>:/configgadget/images/none.png</iconset>
<column> </property>
<property name="text"> <property name="flags">
<string>Throttle Curve</string> <set>ItemIsSelectable|ItemIsEnabled</set>
</property> </property>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item>
</property> <property name="text">
</column> <string>Verify</string>
<column> </property>
<property name="text"> <property name="icon">
<string>Blade Pitch Curve</string> <iconset>
</property> <normaloff>:/configgadget/images/none.png</normaloff>
<property name="textAlignment"> <normalon>:/configgadget/images/ok.png</normalon>:/configgadget/images/none.png</iconset>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </property>
</property> <property name="flags">
</column> <set>ItemIsEnabled</set>
<item row="0" column="0"> </property>
<property name="text"> </item>
<string>0.000</string> </widget>
</property> </item>
<property name="textAlignment"> </layout>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </widget>
</property> </item>
</item> <item>
<item row="0" column="1"> <spacer name="verticalSpacer_4">
<property name="text"> <property name="orientation">
<string>0.000</string> <enum>Qt::Vertical</enum>
</property> </property>
<property name="textAlignment"> <property name="sizeType">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <enum>QSizePolicy::MinimumExpanding</enum>
</property> </property>
</item> <property name="sizeHint" stdset="0">
<item row="1" column="0"> <size>
<property name="text"> <width>20</width>
<string>0.250</string> <height>0</height>
</property> </size>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </spacer>
</property> </item>
</item> </layout>
<item row="1" column="1"> </item>
<property name="text"> <item row="0" column="1">
<string>0.250</string> <widget class="QGroupBox" name="SwashLvlccpmSliderBox">
</property> <property name="enabled">
<property name="textAlignment"> <bool>true</bool>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </property>
</property> <property name="sizePolicy">
</item> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<item row="2" column="0"> <horstretch>0</horstretch>
<property name="text"> <verstretch>0</verstretch>
<string>0.500</string> </sizepolicy>
</property> </property>
<property name="textAlignment"> <property name="minimumSize">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <size>
</property> <width>50</width>
</item> <height>100</height>
<item row="2" column="1"> </size>
<property name="text"> </property>
<string>0.500</string> <property name="maximumSize">
</property> <size>
<property name="textAlignment"> <width>50</width>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <height>600</height>
</property> </size>
</item> </property>
<item row="3" column="0"> <property name="font">
<property name="text"> <font>
<string>0.750</string> <pointsize>8</pointsize>
</property> </font>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <property name="title">
</property> <string>Position</string>
</item> </property>
<item row="3" column="1"> <property name="alignment">
<property name="text"> <set>Qt::AlignCenter</set>
<string>0.750</string> </property>
</property> <layout class="QVBoxLayout" name="verticalLayout_5">
<property name="textAlignment"> <property name="spacing">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <number>0</number>
</property> </property>
</item> <property name="margin">
<item row="4" column="0"> <number>3</number>
<property name="text"> </property>
<string>1.000</string> <item>
</property> <widget class="QLabel" name="label_17">
<property name="textAlignment"> <property name="enabled">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <bool>true</bool>
</property> </property>
</item> <property name="font">
<item row="4" column="1"> <font>
<property name="text"> <pointsize>7</pointsize>
<string>1.000</string> </font>
</property> </property>
<property name="textAlignment"> <property name="text">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <string>Max</string>
</property> </property>
</item> <property name="scaledContents">
<item row="5" column="0"> <bool>true</bool>
<property name="text"> </property>
<string>-</string> <property name="alignment">
</property> <set>Qt::AlignCenter</set>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </widget>
</property> </item>
</item> <item>
<item row="5" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="text"> <item>
<string>-</string> <spacer name="horizontalSpacer_7">
</property> <property name="orientation">
<property name="textAlignment"> <enum>Qt::Horizontal</enum>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </property>
</property> <property name="sizeHint" stdset="0">
</item> <size>
<item row="6" column="0"> <width>5</width>
<property name="text"> <height>25</height>
<string>-</string> </size>
</property> </property>
<property name="textAlignment"> </spacer>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </item>
</property> <item>
</item> <widget class="QSlider" name="SwashLvlPositionSlider">
<item row="6" column="1"> <property name="enabled">
<property name="text"> <bool>true</bool>
<string>-</string> </property>
</property> <property name="sizePolicy">
<property name="textAlignment"> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
</item> </sizepolicy>
<item row="7" column="0"> </property>
<property name="text"> <property name="minimumSize">
<string>-</string> <size>
</property> <width>0</width>
<property name="textAlignment"> <height>100</height>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </size>
</property> </property>
</item> <property name="maximum">
<item row="7" column="1"> <number>100</number>
<property name="text"> </property>
<string>-</string> <property name="singleStep">
</property> <number>5</number>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <property name="value">
</property> <number>50</number>
</item> </property>
<item row="8" column="0"> <property name="orientation">
<property name="text"> <enum>Qt::Vertical</enum>
<string>-</string> </property>
</property> </widget>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item>
</property> <spacer name="horizontalSpacer_8">
</item> <property name="orientation">
<item row="8" column="1"> <enum>Qt::Horizontal</enum>
<property name="text"> </property>
<string>-</string> <property name="sizeHint" stdset="0">
</property> <size>
<property name="textAlignment"> <width>5</width>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <height>25</height>
</property> </size>
</item> </property>
<item row="9" column="0"> </spacer>
<property name="text"> </item>
<string>-</string> </layout>
</property> </item>
<property name="textAlignment"> <item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <widget class="QLabel" name="label_18">
</property> <property name="enabled">
</item> <bool>true</bool>
<item row="9" column="1"> </property>
<property name="text"> <property name="font">
<string>-</string> <font>
</property> <pointsize>7</pointsize>
<property name="textAlignment"> </font>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </property>
</property> <property name="text">
</item> <string>Min</string>
</widget> </property>
</item> <property name="alignment">
<item> <set>Qt::AlignCenter</set>
<widget class="QGroupBox" name="ThrottleCurveBox"> </property>
<property name="sizePolicy"> </widget>
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> </item>
<horstretch>1</horstretch> <item>
<verstretch>1</verstretch> <widget class="QSpinBox" name="SwashLvlPositionSpinBox">
</sizepolicy> <property name="maximum">
</property> <number>100</number>
<property name="minimumSize"> </property>
<size> <property name="singleStep">
<width>100</width> <number>5</number>
<height>100</height> </property>
</size> <property name="value">
</property> <number>50</number>
<property name="sizeIncrement"> </property>
<size> </widget>
<width>10</width> </item>
<height>10</height> </layout>
</size> </widget>
</property> </item>
<property name="baseSize"> <item row="0" column="2">
<size> <widget class="QGroupBox" name="SwashLvlccpmSwashImageBox">
<width>100</width> <property name="sizePolicy">
<height>100</height> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
</size> <horstretch>1</horstretch>
</property> <verstretch>1</verstretch>
<property name="layoutDirection"> </sizepolicy>
<enum>Qt::LeftToRight</enum> </property>
</property> <property name="minimumSize">
<property name="title"> <size>
<string>Throttle Curve</string> <width>200</width>
</property> <height>200</height>
<property name="alignment"> </size>
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> </property>
</property> <property name="maximumSize">
<property name="flat"> <size>
<bool>false</bool> <width>600</width>
</property> <height>600</height>
<layout class="QGridLayout" name="gridLayout"> </size>
<property name="margin"> </property>
<number>0</number> <property name="sizeIncrement">
</property> <size>
<property name="spacing"> <width>10</width>
<number>0</number> <height>10</height>
</property> </size>
<item row="0" column="0"> </property>
<widget class="MixerCurveWidget" name="ThrottleCurve" native="true"> <property name="baseSize">
<property name="sizePolicy"> <size>
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <width>200</width>
<horstretch>1</horstretch> <height>200</height>
<verstretch>1</verstretch> </size>
</sizepolicy> </property>
</property> <property name="title">
<property name="minimumSize"> <string>Swashplate Adjustment</string>
<size> </property>
<width>50</width> <property name="alignment">
<height>50</height> <set>Qt::AlignHCenter|Qt::AlignTop</set>
</size> </property>
</property> <property name="flat">
<property name="maximumSize"> <bool>false</bool>
<size> </property>
<width>1000</width> <property name="checkable">
<height>1000</height> <bool>false</bool>
</size> </property>
</property> <layout class="QGridLayout" name="gridLayout_11">
<property name="sizeIncrement"> <property name="horizontalSpacing">
<size> <number>3</number>
<width>10</width> </property>
<height>10</height> <property name="margin">
</size> <number>3</number>
</property> </property>
<property name="baseSize"> <item row="0" column="0">
<size> <widget class="QSplitter" name="splitter_4">
<width>200</width> <property name="orientation">
<height>200</height> <enum>Qt::Vertical</enum>
</size> </property>
</property> <widget class="QGraphicsView" name="SwashLvlSwashplateImage">
</widget> <property name="sizePolicy">
</item> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
</layout> <horstretch>1</horstretch>
</widget> <verstretch>1</verstretch>
</item> </sizepolicy>
<item> </property>
<widget class="QGroupBox" name="PitchCurveBox"> <property name="minimumSize">
<property name="sizePolicy"> <size>
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <width>10</width>
<horstretch>1</horstretch> <height>10</height>
<verstretch>1</verstretch> </size>
</sizepolicy> </property>
</property> <property name="maximumSize">
<property name="minimumSize"> <size>
<size> <width>1000</width>
<width>100</width> <height>1000</height>
<height>100</height> </size>
</size> </property>
</property> <property name="sizeIncrement">
<property name="sizeIncrement"> <size>
<size> <width>10</width>
<width>10</width> <height>10</height>
<height>10</height> </size>
</size> </property>
</property> <property name="baseSize">
<property name="baseSize"> <size>
<size> <width>200</width>
<width>100</width> <height>200</height>
<height>100</height> </size>
</size> </property>
</property> <property name="frameShape">
<property name="title"> <enum>QFrame::Box</enum>
<string>Pitch Curve</string> </property>
</property> <property name="frameShadow">
<layout class="QGridLayout" name="gridLayout_5"> <enum>QFrame::Plain</enum>
<property name="margin"> </property>
<number>0</number> <property name="lineWidth">
</property> <number>1</number>
<property name="spacing"> </property>
<number>0</number> <property name="midLineWidth">
</property> <number>0</number>
<item row="0" column="0"> </property>
<widget class="MixerCurveWidget" name="PitchCurve" native="true"> <property name="verticalScrollBarPolicy">
<property name="sizePolicy"> <enum>Qt::ScrollBarAlwaysOff</enum>
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> </property>
<horstretch>1</horstretch> <property name="horizontalScrollBarPolicy">
<verstretch>1</verstretch> <enum>Qt::ScrollBarAlwaysOff</enum>
</sizepolicy> </property>
</property> <property name="backgroundBrush">
<property name="minimumSize"> <brush brushstyle="DiagCrossPattern">
<size> <color alpha="25">
<width>50</width> <red>126</red>
<height>50</height> <green>176</green>
</size> <blue>220</blue>
</property> </color>
<property name="maximumSize"> </brush>
<size> </property>
<width>1000</width> <property name="foregroundBrush">
<height>1000</height> <brush brushstyle="NoBrush">
</size> <color alpha="255">
</property> <red>0</red>
<property name="sizeIncrement"> <green>0</green>
<size> <blue>0</blue>
<width>10</width> </color>
<height>10</height> </brush>
</size> </property>
</property> <property name="sceneRect">
<property name="baseSize"> <rectf>
<size> <x>0.000000000000000</x>
<width>200</width> <y>0.000000000000000</y>
<height>200</height> <width>400.000000000000000</width>
</size> <height>400.000000000000000</height>
</property> </rectf>
</widget> </property>
</item> <property name="alignment">
</layout> <set>Qt::AlignCenter</set>
</widget> </property>
</item> <property name="resizeAnchor">
</layout> <enum>QGraphicsView::AnchorViewCenter</enum>
</item> </property>
<item row="4" column="0"> </widget>
<spacer name="verticalSpacer_2"> </widget>
<property name="orientation"> </item>
<enum>Qt::Vertical</enum> </layout>
</property> </widget>
<property name="sizeType"> </item>
<enum>QSizePolicy::Preferred</enum> </layout>
</property> </widget>
<property name="sizeHint" stdset="0"> <widget class="QWidget" name="CurveTab">
<size> <attribute name="title">
<width>20</width> <string>Curve settings</string>
<height>0</height> </attribute>
</size> <layout class="QGridLayout" name="gridLayout_7">
</property> <property name="margin">
</spacer> <number>3</number>
</item> </property>
</layout> <property name="spacing">
</widget> <number>3</number>
<widget class="QWidget" name="AdvancedTab"> </property>
<attribute name="title"> <item row="0" column="0">
<string>Advanced settings</string> <layout class="QHBoxLayout" name="horizontalLayout_5">
</attribute> <item>
<layout class="QGridLayout" name="gridLayout_4"> <widget class="QComboBox" name="CurveType">
<property name="margin"> <property name="minimumSize">
<number>3</number> <size>
</property> <width>150</width>
<property name="spacing"> <height>0</height>
<number>3</number> </size>
</property> </property>
<item row="0" column="0"> <property name="font">
<widget class="QTableWidget" name="ccpmAdvancedSettingsTable"> <font>
<property name="sizePolicy"> <pointsize>10</pointsize>
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> </font>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="toolTip">
</sizepolicy> <string>Select aircraft type here</string>
</property> </property>
<property name="minimumSize"> <item>
<size> <property name="text">
<width>0</width> <string>Linear</string>
<height>200</height> </property>
</size> </item>
</property> <item>
<property name="maximumSize"> <property name="text">
<size> <string>Flat</string>
<width>1000</width> </property>
<height>300</height> </item>
</size> <item>
</property> <property name="text">
<property name="verticalScrollBarPolicy"> <string>Step</string>
<enum>Qt::ScrollBarAlwaysOff</enum> </property>
</property> </item>
<property name="horizontalScrollBarPolicy"> <item>
<enum>Qt::ScrollBarAlwaysOff</enum> <property name="text">
</property> <string>Exp</string>
<property name="autoScroll"> </property>
<bool>true</bool> </item>
</property> <item>
<property name="alternatingRowColors"> <property name="text">
<bool>true</bool> <string>Log</string>
</property> </property>
<property name="selectionMode"> </item>
<enum>QAbstractItemView::NoSelection</enum> <item>
</property> <property name="text">
<property name="wordWrap"> <string>Custom</string>
<bool>false</bool> </property>
</property> </item>
<property name="cornerButtonEnabled"> </widget>
<bool>true</bool> </item>
</property> <item>
<attribute name="horizontalHeaderDefaultSectionSize"> <spacer name="horizontalSpacer">
<number>75</number> <property name="orientation">
</attribute> <enum>Qt::Horizontal</enum>
<attribute name="horizontalHeaderMinimumSectionSize"> </property>
<number>20</number> <property name="sizeHint" stdset="0">
</attribute> <size>
<row> <width>40</width>
<property name="text"> <height>20</height>
<string>Engine</string> </size>
</property> </property>
</row> </spacer>
<row> </item>
<property name="text"> <item>
<string>Tail Rotor</string> <widget class="QLabel" name="label_2">
</property> <property name="sizePolicy">
</row> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<row> <horstretch>0</horstretch>
<property name="text"> <verstretch>0</verstretch>
<string>Servo W</string> </sizepolicy>
</property> </property>
</row> <property name="text">
<row> <string>Number of points</string>
<property name="text"> </property>
<string>Servo X</string> </widget>
</property> </item>
</row> <item>
<row> <widget class="QSpinBox" name="NumCurvePoints">
<property name="text"> <property name="sizePolicy">
<string>Servo Y</string> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
</property> <horstretch>0</horstretch>
</row> <verstretch>0</verstretch>
<row> </sizepolicy>
<property name="text"> </property>
<string>Servo Z</string> <property name="minimum">
</property> <number>2</number>
</row> </property>
<column> <property name="maximum">
<property name="text"> <number>10</number>
<string>Channel</string> </property>
</property> <property name="value">
</column> <number>5</number>
<column> </property>
<property name="text"> </widget>
<string>Curve 1</string> </item>
</property> </layout>
</column> </item>
<column> <item row="1" column="0">
<property name="text"> <layout class="QGridLayout" name="gridLayout_2">
<string>Curve 2</string> <item row="0" column="0">
</property> <widget class="QLabel" name="CurveLabel1">
</column> <property name="text">
<column> <string>Min</string>
<property name="text"> </property>
<string>Roll</string> </widget>
</property> </item>
</column> <item row="0" column="1">
<column> <widget class="QLabel" name="CurveLabel2">
<property name="text"> <property name="text">
<string>Pitch</string> <string>Max</string>
</property> </property>
</column> </widget>
<column> </item>
<property name="text"> <item row="0" column="2">
<string>Yaw</string> <widget class="QLabel" name="CurveLabel3">
</property> <property name="text">
</column> <string>Step point</string>
<item row="0" column="0"> </property>
<property name="text"> </widget>
<string>-</string> </item>
</property> <item row="1" column="0">
<property name="textAlignment"> <widget class="QDoubleSpinBox" name="CurveValue1">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <property name="decimals">
</property> <number>1</number>
</item> </property>
<item row="0" column="1"> <property name="maximum">
<property name="text"> <double>10.000000000000000</double>
<string>-</string> </property>
</property> </widget>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item row="1" column="1">
</property> <widget class="QDoubleSpinBox" name="CurveValue2">
</item> <property name="decimals">
<item row="0" column="2"> <number>1</number>
<property name="text"> </property>
<string>-</string> <property name="maximum">
</property> <double>10.000000000000000</double>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <property name="value">
</property> <double>1.000000000000000</double>
</item> </property>
<item row="0" column="3"> </widget>
<property name="text"> </item>
<string>-</string> <item row="1" column="2">
</property> <widget class="QDoubleSpinBox" name="CurveValue3">
<property name="textAlignment"> <property name="decimals">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <number>1</number>
</property> </property>
</item> <property name="maximum">
<item row="0" column="4"> <double>100.000000000000000</double>
<property name="text"> </property>
<string>-</string> <property name="value">
</property> <double>50.000000000000000</double>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </widget>
</property> </item>
</item> </layout>
<item row="0" column="5"> </item>
<property name="text"> <item row="2" column="0">
<string>-</string> <layout class="QHBoxLayout" name="horizontalLayout_6">
</property> <item>
<property name="textAlignment"> <widget class="QComboBox" name="CurveToGenerate">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
</item> <horstretch>0</horstretch>
<item row="1" column="0"> <verstretch>0</verstretch>
<property name="text"> </sizepolicy>
<string>-</string> </property>
</property> <property name="minimumSize">
<property name="textAlignment"> <size>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <width>150</width>
</property> <height>0</height>
</item> </size>
<item row="1" column="1"> </property>
<property name="text"> <property name="font">
<string>-</string> <font>
</property> <pointsize>10</pointsize>
<property name="textAlignment"> </font>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </property>
</property> <property name="toolTip">
</item> <string>Select aircraft type here</string>
<item row="1" column="2"> </property>
<property name="text"> <item>
<string>-</string> <property name="text">
</property> <string>Throttle</string>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </item>
</property> <item>
</item> <property name="text">
<item row="1" column="3"> <string>Pitch</string>
<property name="text"> </property>
<string>-</string> </item>
</property> </widget>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item>
</property> <widget class="QPushButton" name="ccpmGenerateCurve">
</item> <property name="sizePolicy">
<item row="1" column="4"> <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<property name="text"> <horstretch>0</horstretch>
<string>-</string> <verstretch>0</verstretch>
</property> </sizepolicy>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <property name="minimumSize">
</property> <size>
</item> <width>150</width>
<item row="1" column="5"> <height>0</height>
<property name="text"> </size>
<string>-</string> </property>
</property> <property name="toolTip">
<property name="textAlignment"> <string>Generate curves based on settings</string>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </property>
</property> <property name="text">
</item> <string>&lt;-- Generate Curve</string>
<item row="2" column="0"> </property>
<property name="text"> </widget>
<string>-</string> </item>
</property> <item>
<property name="textAlignment"> <spacer name="horizontalSpacer_6">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <property name="orientation">
</property> <enum>Qt::Horizontal</enum>
</item> </property>
<item row="2" column="1"> <property name="sizeHint" stdset="0">
<property name="text"> <size>
<string>-</string> <width>40</width>
</property> <height>20</height>
<property name="textAlignment"> </size>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </property>
</property> </spacer>
</item> </item>
<item row="2" column="2"> </layout>
<property name="text"> </item>
<string>-</string> <item row="3" column="0">
</property> <layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="textAlignment"> <property name="spacing">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <number>3</number>
</property> </property>
</item> <item>
<item row="2" column="3"> <widget class="QTableWidget" name="CurveSettings">
<property name="text"> <property name="sizePolicy">
<string>-</string> <sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
</property> <horstretch>0</horstretch>
<property name="textAlignment"> <verstretch>0</verstretch>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </sizepolicy>
</property> </property>
</item> <property name="minimumSize">
<item row="2" column="4"> <size>
<property name="text"> <width>250</width>
<string>-</string> <height>200</height>
</property> </size>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <property name="maximumSize">
</property> <size>
</item> <width>250</width>
<item row="2" column="5"> <height>273</height>
<property name="text"> </size>
<string>-</string> </property>
</property> <property name="font">
<property name="textAlignment"> <font>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <pointsize>8</pointsize>
</property> </font>
</item> </property>
<item row="3" column="0"> <property name="verticalScrollBarPolicy">
<property name="text"> <enum>Qt::ScrollBarAsNeeded</enum>
<string>-</string> </property>
</property> <property name="horizontalScrollBarPolicy">
<property name="textAlignment"> <enum>Qt::ScrollBarAsNeeded</enum>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </property>
</property> <property name="autoScroll">
</item> <bool>true</bool>
<item row="3" column="1"> </property>
<property name="text"> <property name="alternatingRowColors">
<string>-</string> <bool>true</bool>
</property> </property>
<property name="textAlignment"> <property name="cornerButtonEnabled">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <bool>true</bool>
</property> </property>
</item> <attribute name="horizontalHeaderCascadingSectionResizes">
<item row="3" column="2"> <bool>true</bool>
<property name="text"> </attribute>
<string>-</string> <attribute name="horizontalHeaderStretchLastSection">
</property> <bool>true</bool>
<property name="textAlignment"> </attribute>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <attribute name="verticalHeaderDefaultSectionSize">
</property> <number>25</number>
</item> </attribute>
<item row="3" column="3"> <attribute name="verticalHeaderMinimumSectionSize">
<property name="text"> <number>25</number>
<string>-</string> </attribute>
</property> <row>
<property name="textAlignment"> <property name="text">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <string>0%</string>
</property> </property>
</item> </row>
<item row="3" column="4"> <row>
<property name="text"> <property name="text">
<string>-</string> <string>25%</string>
</property> </property>
<property name="textAlignment"> </row>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <row>
</property> <property name="text">
</item> <string>50%</string>
<item row="3" column="5"> </property>
<property name="text"> </row>
<string>-</string> <row>
</property> <property name="text">
<property name="textAlignment"> <string>75%</string>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </property>
</property> </row>
</item> <row>
<item row="4" column="0"> <property name="text">
<property name="text"> <string>100%</string>
<string>-</string> </property>
</property> </row>
<property name="textAlignment"> <row>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <property name="text">
</property> <string>none</string>
</item> </property>
<item row="4" column="1"> </row>
<property name="text"> <row>
<string>-</string> <property name="text">
</property> <string>none</string>
<property name="textAlignment"> </property>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> </row>
</property> <row>
</item> <property name="text">
<item row="4" column="2"> <string>none</string>
<property name="text"> </property>
<string>-</string> </row>
</property> <row>
<property name="textAlignment"> <property name="text">
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <string>none</string>
</property> </property>
</item> </row>
<item row="4" column="3"> <row>
<property name="text"> <property name="text">
<string>-</string> <string>none</string>
</property> </property>
<property name="textAlignment"> </row>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <column>
</property> <property name="text">
</item> <string>Throttle Curve</string>
<item row="4" column="4"> </property>
<property name="text"> <property name="textAlignment">
<string>-</string> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property> </property>
<property name="textAlignment"> </column>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <column>
</property> <property name="text">
</item> <string>Blade Pitch Curve</string>
<item row="4" column="5"> </property>
<property name="text"> <property name="textAlignment">
<string>-</string> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property> </property>
<property name="textAlignment"> </column>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item row="0" column="0">
</property> <property name="text">
</item> <string>0.000</string>
<item row="5" column="0"> </property>
<property name="text"> <property name="textAlignment">
<string>-</string> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property> </property>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item row="0" column="1">
</property> <property name="text">
</item> <string>0.000</string>
<item row="5" column="1"> </property>
<property name="text"> <property name="textAlignment">
<string>-</string> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property> </property>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item row="1" column="0">
</property> <property name="text">
</item> <string>0.250</string>
<item row="5" column="2"> </property>
<property name="text"> <property name="textAlignment">
<string>-</string> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property> </property>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item row="1" column="1">
</property> <property name="text">
</item> <string>0.250</string>
<item row="5" column="3"> </property>
<property name="text"> <property name="textAlignment">
<string>-</string> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property> </property>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item row="2" column="0">
</property> <property name="text">
</item> <string>0.500</string>
<item row="5" column="4"> </property>
<property name="text"> <property name="textAlignment">
<string>-</string> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property> </property>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item row="2" column="1">
</property> <property name="text">
</item> <string>0.500</string>
<item row="5" column="5"> </property>
<property name="text"> <property name="textAlignment">
<string>-</string> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property> </property>
<property name="textAlignment"> </item>
<set>AlignHCenter|AlignVCenter|AlignCenter</set> <item row="3" column="0">
</property> <property name="text">
</item> <string>0.750</string>
</widget> </property>
</item> <property name="textAlignment">
<item row="1" column="0"> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<spacer name="verticalSpacer"> </property>
<property name="orientation"> </item>
<enum>Qt::Vertical</enum> <item row="3" column="1">
</property> <property name="text">
<property name="sizeType"> <string>0.750</string>
<enum>QSizePolicy::MinimumExpanding</enum> </property>
</property> <property name="textAlignment">
<property name="sizeHint" stdset="0"> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<size> </property>
<width>20</width> </item>
<height>40</height> <item row="4" column="0">
</size> <property name="text">
</property> <string>1.000</string>
</spacer> </property>
</item> <property name="textAlignment">
</layout> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
</widget> </property>
</widget> </item>
</item> <item row="4" column="1">
</layout> <property name="text">
</item> <string>1.000</string>
</layout> </property>
</widget> <property name="textAlignment">
<customwidgets> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<customwidget> </property>
<class>MixerCurveWidget</class> </item>
<extends>QWidget</extends> <item row="5" column="0">
<header>mixercurvewidget.h</header> <property name="text">
<container>1</container> <string>-</string>
</customwidget> </property>
</customwidgets> <property name="textAlignment">
<tabstops> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<tabstop>ccpmType</tabstop> </property>
<tabstop>TabObject</tabstop> </item>
<tabstop>ccpmEngineChannel</tabstop> <item row="5" column="1">
<tabstop>ccpmTailChannel</tabstop> <property name="text">
<tabstop>ccpmServoWChannel</tabstop> <string>-</string>
<tabstop>ccpmServoXChannel</tabstop> </property>
<tabstop>ccpmServoYChannel</tabstop> <property name="textAlignment">
<tabstop>ccpmServoZChannel</tabstop> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<tabstop>ccpmSingleServo</tabstop> </property>
<tabstop>ccpmAngleW</tabstop> </item>
<tabstop>ccpmAngleX</tabstop> <item row="6" column="0">
<tabstop>ccpmAngleY</tabstop> <property name="text">
<tabstop>ccpmAngleZ</tabstop> <string>-</string>
<tabstop>ccpmCorrectionAngle</tabstop> </property>
<tabstop>ccpmRevoSlider</tabstop> <property name="textAlignment">
<tabstop>ccpmREVOspinBox</tabstop> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<tabstop>ccpmCollectiveSlider</tabstop> </property>
<tabstop>ccpmCollectivespinBox</tabstop> </item>
<tabstop>SwashplateImage</tabstop> <item row="6" column="1">
<tabstop>SwashLvlStartButton</tabstop> <property name="text">
<tabstop>SwashLvlNextButton</tabstop> <string>-</string>
<tabstop>SwashLvlStepInstruction</tabstop> </property>
<tabstop>SwashLvlCancelButton</tabstop> <property name="textAlignment">
<tabstop>SwashLvlFinishButton</tabstop> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<tabstop>SwashLvlStepList</tabstop> </property>
<tabstop>SwashLvlPositionSlider</tabstop> </item>
<tabstop>SwashLvlPositionSpinBox</tabstop> <item row="7" column="0">
<tabstop>SwashLvlSwashplateImage</tabstop> <property name="text">
<tabstop>CurveType</tabstop> <string>-</string>
<tabstop>NumCurvePoints</tabstop> </property>
<tabstop>CurveValue1</tabstop> <property name="textAlignment">
<tabstop>CurveValue2</tabstop> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<tabstop>CurveValue3</tabstop> </property>
<tabstop>CurveToGenerate</tabstop> </item>
<tabstop>ccpmGenerateCurve</tabstop> <item row="7" column="1">
<tabstop>CurveSettings</tabstop> <property name="text">
<tabstop>ccpmAdvancedSettingsTable</tabstop> <string>-</string>
</tabstops> </property>
<resources/> <property name="textAlignment">
<connections> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<connection> </property>
<sender>ccpmCollectiveSlider</sender> </item>
<signal>sliderMoved(int)</signal> <item row="8" column="0">
<receiver>ccpmCollectivespinBox</receiver> <property name="text">
<slot>setValue(int)</slot> <string>-</string>
<hints> </property>
<hint type="sourcelabel"> <property name="textAlignment">
<x>283</x> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<y>400</y> </property>
</hint> </item>
<hint type="destinationlabel"> <item row="8" column="1">
<x>294</x> <property name="text">
<y>550</y> <string>-</string>
</hint> </property>
</hints> <property name="textAlignment">
</connection> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<connection> </property>
<sender>ccpmCollectivespinBox</sender> </item>
<signal>valueChanged(int)</signal> <item row="9" column="0">
<receiver>ccpmCollectiveSlider</receiver> <property name="text">
<slot>setValue(int)</slot> <string>-</string>
<hints> </property>
<hint type="sourcelabel"> <property name="textAlignment">
<x>294</x> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<y>550</y> </property>
</hint> </item>
<hint type="destinationlabel"> <item row="9" column="1">
<x>283</x> <property name="text">
<y>482</y> <string>-</string>
</hint> </property>
</hints> <property name="textAlignment">
</connection> <set>AlignHCenter|AlignVCenter|AlignCenter</set>
<connection> </property>
<sender>ccpmREVOspinBox</sender> </item>
<signal>valueChanged(int)</signal> </widget>
<receiver>ccpmRevoSlider</receiver> </item>
<slot>setValue(int)</slot> <item>
<hints> <widget class="QGroupBox" name="ThrottleCurveBox">
<hint type="sourcelabel"> <property name="sizePolicy">
<x>241</x> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<y>550</y> <horstretch>1</horstretch>
</hint> <verstretch>1</verstretch>
<hint type="destinationlabel"> </sizepolicy>
<x>230</x> </property>
<y>484</y> <property name="minimumSize">
</hint> <size>
</hints> <width>100</width>
</connection> <height>100</height>
<connection> </size>
<sender>ccpmRevoSlider</sender> </property>
<signal>sliderMoved(int)</signal> <property name="sizeIncrement">
<receiver>ccpmREVOspinBox</receiver> <size>
<slot>setValue(int)</slot> <width>10</width>
<hints> <height>10</height>
<hint type="sourcelabel"> </size>
<x>230</x> </property>
<y>313</y> <property name="baseSize">
</hint> <size>
<hint type="destinationlabel"> <width>100</width>
<x>241</x> <height>100</height>
<y>550</y> </size>
</hint> </property>
</hints> <property name="layoutDirection">
</connection> <enum>Qt::LeftToRight</enum>
<connection> </property>
<sender>SwashLvlPositionSlider</sender> <property name="title">
<signal>sliderMoved(int)</signal> <string>Throttle Curve</string>
<receiver>SwashLvlPositionSpinBox</receiver> </property>
<slot>setValue(int)</slot> <property name="alignment">
<hints> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
<hint type="sourcelabel"> </property>
<x>276</x> <property name="flat">
<y>486</y> <bool>false</bool>
</hint> </property>
<hint type="destinationlabel"> <layout class="QGridLayout" name="gridLayout">
<x>270</x> <property name="margin">
<y>537</y> <number>0</number>
</hint> </property>
</hints> <property name="spacing">
</connection> <number>0</number>
<connection> </property>
<sender>SwashLvlPositionSpinBox</sender> <item row="0" column="0">
<signal>valueChanged(int)</signal> <widget class="MixerCurveWidget" name="ThrottleCurve" native="true">
<receiver>SwashLvlPositionSlider</receiver> <property name="sizePolicy">
<slot>setValue(int)</slot> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<hints> <horstretch>1</horstretch>
<hint type="sourcelabel"> <verstretch>1</verstretch>
<x>257</x> </sizepolicy>
<y>535</y> </property>
</hint> <property name="minimumSize">
<hint type="destinationlabel"> <size>
<x>277</x> <width>50</width>
<y>401</y> <height>50</height>
</hint> </size>
</hints> </property>
</connection> <property name="maximumSize">
</connections> <size>
</ui> <width>1000</width>
<height>1000</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="baseSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="PitchCurveBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>100</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="baseSize">
<size>
<width>100</width>
<height>100</height>
</size>
</property>
<property name="title">
<string>Pitch Curve</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="MixerCurveWidget" name="PitchCurve" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>1000</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>10</width>
<height>10</height>
</size>
</property>
<property name="baseSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="4" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="AdvancedTab">
<attribute name="title">
<string>Advanced settings</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<property name="margin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="0">
<widget class="QTableWidget" name="ccpmAdvancedSettingsTable">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>200</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>300</height>
</size>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="autoScroll">
<bool>true</bool>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="cornerButtonEnabled">
<bool>true</bool>
</property>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>75</number>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>20</number>
</attribute>
<row>
<property name="text">
<string>Engine</string>
</property>
</row>
<row>
<property name="text">
<string>Tail Rotor</string>
</property>
</row>
<row>
<property name="text">
<string>Servo W</string>
</property>
</row>
<row>
<property name="text">
<string>Servo X</string>
</property>
</row>
<row>
<property name="text">
<string>Servo Y</string>
</property>
</row>
<row>
<property name="text">
<string>Servo Z</string>
</property>
</row>
<column>
<property name="text">
<string>Channel</string>
</property>
</column>
<column>
<property name="text">
<string>Curve 1</string>
</property>
</column>
<column>
<property name="text">
<string>Curve 2</string>
</property>
</column>
<column>
<property name="text">
<string>Roll</string>
</property>
</column>
<column>
<property name="text">
<string>Pitch</string>
</property>
</column>
<column>
<property name="text">
<string>Yaw</string>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="0" column="1">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="0" column="2">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="0" column="3">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="0" column="4">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="0" column="5">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="1" column="0">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="1" column="1">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="1" column="2">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="1" column="3">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="1" column="4">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="1" column="5">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="2" column="0">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="2" column="1">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="2" column="2">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="2" column="3">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="2" column="4">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="2" column="5">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="3" column="0">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="3" column="1">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="3" column="2">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="3" column="3">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="3" column="4">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="3" column="5">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="4" column="0">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="4" column="1">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="4" column="2">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="4" column="3">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="4" column="4">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="4" column="5">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="5" column="0">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="5" column="1">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="5" column="2">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="5" column="3">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="5" column="4">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
<item row="5" column="5">
<property name="text">
<string>-</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>MixerCurveWidget</class>
<extends>QWidget</extends>
<header>mixercurvewidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>ccpmType</tabstop>
<tabstop>TabObject</tabstop>
<tabstop>ccpmEngineChannel</tabstop>
<tabstop>ccpmTailChannel</tabstop>
<tabstop>ccpmServoWChannel</tabstop>
<tabstop>ccpmServoXChannel</tabstop>
<tabstop>ccpmServoYChannel</tabstop>
<tabstop>ccpmServoZChannel</tabstop>
<tabstop>ccpmSingleServo</tabstop>
<tabstop>ccpmAngleW</tabstop>
<tabstop>ccpmAngleX</tabstop>
<tabstop>ccpmAngleY</tabstop>
<tabstop>ccpmAngleZ</tabstop>
<tabstop>ccpmCorrectionAngle</tabstop>
<tabstop>ccpmRevoSlider</tabstop>
<tabstop>ccpmREVOspinBox</tabstop>
<tabstop>ccpmCollectiveSlider</tabstop>
<tabstop>ccpmCollectivespinBox</tabstop>
<tabstop>SwashplateImage</tabstop>
<tabstop>SwashLvlStartButton</tabstop>
<tabstop>SwashLvlNextButton</tabstop>
<tabstop>SwashLvlStepInstruction</tabstop>
<tabstop>SwashLvlCancelButton</tabstop>
<tabstop>SwashLvlFinishButton</tabstop>
<tabstop>SwashLvlStepList</tabstop>
<tabstop>SwashLvlPositionSlider</tabstop>
<tabstop>SwashLvlPositionSpinBox</tabstop>
<tabstop>SwashLvlSwashplateImage</tabstop>
<tabstop>CurveType</tabstop>
<tabstop>NumCurvePoints</tabstop>
<tabstop>CurveValue1</tabstop>
<tabstop>CurveValue2</tabstop>
<tabstop>CurveValue3</tabstop>
<tabstop>CurveToGenerate</tabstop>
<tabstop>ccpmGenerateCurve</tabstop>
<tabstop>CurveSettings</tabstop>
<tabstop>ccpmAdvancedSettingsTable</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
<sender>ccpmCollectiveSlider</sender>
<signal>sliderMoved(int)</signal>
<receiver>ccpmCollectivespinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>261</x>
<y>496</y>
</hint>
<hint type="destinationlabel">
<x>269</x>
<y>546</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmCollectivespinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>ccpmCollectiveSlider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>269</x>
<y>546</y>
</hint>
<hint type="destinationlabel">
<x>261</x>
<y>511</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmREVOspinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>ccpmRevoSlider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>216</x>
<y>546</y>
</hint>
<hint type="destinationlabel">
<x>208</x>
<y>511</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmRevoSlider</sender>
<signal>sliderMoved(int)</signal>
<receiver>ccpmREVOspinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>208</x>
<y>412</y>
</hint>
<hint type="destinationlabel">
<x>216</x>
<y>546</y>
</hint>
</hints>
</connection>
<connection>
<sender>SwashLvlPositionSlider</sender>
<signal>sliderMoved(int)</signal>
<receiver>SwashLvlPositionSpinBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>276</x>
<y>486</y>
</hint>
<hint type="destinationlabel">
<x>270</x>
<y>537</y>
</hint>
</hints>
</connection>
<connection>
<sender>SwashLvlPositionSpinBox</sender>
<signal>valueChanged(int)</signal>
<receiver>SwashLvlPositionSlider</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>301</x>
<y>546</y>
</hint>
<hint type="destinationlabel">
<x>277</x>
<y>401</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmCollectiveScaleBox</sender>
<signal>valueChanged(int)</signal>
<receiver>ccpmCollectiveScale</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>296</x>
<y>534</y>
</hint>
<hint type="destinationlabel">
<x>306</x>
<y>480</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmCollectiveScale</sender>
<signal>sliderMoved(int)</signal>
<receiver>ccpmCollectiveScaleBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>308</x>
<y>328</y>
</hint>
<hint type="destinationlabel">
<x>292</x>
<y>534</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmCyclicScale</sender>
<signal>sliderMoved(int)</signal>
<receiver>ccpmCyclicScaleBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>358</x>
<y>306</y>
</hint>
<hint type="destinationlabel">
<x>355</x>
<y>538</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmCyclicScaleBox</sender>
<signal>valueChanged(int)</signal>
<receiver>ccpmCyclicScale</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>341</x>
<y>538</y>
</hint>
<hint type="destinationlabel">
<x>351</x>
<y>376</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmPitchScale</sender>
<signal>sliderMoved(int)</signal>
<receiver>ccpmPitchScaleBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>417</x>
<y>306</y>
</hint>
<hint type="destinationlabel">
<x>406</x>
<y>531</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmPitchScaleBox</sender>
<signal>valueChanged(int)</signal>
<receiver>ccpmPitchScale</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>394</x>
<y>531</y>
</hint>
<hint type="destinationlabel">
<x>408</x>
<y>302</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmRollScaleBox</sender>
<signal>valueChanged(int)</signal>
<receiver>ccpmRollScale</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>455</x>
<y>529</y>
</hint>
<hint type="destinationlabel">
<x>458</x>
<y>466</y>
</hint>
</hints>
</connection>
<connection>
<sender>ccpmRollScale</sender>
<signal>sliderMoved(int)</signal>
<receiver>ccpmRollScaleBox</receiver>
<slot>setValue(int)</slot>
<hints>
<hint type="sourcelabel">
<x>461</x>
<y>388</y>
</hint>
<hint type="destinationlabel">
<x>474</x>
<y>533</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -25,6 +25,7 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#include "configccpmwidget.h" #include "configccpmwidget.h"
#include "mixersettings.h"
#include <QDebug> #include <QDebug>
#include <QStringList> #include <QStringList>
@ -32,6 +33,7 @@
#include <QtGui/QTextEdit> #include <QtGui/QTextEdit>
#include <QtGui/QVBoxLayout> #include <QtGui/QVBoxLayout>
#include <QtGui/QPushButton> #include <QtGui/QPushButton>
#include <QBrush>
#include <math.h> #include <math.h>
#include <QMessageBox> #include <QMessageBox>
@ -41,11 +43,14 @@
ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent) ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent)
{ {
int i; int i;
m_ccpm = new Ui_ccpmWidget(); m_ccpm = new Ui_ccpmWidget();
m_ccpm->setupUi(this); m_ccpm->setupUi(this);
SwashLvlConfigurationInProgress=0; SwashLvlConfigurationInProgress=0;
SwashLvlState=0; SwashLvlState=0;
SwashLvlServoInterlock=0; SwashLvlServoInterlock=0;
updatingFromHardware=FALSE;
updatingToHardware=FALSE;
// Now connect the widget to the ManualControlCommand / Channel UAVObject // Now connect the widget to the ManualControlCommand / Channel UAVObject
//ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); //ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
@ -55,12 +60,12 @@ ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent)
m_ccpm->SwashplateImage->setScene(new QGraphicsScene(this)); m_ccpm->SwashplateImage->setScene(new QGraphicsScene(this));
m_ccpm->SwashLvlSwashplateImage->setScene(m_ccpm->SwashplateImage->scene()); m_ccpm->SwashLvlSwashplateImage->setScene(m_ccpm->SwashplateImage->scene());
m_ccpm->SwashLvlSwashplateImage->setSceneRect(-50,-30,500,500); m_ccpm->SwashLvlSwashplateImage->setSceneRect(-50,-50,500,500);
m_ccpm->SwashLvlSwashplateImage->scale(.85,.85); //m_ccpm->SwashLvlSwashplateImage->scale(.85,.85);
//m_ccpm->SwashplateImage->setSceneRect(SwashplateImg->boundingRect()); //m_ccpm->SwashplateImage->setSceneRect(SwashplateImg->boundingRect());
m_ccpm->SwashplateImage->setSceneRect(-50,-30,500,500); m_ccpm->SwashplateImage->setSceneRect(-50,-30,500,500);
m_ccpm->SwashplateImage->scale(.85,.85); //m_ccpm->SwashplateImage->scale(.85,.85);
@ -72,9 +77,10 @@ ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent)
SwashplateImg->setSharedRenderer(renderer); SwashplateImg->setSharedRenderer(renderer);
SwashplateImg->setElementId("Swashplate"); SwashplateImg->setElementId("Swashplate");
SwashplateImg->setObjectName("Swashplate"); SwashplateImg->setObjectName("Swashplate");
//SwashplateImg->setScale(0.75);
m_ccpm->SwashplateImage->scene()->addItem(SwashplateImg); m_ccpm->SwashplateImage->scene()->addItem(SwashplateImg);
QFont serifFont("Times", 16, QFont::Bold); QFont serifFont("Times", 24, QFont::Bold);
QPen pen; // creates a default pen QPen pen; // creates a default pen
pen.setStyle(Qt::DotLine); pen.setStyle(Qt::DotLine);
@ -83,6 +89,19 @@ ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent)
pen.setCapStyle(Qt::RoundCap); pen.setCapStyle(Qt::RoundCap);
pen.setJoinStyle(Qt::RoundJoin); pen.setJoinStyle(Qt::RoundJoin);
QBrush brush(Qt::darkBlue);
QPen pen2; // creates a default pen
//pen2.setStyle(Qt::DotLine);
pen2.setWidth(1);
pen2.setBrush(Qt::blue);
//pen2.setCapStyle(Qt::RoundCap);
//pen2.setJoinStyle(Qt::RoundJoin);
//brush.setStyle(Qt::RadialGradientPattern);
QList<QString> ServoNames; QList<QString> ServoNames;
ServoNames << "ServoW" << "ServoX" << "ServoY" << "ServoZ" ; ServoNames << "ServoW" << "ServoX" << "ServoY" << "ServoZ" ;
@ -96,10 +115,16 @@ ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent)
m_ccpm->SwashplateImage->scene()->addItem(Servos[i]); m_ccpm->SwashplateImage->scene()->addItem(Servos[i]);
ServosText[i] = new QGraphicsTextItem(); ServosText[i] = new QGraphicsTextItem();
ServosText[i]->setDefaultTextColor(Qt::red); ServosText[i]->setDefaultTextColor(Qt::yellow);
ServosText[i]->setPlainText(QString("-")); ServosText[i]->setPlainText(QString("-"));
ServosText[i]->setFont(serifFont); ServosText[i]->setFont(serifFont);
ServosTextCircles[i] = new QGraphicsEllipseItem(1,1,30,30);
ServosTextCircles[i]->setBrush(brush);
ServosTextCircles[i]->setPen(pen2);
m_ccpm->SwashplateImage->scene()->addItem(ServosTextCircles[i]);
m_ccpm->SwashplateImage->scene()->addItem(ServosText[i]); m_ccpm->SwashplateImage->scene()->addItem(ServosText[i]);
SwashLvlSpinBoxes[i] = new QSpinBox(m_ccpm->SwashLvlSwashplateImage); // use QGraphicsView SwashLvlSpinBoxes[i] = new QSpinBox(m_ccpm->SwashLvlSwashplateImage); // use QGraphicsView
@ -172,7 +197,10 @@ ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent)
QStringList channels; QStringList channels;
channels << "Channel1" << "Channel2" << channels << "Channel1" << "Channel2" <<
"Channel3" << "Channel4" << "Channel5" << "Channel6" << "Channel7" << "Channel8" << "None" ; "Channel3" << "Channel4" << "Channel5" << "Channel6" << "Channel7" << "Channel8" ;
m_ccpm->ccpmCollectiveChannel->addItems(channels);
m_ccpm->ccpmCollectiveChannel->setCurrentIndex(8);
channels << "None" ;
m_ccpm->ccpmEngineChannel->addItems(channels); m_ccpm->ccpmEngineChannel->addItems(channels);
m_ccpm->ccpmEngineChannel->setCurrentIndex(8); m_ccpm->ccpmEngineChannel->setCurrentIndex(8);
m_ccpm->ccpmTailChannel->addItems(channels); m_ccpm->ccpmTailChannel->addItems(channels);
@ -187,7 +215,7 @@ ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent)
m_ccpm->ccpmServoZChannel->setCurrentIndex(8); m_ccpm->ccpmServoZChannel->setCurrentIndex(8);
QStringList Types; QStringList Types;
Types << "CCPM 2 Servo 90º" << "CCPM 3 Servo 120º" << "CCPM 3 Servo 140º" << "FP 2 Servo 90º" << "Custom - User Angles" << "Custom - Advanced Settings" ; Types << "CCPM 2 Servo 90º" << "CCPM 3 Servo 90º" << "CCPM 4 Servo 90º" << "CCPM 3 Servo 120º" << "CCPM 3 Servo 140º" << "FP 2 Servo 90º" << "Custom - User Angles" << "Custom - Advanced Settings" ;
m_ccpm->ccpmType->addItems(Types); m_ccpm->ccpmType->addItems(Types);
m_ccpm->ccpmType->setCurrentIndex(m_ccpm->ccpmType->count() - 1); m_ccpm->ccpmType->setCurrentIndex(m_ccpm->ccpmType->count() - 1);
requestccpmUpdate(); requestccpmUpdate();
@ -196,6 +224,8 @@ ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent)
//disable changing number of points in curves until UAVObjects have more than 5 //disable changing number of points in curves until UAVObjects have more than 5
m_ccpm->NumCurvePoints->setEnabled(0); m_ccpm->NumCurvePoints->setEnabled(0);
UpdateType(); UpdateType();
@ -237,7 +267,13 @@ ConfigccpmWidget::ConfigccpmWidget(QWidget *parent) : ConfigTaskWidget(parent)
connect(m_ccpm->SwashLvlCancelButton, SIGNAL(clicked()), this, SLOT(SwashLvlCancelButtonPressed())); connect(m_ccpm->SwashLvlCancelButton, SIGNAL(clicked()), this, SLOT(SwashLvlCancelButtonPressed()));
connect(m_ccpm->SwashLvlFinishButton, SIGNAL(clicked()), this, SLOT(SwashLvlFinishButtonPressed())); connect(m_ccpm->SwashLvlFinishButton, SIGNAL(clicked()), this, SLOT(SwashLvlFinishButtonPressed()));
connect(m_ccpm->ccpmCollectivePassthrough, SIGNAL(clicked()), this, SLOT(SetUIComponentVisibilities()));
connect(m_ccpm->ccpmLinkCyclic, SIGNAL(clicked()), this, SLOT(SetUIComponentVisibilities()));
connect(m_ccpm->ccpmLinkRoll, SIGNAL(clicked()), this, SLOT(SetUIComponentVisibilities()));
ccpmSwashplateRedraw();
// connect(parent, SIGNAL(autopilotConnected()),this, SLOT(requestccpmUpdate())); // connect(parent, SIGNAL(autopilotConnected()),this, SLOT(requestccpmUpdate()));
} }
@ -249,11 +285,13 @@ ConfigccpmWidget::~ConfigccpmWidget()
void ConfigccpmWidget::UpdateType() void ConfigccpmWidget::UpdateType()
{ {
int TypeInt,SingleServoIndex; int TypeInt,SingleServoIndex,NumServosDefined;
QString TypeText; QString TypeText;
double AdjustmentAngle=0; double AdjustmentAngle=0;
UpdatCCPMOptionsFromUI();
SetUIComponentVisibilities();
TypeInt = m_ccpm->ccpmType->count() - m_ccpm->ccpmType->currentIndex()-1; TypeInt = m_ccpm->ccpmType->count() - m_ccpm->ccpmType->currentIndex()-1;
TypeText = m_ccpm->ccpmType->currentText(); TypeText = m_ccpm->ccpmType->currentText();
SingleServoIndex = m_ccpm->ccpmSingleServo->currentIndex(); SingleServoIndex = m_ccpm->ccpmSingleServo->currentIndex();
@ -266,7 +304,7 @@ void ConfigccpmWidget::UpdateType()
m_ccpm->ccpmAngleX->setEnabled(TypeInt==1); m_ccpm->ccpmAngleX->setEnabled(TypeInt==1);
m_ccpm->ccpmAngleY->setEnabled(TypeInt==1); m_ccpm->ccpmAngleY->setEnabled(TypeInt==1);
m_ccpm->ccpmAngleZ->setEnabled(TypeInt==1); m_ccpm->ccpmAngleZ->setEnabled(TypeInt==1);
m_ccpm->ccpmCorrectionAngle->setEnabled(TypeInt==1); m_ccpm->ccpmCorrectionAngle->setEnabled(TypeInt!=0);
m_ccpm->ccpmServoWChannel->setEnabled(TypeInt>0); m_ccpm->ccpmServoWChannel->setEnabled(TypeInt>0);
m_ccpm->ccpmServoXChannel->setEnabled(TypeInt>0); m_ccpm->ccpmServoXChannel->setEnabled(TypeInt>0);
@ -289,6 +327,7 @@ void ConfigccpmWidget::UpdateType()
//m_ccpm->customThrottleCurve2Value->setVisible(1); //m_ccpm->customThrottleCurve2Value->setVisible(1);
//m_ccpm->label_41->setVisible(1); //m_ccpm->label_41->setVisible(1);
NumServosDefined=4;
//set values for pre defined heli types //set values for pre defined heli types
if (TypeText.compare(QString("CCPM 2 Servo 90º"), Qt::CaseInsensitive)==0) if (TypeText.compare(QString("CCPM 2 Servo 90º"), Qt::CaseInsensitive)==0)
{ {
@ -302,8 +341,34 @@ void ConfigccpmWidget::UpdateType()
m_ccpm->ccpmServoZChannel->setCurrentIndex(8); m_ccpm->ccpmServoZChannel->setCurrentIndex(8);
m_ccpm->ccpmServoYChannel->setEnabled(0); m_ccpm->ccpmServoYChannel->setEnabled(0);
m_ccpm->ccpmServoZChannel->setEnabled(0); m_ccpm->ccpmServoZChannel->setEnabled(0);
m_ccpm->ccpmCorrectionAngle->setValue(0); //m_ccpm->ccpmCorrectionAngle->setValue(0);
NumServosDefined=2;
}
if (TypeText.compare(QString("CCPM 3 Servo 90º"), Qt::CaseInsensitive)==0)
{
m_ccpm->ccpmAngleW->setValue(AdjustmentAngle + 0);
m_ccpm->ccpmAngleX->setValue(fmod(AdjustmentAngle + 90,360));
m_ccpm->ccpmAngleY->setValue(fmod(AdjustmentAngle + 180,360));
m_ccpm->ccpmAngleZ->setValue(0);
m_ccpm->ccpmAngleZ->setEnabled(0);
m_ccpm->ccpmServoZChannel->setCurrentIndex(8);
m_ccpm->ccpmServoZChannel->setEnabled(0);
//m_ccpm->ccpmCorrectionAngle->setValue(0);
NumServosDefined=3;
}
if (TypeText.compare(QString("CCPM 4 Servo 90º"), Qt::CaseInsensitive)==0)
{
m_ccpm->ccpmAngleW->setValue(AdjustmentAngle + 0);
m_ccpm->ccpmAngleX->setValue(fmod(AdjustmentAngle + 90,360));
m_ccpm->ccpmAngleY->setValue(fmod(AdjustmentAngle + 180,360));
m_ccpm->ccpmAngleZ->setValue(fmod(AdjustmentAngle + 270,360));
//m_ccpm->ccpmCorrectionAngle->setValue(0);
m_ccpm->ccpmSingleServo->setEnabled(0);
m_ccpm->ccpmSingleServo->setCurrentIndex(0);
NumServosDefined=4;
} }
if (TypeText.compare(QString("CCPM 3 Servo 120º"), Qt::CaseInsensitive)==0) if (TypeText.compare(QString("CCPM 3 Servo 120º"), Qt::CaseInsensitive)==0)
{ {
@ -314,8 +379,9 @@ void ConfigccpmWidget::UpdateType()
m_ccpm->ccpmAngleZ->setEnabled(0); m_ccpm->ccpmAngleZ->setEnabled(0);
m_ccpm->ccpmServoZChannel->setCurrentIndex(8); m_ccpm->ccpmServoZChannel->setCurrentIndex(8);
m_ccpm->ccpmServoZChannel->setEnabled(0); m_ccpm->ccpmServoZChannel->setEnabled(0);
m_ccpm->ccpmCorrectionAngle->setValue(0); //m_ccpm->ccpmCorrectionAngle->setValue(0);
NumServosDefined=3;
} }
if (TypeText.compare(QString("CCPM 3 Servo 140º"), Qt::CaseInsensitive)==0) if (TypeText.compare(QString("CCPM 3 Servo 140º"), Qt::CaseInsensitive)==0)
{ {
@ -326,7 +392,8 @@ void ConfigccpmWidget::UpdateType()
m_ccpm->ccpmAngleZ->setEnabled(0); m_ccpm->ccpmAngleZ->setEnabled(0);
m_ccpm->ccpmServoZChannel->setCurrentIndex(8); m_ccpm->ccpmServoZChannel->setCurrentIndex(8);
m_ccpm->ccpmServoZChannel->setEnabled(0); m_ccpm->ccpmServoZChannel->setEnabled(0);
m_ccpm->ccpmCorrectionAngle->setValue(0); //m_ccpm->ccpmCorrectionAngle->setValue(0);
NumServosDefined=3;
} }
if (TypeText.compare(QString("FP 2 Servo 90º"), Qt::CaseInsensitive)==0) if (TypeText.compare(QString("FP 2 Servo 90º"), Qt::CaseInsensitive)==0)
@ -341,7 +408,7 @@ void ConfigccpmWidget::UpdateType()
m_ccpm->ccpmServoZChannel->setCurrentIndex(8); m_ccpm->ccpmServoZChannel->setCurrentIndex(8);
m_ccpm->ccpmServoYChannel->setEnabled(0); m_ccpm->ccpmServoYChannel->setEnabled(0);
m_ccpm->ccpmServoZChannel->setEnabled(0); m_ccpm->ccpmServoZChannel->setEnabled(0);
m_ccpm->ccpmCorrectionAngle->setValue(0); //m_ccpm->ccpmCorrectionAngle->setValue(0);
m_ccpm->ccpmCollectivespinBox->setEnabled(0); m_ccpm->ccpmCollectivespinBox->setEnabled(0);
m_ccpm->ccpmCollectiveSlider->setEnabled(0); m_ccpm->ccpmCollectiveSlider->setEnabled(0);
@ -353,8 +420,29 @@ void ConfigccpmWidget::UpdateType()
m_ccpm->PitchCurve->setVisible(0); m_ccpm->PitchCurve->setVisible(0);
//m_ccpm->customThrottleCurve2Value->setVisible(0); //m_ccpm->customThrottleCurve2Value->setVisible(0);
//m_ccpm->label_41->setVisible(0); //m_ccpm->label_41->setVisible(0);
NumServosDefined=2;
} }
//set the visibility of the swashplate servo selection boxes
m_ccpm->ccpmServoWLabel->setVisible(NumServosDefined>=1);
m_ccpm->ccpmServoXLabel->setVisible(NumServosDefined>=2);
m_ccpm->ccpmServoYLabel->setVisible(NumServosDefined>=3);
m_ccpm->ccpmServoZLabel->setVisible(NumServosDefined>=4);
m_ccpm->ccpmServoWChannel->setVisible(NumServosDefined>=1);
m_ccpm->ccpmServoXChannel->setVisible(NumServosDefined>=2);
m_ccpm->ccpmServoYChannel->setVisible(NumServosDefined>=3);
m_ccpm->ccpmServoZChannel->setVisible(NumServosDefined>=4);
//set the visibility of the swashplate angle selection boxes
m_ccpm->ccpmServoWLabel_2->setVisible(NumServosDefined>=1);
m_ccpm->ccpmServoXLabel_2->setVisible(NumServosDefined>=2);
m_ccpm->ccpmServoYLabel_2->setVisible(NumServosDefined>=3);
m_ccpm->ccpmServoZLabel_2->setVisible(NumServosDefined>=4);
m_ccpm->ccpmAngleW->setVisible(NumServosDefined>=1);
m_ccpm->ccpmAngleX->setVisible(NumServosDefined>=2);
m_ccpm->ccpmAngleY->setVisible(NumServosDefined>=3);
m_ccpm->ccpmAngleZ->setVisible(NumServosDefined>=4);
m_ccpm->ccpmAdvancedSettingsTable->resizeColumnsToContents(); m_ccpm->ccpmAdvancedSettingsTable->resizeColumnsToContents();
for (int i=0;i<6;i++) { for (int i=0;i<6;i++) {
@ -362,9 +450,12 @@ void ConfigccpmWidget::UpdateType()
m_ccpm->ccpmAdvancedSettingsTable->verticalHeader()->width())/6); m_ccpm->ccpmAdvancedSettingsTable->verticalHeader()->width())/6);
} }
//update UI //update UI
ccpmSwashplateUpdate(); ccpmSwashplateUpdate();
} }
/** /**
@ -655,17 +746,43 @@ void ConfigccpmWidget::GenerateCurve()
void ConfigccpmWidget::ccpmSwashplateRedraw() void ConfigccpmWidget::ccpmSwashplateRedraw()
{ {
double angle[CCPM_MAX_SWASH_SERVOS],CorrectionAngle,x,y,w,h,radius,CenterX,CenterY; double angle[CCPM_MAX_SWASH_SERVOS],CorrectionAngle,x,y,w,h,radius,CenterX,CenterY;
int used[CCPM_MAX_SWASH_SERVOS],i; int used[CCPM_MAX_SWASH_SERVOS],defined[CCPM_MAX_SWASH_SERVOS],i;
QRectF bounds;
QRect size;
double scale,xscale,yscale;
size = m_ccpm->SwashplateImage->rect();
xscale=size.width();
yscale=size.height();
scale=xscale;
if (yscale<scale)scale=yscale;
scale/=460.00;
m_ccpm->SwashplateImage->resetTransform ();
m_ccpm->SwashplateImage->scale(scale,scale);
size = m_ccpm->SwashLvlSwashplateImage->rect();
xscale=size.width();
yscale=size.height();
scale=xscale;
if (yscale<scale)scale=yscale;
scale/=590.00;
m_ccpm->SwashLvlSwashplateImage->resetTransform ();
m_ccpm->SwashLvlSwashplateImage->scale(scale,scale);
CorrectionAngle=m_ccpm->ccpmCorrectionAngle->value(); CorrectionAngle=m_ccpm->ccpmCorrectionAngle->value();
//CenterX=m_ccpm->SwashplateImage->scene()->sceneRect().center().x();
// CenterY=m_ccpm->SwashplateImage->scene()->sceneRect().center().y();
CenterX=200; CenterX=200;
CenterY=220; CenterY=200;
SwashplateImg->setPos(CenterX-200,CenterY-200); bounds=SwashplateImg->boundingRect();
SwashplateImg->setPos(CenterX-bounds.width()/2,CenterY-bounds.height()/2);
defined[0]=(m_ccpm->ccpmServoWChannel->isEnabled());
defined[1]=(m_ccpm->ccpmServoXChannel->isEnabled());
defined[2]=(m_ccpm->ccpmServoYChannel->isEnabled());
defined[3]=(m_ccpm->ccpmServoZChannel->isEnabled());
used[0]=((m_ccpm->ccpmServoWChannel->currentIndex()<8)&&(m_ccpm->ccpmServoWChannel->isEnabled())); used[0]=((m_ccpm->ccpmServoWChannel->currentIndex()<8)&&(m_ccpm->ccpmServoWChannel->isEnabled()));
used[1]=((m_ccpm->ccpmServoXChannel->currentIndex()<8)&&(m_ccpm->ccpmServoXChannel->isEnabled())); used[1]=((m_ccpm->ccpmServoXChannel->currentIndex()<8)&&(m_ccpm->ccpmServoXChannel->isEnabled()));
used[2]=((m_ccpm->ccpmServoYChannel->currentIndex()<8)&&(m_ccpm->ccpmServoYChannel->isEnabled())); used[2]=((m_ccpm->ccpmServoYChannel->currentIndex()<8)&&(m_ccpm->ccpmServoYChannel->isEnabled()));
@ -684,11 +801,28 @@ void ConfigccpmWidget::ccpmSwashplateRedraw()
Servos[i]->setPos(x, y); Servos[i]->setPos(x, y);
Servos[i]->setVisible(used[i]!=0); Servos[i]->setVisible(used[i]!=0);
radius=170; radius=150;
x=CenterX-(radius*sin(angle[i]))-10.00; bounds=ServosText[i]->boundingRect();
y=CenterY+(radius*cos(angle[i]))-10.00; x=CenterX-(radius*sin(angle[i]))-bounds.width()/2;
y=CenterY+(radius*cos(angle[i]))-bounds.height()/2;
ServosText[i]->setPos(x, y); ServosText[i]->setPos(x, y);
ServosText[i]->setVisible(used[i]!=0); ServosText[i]->setVisible(used[i]!=0);
if (bounds.width()>bounds.height())
{
bounds.setHeight(bounds.width());
}
else
{
bounds.setWidth(bounds.height());
}
x=CenterX-(radius*sin(angle[i]))-bounds.width()/2;
y=CenterY+(radius*cos(angle[i]))-bounds.height()/2;
ServosTextCircles[i]->setRect(bounds);
ServosTextCircles[i]->setPos(x, y);
ServosTextCircles[i]->setVisible(used[i]!=0);
w=SwashLvlSpinBoxes[i]->width()/2; w=SwashLvlSpinBoxes[i]->width()/2;
h=SwashLvlSpinBoxes[i]->height()/2; h=SwashLvlSpinBoxes[i]->height()/2;
@ -702,7 +836,7 @@ void ConfigccpmWidget::ccpmSwashplateRedraw()
x=CenterX-(radius*sin(angle[i])); x=CenterX-(radius*sin(angle[i]));
y=CenterY+(radius*cos(angle[i])); y=CenterY+(radius*cos(angle[i]));
ServoLines[i]->setLine(CenterX,CenterY,x,y); ServoLines[i]->setLine(CenterX,CenterY,x,y);
ServoLines[i]->setVisible(used[i]!=0); ServoLines[i]->setVisible(defined[i]!=0);
} }
//m_ccpm->SwashplateImage->centerOn (CenterX, CenterY); //m_ccpm->SwashplateImage->centerOn (CenterX, CenterY);
@ -713,22 +847,104 @@ void ConfigccpmWidget::ccpmSwashplateRedraw()
void ConfigccpmWidget::ccpmSwashplateUpdate() void ConfigccpmWidget::ccpmSwashplateUpdate()
{ {
ccpmSwashplateRedraw(); ccpmSwashplateRedraw();
SetUIComponentVisibilities();
UpdateMixer(); UpdateMixer();
} }
void ConfigccpmWidget::ccpmChannelCheck()
{
if((m_ccpm->ccpmServoWChannel->currentIndex()==8)&&(m_ccpm->ccpmServoWChannel->isEnabled()))
{
m_ccpm->ccpmServoWLabel->setText("<font color=red>Servo W</font>");
}
else
{
m_ccpm->ccpmServoWLabel->setText("<font color=black>Servo W</font>");
}
if((m_ccpm->ccpmServoXChannel->currentIndex()==8)&&(m_ccpm->ccpmServoXChannel->isEnabled()))
{
m_ccpm->ccpmServoXLabel->setText("<font color=red>Servo X</font>");
}
else
{
m_ccpm->ccpmServoXLabel->setText("<font color=black>Servo X</font>");
}
if((m_ccpm->ccpmServoYChannel->currentIndex()==8)&&(m_ccpm->ccpmServoYChannel->isEnabled()))
{
m_ccpm->ccpmServoYLabel->setText("<font color=red>Servo Y</font>");
}
else
{
m_ccpm->ccpmServoYLabel->setText("<font color=black>Servo Y</font>");
}
if((m_ccpm->ccpmServoZChannel->currentIndex()==8)&&(m_ccpm->ccpmServoZChannel->isEnabled()))
{
m_ccpm->ccpmServoZLabel->setText("<font color=red>Servo Z</font>");
}
else
{
m_ccpm->ccpmServoZLabel->setText("<font color=black>Servo Z</font>");
}
if((m_ccpm->ccpmEngineChannel->currentIndex()==8)&&(m_ccpm->ccpmEngineChannel->isEnabled()))
{
m_ccpm->ccpmEngineLabel->setText("<font color=red>Engine</font>");
}
else
{
m_ccpm->ccpmEngineLabel->setText("<font color=black>Engine</font>");
}
if((m_ccpm->ccpmTailChannel->currentIndex()==8)&&(m_ccpm->ccpmTailChannel->isEnabled()))
{
m_ccpm->ccpmTailLabel->setText("<font color=red>Tail Rotor</font>");
}
else
{
m_ccpm->ccpmTailLabel->setText("<font color=black>Tail Rotor</font>");
}
}
void ConfigccpmWidget::UpdateMixer() void ConfigccpmWidget::UpdateMixer()
{ {
int i,j,Type,ThisEnable[6]; bool useCCPM;
float CollectiveConstant,CorrectionAngle,ThisAngle[6]; bool useCyclic;
int i,j,ThisEnable[6];
float CollectiveConstant,PitchConstant,RollConstant,ThisAngle[6];
//QTableWidgetItem *newItem;// = new QTableWidgetItem(); //QTableWidgetItem *newItem;// = new QTableWidgetItem();
QString Channel; QString Channel;
Type = m_ccpm->ccpmType->count() - m_ccpm->ccpmType->currentIndex()-1; ccpmChannelCheck();
CollectiveConstant=m_ccpm->ccpmCollectiveSlider->value()/100.0; //Type = m_ccpm->ccpmType->count() - m_ccpm->ccpmType->currentIndex()-1;
CorrectionAngle=m_ccpm->ccpmCorrectionAngle->value(); //CollectiveConstant=m_ccpm->ccpmCollectiveSlider->value()/100.0;
//CorrectionAngle=m_ccpm->ccpmCorrectionAngle->value();
UpdatCCPMOptionsFromUI();
useCCPM = !(GUIConfigData.heli.ccpmCollectivePassthroughState || !GUIConfigData.heli.ccpmLinkCyclicState);
useCyclic = GUIConfigData.heli.ccpmLinkRollState;
CollectiveConstant = (float)GUIConfigData.heli.SliderValue0 / 100.00;
if (Type>0) if (useCCPM)
{//cyclic = 1 - collective
PitchConstant = 1-CollectiveConstant;
RollConstant = PitchConstant;
}
else
{
PitchConstant = (float)GUIConfigData.heli.SliderValue1 / 100.00;;
if (useCyclic)
{
RollConstant = PitchConstant;
}
else
{
RollConstant = (float)GUIConfigData.heli.SliderValue2 / 100.00;;
}
}
if (GUIConfigData.heli.SwasplateType>0)
{//not advanced settings {//not advanced settings
//get the channel data from the ui //get the channel data from the ui
MixerChannelData[0] = m_ccpm->ccpmEngineChannel->currentIndex(); MixerChannelData[0] = m_ccpm->ccpmEngineChannel->currentIndex();
@ -792,8 +1008,8 @@ void ConfigccpmWidget::UpdateMixer()
{//Swashplate {//Swashplate
m_ccpm->ccpmAdvancedSettingsTable->item(i,1)->setText(QString("%1").arg(0));//ThrottleCurve1 m_ccpm->ccpmAdvancedSettingsTable->item(i,1)->setText(QString("%1").arg(0));//ThrottleCurve1
m_ccpm->ccpmAdvancedSettingsTable->item(i,2)->setText(QString("%1").arg((int)(127.0*CollectiveConstant)));//ThrottleCurve2 m_ccpm->ccpmAdvancedSettingsTable->item(i,2)->setText(QString("%1").arg((int)(127.0*CollectiveConstant)));//ThrottleCurve2
m_ccpm->ccpmAdvancedSettingsTable->item(i,3)->setText(QString("%1").arg((int)(127.0*(1-CollectiveConstant)*sin((180+CorrectionAngle + ThisAngle[i])*Pi/180.00))));//Roll m_ccpm->ccpmAdvancedSettingsTable->item(i,3)->setText(QString("%1").arg((int)(127.0*(RollConstant)*sin((180+GUIConfigData.heli.CorrectionAngle + ThisAngle[i])*Pi/180.00))));//Roll
m_ccpm->ccpmAdvancedSettingsTable->item(i,4)->setText(QString("%1").arg((int)(127.0*(1-CollectiveConstant)*cos((CorrectionAngle + ThisAngle[i])*Pi/180.00))));//Pitch m_ccpm->ccpmAdvancedSettingsTable->item(i,4)->setText(QString("%1").arg((int)(127.0*(PitchConstant)*cos((GUIConfigData.heli.CorrectionAngle + ThisAngle[i])*Pi/180.00))));//Pitch
m_ccpm->ccpmAdvancedSettingsTable->item(i,5)->setText(QString("%1").arg(0));//Yaw m_ccpm->ccpmAdvancedSettingsTable->item(i,5)->setText(QString("%1").arg(0));//Yaw
} }
@ -822,6 +1038,140 @@ void ConfigccpmWidget::UpdateMixer()
/************************** /**************************
* ccpm settings * ccpm settings
**************************/ **************************/
/*
Get the state of the UI check boxes and change the visibility of sliders
typedef struct {
uint SwasplateType:3;
uint FirstServoIndex:2;
uint CorrectionAngle:9;
uint ccpmCollectivePassthroughState:1;
uint ccpmLinkCyclicState:1;
uint ccpmLinkRollState:1;
uint CollectiveChannel:3;
uint padding:12;
} __attribute__((packed)) heliGUISettingsStruct;
*/
void ConfigccpmWidget::UpdatCCPMOptionsFromUI()
{
bool useCCPM;
bool useCyclic;
if (updatingFromHardware) return;
//get the user options
//swashplate config
GUIConfigData.heli.SwasplateType = m_ccpm->ccpmType->count() - m_ccpm->ccpmType->currentIndex()-1;
GUIConfigData.heli.FirstServoIndex = m_ccpm->ccpmSingleServo->currentIndex();
//ccpm mixing options
GUIConfigData.heli.ccpmCollectivePassthroughState = m_ccpm->ccpmCollectivePassthrough->isChecked();
GUIConfigData.heli.ccpmLinkCyclicState = m_ccpm->ccpmLinkCyclic->isChecked();
GUIConfigData.heli.ccpmLinkRollState = m_ccpm->ccpmLinkRoll->isChecked();
useCCPM = !(GUIConfigData.heli.ccpmCollectivePassthroughState || !GUIConfigData.heli.ccpmLinkCyclicState);
useCyclic = GUIConfigData.heli.ccpmLinkRollState;
//correction angle
GUIConfigData.heli.CorrectionAngle = m_ccpm->ccpmCorrectionAngle->value();
//CollectiveChannel
GUIConfigData.heli.CollectiveChannel = m_ccpm->ccpmCollectiveChannel->currentIndex();
//update sliders
if (useCCPM)
{
GUIConfigData.heli.SliderValue0 = m_ccpm->ccpmCollectiveSlider->value();
}
else
{
GUIConfigData.heli.SliderValue0 = m_ccpm->ccpmCollectiveScale->value();
}
if (useCyclic)
{
GUIConfigData.heli.SliderValue1 = m_ccpm->ccpmCyclicScale->value();
}
else
{
GUIConfigData.heli.SliderValue1 = m_ccpm->ccpmPitchScale->value();
}
GUIConfigData.heli.SliderValue2 = m_ccpm->ccpmRollScale->value();
//GUIConfigData.heli.RevoSlider = m_ccpm->ccpmREVOScale->value();
//servo assignments
GUIConfigData.heli.ServoIndexW = m_ccpm->ccpmServoWChannel->currentIndex();
GUIConfigData.heli.ServoIndexX = m_ccpm->ccpmServoXChannel->currentIndex();
GUIConfigData.heli.ServoIndexY = m_ccpm->ccpmServoYChannel->currentIndex();
GUIConfigData.heli.ServoIndexZ = m_ccpm->ccpmServoZChannel->currentIndex();
}
void ConfigccpmWidget::UpdatCCPMUIFromOptions()
{
//swashplate config
m_ccpm->ccpmType->setCurrentIndex(m_ccpm->ccpmType->count() - (GUIConfigData.heli.SwasplateType +1));
m_ccpm->ccpmSingleServo->setCurrentIndex(GUIConfigData.heli.FirstServoIndex);
//ccpm mixing options
m_ccpm->ccpmCollectivePassthrough->setChecked(GUIConfigData.heli.ccpmCollectivePassthroughState);
m_ccpm->ccpmLinkCyclic->setChecked(GUIConfigData.heli.ccpmLinkCyclicState);
m_ccpm->ccpmLinkRoll->setChecked(GUIConfigData.heli.ccpmLinkRollState);
//correction angle
m_ccpm->ccpmCorrectionAngle->setValue(GUIConfigData.heli.CorrectionAngle);
//CollectiveChannel
m_ccpm->ccpmCollectiveChannel->setCurrentIndex(GUIConfigData.heli.CollectiveChannel);
//update sliders
m_ccpm->ccpmCollectiveScale->setValue(GUIConfigData.heli.SliderValue0);
m_ccpm->ccpmCollectiveScaleBox->setValue(GUIConfigData.heli.SliderValue0);
m_ccpm->ccpmCyclicScale->setValue(GUIConfigData.heli.SliderValue1);
m_ccpm->ccpmCyclicScaleBox->setValue(GUIConfigData.heli.SliderValue1);
m_ccpm->ccpmPitchScale->setValue(GUIConfigData.heli.SliderValue1);
m_ccpm->ccpmPitchScaleBox->setValue(GUIConfigData.heli.SliderValue1);
m_ccpm->ccpmRollScale->setValue(GUIConfigData.heli.SliderValue2);
m_ccpm->ccpmRollScaleBox->setValue(GUIConfigData.heli.SliderValue2);
m_ccpm->ccpmCollectiveSlider->setValue(GUIConfigData.heli.SliderValue0);
m_ccpm->ccpmCollectivespinBox->setValue(GUIConfigData.heli.SliderValue0);
//m_ccpm->ccpmREVOScale->setValue(GUIConfigData.heli.RevoSlider);
//servo assignments
m_ccpm->ccpmServoWChannel->setCurrentIndex(GUIConfigData.heli.ServoIndexW);
m_ccpm->ccpmServoXChannel->setCurrentIndex(GUIConfigData.heli.ServoIndexX);
m_ccpm->ccpmServoYChannel->setCurrentIndex(GUIConfigData.heli.ServoIndexY);
m_ccpm->ccpmServoZChannel->setCurrentIndex(GUIConfigData.heli.ServoIndexZ);
}
void ConfigccpmWidget::SetUIComponentVisibilities()
{
UpdatCCPMOptionsFromUI();
//set which sliders are user...
m_ccpm->ccpmRevoMixingBox->setVisible(0);
m_ccpm->ccpmPitchMixingBox->setVisible(!GUIConfigData.heli.ccpmCollectivePassthroughState && GUIConfigData.heli.ccpmLinkCyclicState);
m_ccpm->ccpmCollectiveScalingBox->setVisible(GUIConfigData.heli.ccpmCollectivePassthroughState || !GUIConfigData.heli.ccpmLinkCyclicState);
m_ccpm->ccpmCollectiveChLabel->setVisible(GUIConfigData.heli.ccpmCollectivePassthroughState);
m_ccpm->ccpmCollectiveChannel->setVisible(GUIConfigData.heli.ccpmCollectivePassthroughState);
m_ccpm->ccpmLinkCyclic->setVisible(!GUIConfigData.heli.ccpmCollectivePassthroughState);
m_ccpm->ccpmCyclicScalingBox->setVisible((GUIConfigData.heli.ccpmCollectivePassthroughState || !GUIConfigData.heli.ccpmLinkCyclicState) && GUIConfigData.heli.ccpmLinkRollState);
if (!GUIConfigData.heli.ccpmCollectivePassthroughState && GUIConfigData.heli.ccpmLinkCyclicState)
{
m_ccpm->ccpmPitchScalingBox->setVisible(0);
m_ccpm->ccpmRollScalingBox->setVisible(0);
m_ccpm->ccpmLinkRoll->setVisible(0);
}
else
{
m_ccpm->ccpmPitchScalingBox->setVisible(!GUIConfigData.heli.ccpmLinkRollState);
m_ccpm->ccpmRollScalingBox->setVisible(!GUIConfigData.heli.ccpmLinkRollState);
m_ccpm->ccpmLinkRoll->setVisible(1);
}
}
/** /**
Request the current value of the SystemSettings which holds the ccpm type Request the current value of the SystemSettings which holds the ccpm type
*/ */
@ -838,12 +1188,22 @@ void ConfigccpmWidget::requestccpmUpdate()
int isCCPM=0; int isCCPM=0;
if (SwashLvlConfigurationInProgress)return; if (SwashLvlConfigurationInProgress)return;
if (updatingToHardware)return;
updatingFromHardware=TRUE;
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>(); UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
int i,j; int i,j;
UAVObjectField *field; UAVObjectField *field;
UAVDataObject* obj; UAVDataObject* obj;
obj = dynamic_cast<UAVDataObject*>(getObjectManager()->getObject(QString("SystemSettings")));
field = obj->getField(QString("GUIConfigData"));
GUIConfigData.UAVObject[0]=field->getValue(0).toUInt();
GUIConfigData.UAVObject[1]=field->getValue(1).toUInt();
UpdatCCPMUIFromOptions();
obj = dynamic_cast<UAVDataObject*>(objManager->getObject(QString("MixerSettings"))); obj = dynamic_cast<UAVDataObject*>(objManager->getObject(QString("MixerSettings")));
Q_ASSERT(obj); Q_ASSERT(obj);
@ -928,6 +1288,7 @@ void ConfigccpmWidget::requestccpmUpdate()
//just call it user angles for now.... //just call it user angles for now....
/*
m_ccpm->ccpmType->setCurrentIndex(m_ccpm->ccpmType->findText("Custom - User Angles")); m_ccpm->ccpmType->setCurrentIndex(m_ccpm->ccpmType->findText("Custom - User Angles"));
if (NumServos>1) if (NumServos>1)
@ -958,9 +1319,11 @@ void ConfigccpmWidget::requestccpmUpdate()
{//must be a custom config... "Custom - Advanced Settings" {//must be a custom config... "Custom - Advanced Settings"
m_ccpm->ccpmType->setCurrentIndex(m_ccpm->ccpmType->findText("Custom - Advanced Settings")); m_ccpm->ccpmType->setCurrentIndex(m_ccpm->ccpmType->findText("Custom - Advanced Settings"));
} }
HeadRotation=0; HeadRotation=0;
//calculate the angles
HeadRotation=m_ccpm->ccpmSingleServo->currentIndex();
//calculate the angles
for(j=0;j<NumServos;j++) for(j=0;j<NumServos;j++)
{ {
//MixerDataFromHeli[i][2]=(127.0*(1-CollectiveConstant)*sin((CorrectionAngle + ThisAngle[i])*Pi/180.00))));//Roll //MixerDataFromHeli[i][2]=(127.0*(1-CollectiveConstant)*sin((CorrectionAngle + ThisAngle[i])*Pi/180.00))));//Roll
@ -976,7 +1339,7 @@ void ConfigccpmWidget::requestccpmUpdate()
} }
//set the head rotation //set the head rotation
m_ccpm->ccpmSingleServo->setCurrentIndex(HeadRotation); //m_ccpm->ccpmSingleServo->setCurrentIndex(HeadRotation);
//calculate the un rotated angles //calculate the un rotated angles
for(j=0;j<NumServos;j++) for(j=0;j<NumServos;j++)
@ -996,15 +1359,19 @@ void ConfigccpmWidget::requestccpmUpdate()
} }
m_ccpm->ccpmAngleW->setValue(ServoAngles[SortAngles[0]]); //m_ccpm->ccpmAngleW->setValue(ServoAngles[SortAngles[0]]);
m_ccpm->ccpmAngleX->setValue(ServoAngles[SortAngles[1]]); //m_ccpm->ccpmAngleX->setValue(ServoAngles[SortAngles[1]]);
m_ccpm->ccpmAngleY->setValue(ServoAngles[SortAngles[2]]); //m_ccpm->ccpmAngleY->setValue(ServoAngles[SortAngles[2]]);
m_ccpm->ccpmAngleZ->setValue(ServoAngles[SortAngles[3]]); //m_ccpm->ccpmAngleZ->setValue(ServoAngles[SortAngles[3]]);
m_ccpm->ccpmServoWChannel->setCurrentIndex(ServoChannels[SortAngles[0]]); //m_ccpm->ccpmServoWChannel->setCurrentIndex(ServoChannels[SortAngles[0]]);
m_ccpm->ccpmServoXChannel->setCurrentIndex(ServoChannels[SortAngles[1]]); //m_ccpm->ccpmServoXChannel->setCurrentIndex(ServoChannels[SortAngles[1]]);
m_ccpm->ccpmServoYChannel->setCurrentIndex(ServoChannels[SortAngles[2]]); //m_ccpm->ccpmServoYChannel->setCurrentIndex(ServoChannels[SortAngles[2]]);
m_ccpm->ccpmServoZChannel->setCurrentIndex(ServoChannels[SortAngles[3]]); //m_ccpm->ccpmServoZChannel->setCurrentIndex(ServoChannels[SortAngles[3]]);
m_ccpm->ccpmServoWChannel->setCurrentIndex(ServoChannels[0]);
m_ccpm->ccpmServoXChannel->setCurrentIndex(ServoChannels[1]);
m_ccpm->ccpmServoYChannel->setCurrentIndex(ServoChannels[2]);
m_ccpm->ccpmServoZChannel->setCurrentIndex(ServoChannels[3]);
//Types << "CCPM 2 Servo 90º" << "CCPM 3 Servo 120º" << "CCPM 3 Servo 140º" << "FP 2 Servo 90º" << "Custom - User Angles" << "Custom - Advanced Settings" ; //Types << "CCPM 2 Servo 90º" << "CCPM 3 Servo 120º" << "CCPM 3 Servo 140º" << "FP 2 Servo 90º" << "Custom - User Angles" << "Custom - Advanced Settings" ;
@ -1070,7 +1437,7 @@ void ConfigccpmWidget::requestccpmUpdate()
{ {
} }
*/
@ -1091,7 +1458,8 @@ void ConfigccpmWidget::requestccpmUpdate()
updatingFromHardware=FALSE;
UpdatCCPMUIFromOptions();
ccpmSwashplateUpdate(); ccpmSwashplateUpdate();
} }
@ -1107,10 +1475,22 @@ void ConfigccpmWidget::sendccpmUpdate()
UAVDataObject* obj; UAVDataObject* obj;
if (SwashLvlConfigurationInProgress)return; if (SwashLvlConfigurationInProgress)return;
ShowDisclaimer(1); updatingToHardware=TRUE;
//ShowDisclaimer(1);
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>(); UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
UpdatCCPMOptionsFromUI();
obj = dynamic_cast<UAVDataObject*>(getObjectManager()->getObject(QString("SystemSettings")));
field = obj->getField(QString("GUIConfigData"));
field->setValue(GUIConfigData.UAVObject[0],0);
field->setValue(GUIConfigData.UAVObject[1],1);
obj->updated();
obj = dynamic_cast<UAVDataObject*>(objManager->getObject(QString("MixerSettings"))); obj = dynamic_cast<UAVDataObject*>(objManager->getObject(QString("MixerSettings")));
Q_ASSERT(obj); Q_ASSERT(obj);
@ -1176,8 +1556,32 @@ void ConfigccpmWidget::sendccpmUpdate()
field->setValue(m_ccpm->CurveSettings->item(i, 1)->text().toDouble(),i); field->setValue(m_ccpm->CurveSettings->item(i, 1)->text().toDouble(),i);
} }
obj->updated();
field = obj->getField(QString("Curve2Source"));
//mapping of collective input to curve 2...
//MixerSettings.Curve2Source = Throttle,Roll,Pitch,Yaw,Accessory0,Accessory1,Accessory2,Accessory3,Accessory4,Accessory5
//check if we are using throttle or directly from a channel...
if (GUIConfigData.heli.ccpmCollectivePassthroughState)
{// input channel
field->setValue("Accessory0");
obj->updated(); obj->updated();
obj = dynamic_cast<UAVDataObject*>(objManager->getObject(QString("ManualControlSettings")));
Q_ASSERT(obj);
field = obj->getField(QString("Accessory0"));
field->setValue(tr( "Channel%1" ).arg(GUIConfigData.heli.CollectiveChannel+1));
}
else
{// throttle
field->setValue("Throttle");
}
obj->updated();
updatingToHardware=FALSE;
} }
@ -1215,6 +1619,7 @@ void ConfigccpmWidget::showEvent(QShowEvent *event)
m_ccpm->ccpmAdvancedSettingsTable->setColumnWidth(i,(m_ccpm->ccpmAdvancedSettingsTable->width()- m_ccpm->ccpmAdvancedSettingsTable->setColumnWidth(i,(m_ccpm->ccpmAdvancedSettingsTable->width()-
m_ccpm->ccpmAdvancedSettingsTable->verticalHeader()->width())/6); m_ccpm->ccpmAdvancedSettingsTable->verticalHeader()->width())/6);
} }
ccpmSwashplateRedraw();
} }

View File

@ -34,6 +34,7 @@
#include "uavobject.h" #include "uavobject.h"
#include <QtSvg/QSvgRenderer> #include <QtSvg/QSvgRenderer>
#include <QtSvg/QGraphicsSvgItem> #include <QtSvg/QGraphicsSvgItem>
#include <QGraphicsEllipseItem>
#include <QtGui/QWidget> #include <QtGui/QWidget>
#include <QList> #include <QList>
@ -49,6 +50,30 @@ typedef struct {
int Min[CCPM_MAX_SWASH_SERVOS]; int Min[CCPM_MAX_SWASH_SERVOS];
} SwashplateServoSettingsStruct; } SwashplateServoSettingsStruct;
typedef struct {
uint SwasplateType:3;
uint FirstServoIndex:2;
uint CorrectionAngle:9;
uint ccpmCollectivePassthroughState:1;
uint ccpmLinkCyclicState:1;
uint ccpmLinkRollState:1;
uint CollectiveChannel:3;//20bits
uint SliderValue0:7;
uint SliderValue1:7;
uint SliderValue2:7;//41bits
uint ServoIndexW:4;
uint ServoIndexX:4;
uint ServoIndexY:4;
uint ServoIndexZ:4;//57bits
uint padding:7;
} __attribute__((packed)) heliGUISettingsStruct;
typedef union
{
uint UAVObject[2];//32bits * 2
heliGUISettingsStruct heli;//64bits
} GUIConfigDataUnion;
class ConfigccpmWidget: public ConfigTaskWidget class ConfigccpmWidget: public ConfigTaskWidget
{ {
Q_OBJECT Q_OBJECT
@ -72,6 +97,7 @@ private:
QGraphicsSvgItem *Servos[CCPM_MAX_SWASH_SERVOS]; QGraphicsSvgItem *Servos[CCPM_MAX_SWASH_SERVOS];
QGraphicsTextItem *ServosText[CCPM_MAX_SWASH_SERVOS]; QGraphicsTextItem *ServosText[CCPM_MAX_SWASH_SERVOS];
QGraphicsLineItem *ServoLines[CCPM_MAX_SWASH_SERVOS]; QGraphicsLineItem *ServoLines[CCPM_MAX_SWASH_SERVOS];
QGraphicsEllipseItem *ServosTextCircles[CCPM_MAX_SWASH_SERVOS];
QSpinBox *SwashLvlSpinBoxes[CCPM_MAX_SWASH_SERVOS]; QSpinBox *SwashLvlSpinBoxes[CCPM_MAX_SWASH_SERVOS];
bool SwashLvlConfigurationInProgress; bool SwashLvlConfigurationInProgress;
@ -82,11 +108,15 @@ private:
SwashplateServoSettingsStruct oldSwashLvlConfiguration; SwashplateServoSettingsStruct oldSwashLvlConfiguration;
SwashplateServoSettingsStruct newSwashLvlConfiguration; SwashplateServoSettingsStruct newSwashLvlConfiguration;
GUIConfigDataUnion GUIConfigData;
int MixerChannelData[6]; int MixerChannelData[6];
int ShowDisclaimer(int messageID); int ShowDisclaimer(int messageID);
virtual void enableControls(bool enable) { Q_UNUSED(enable)}; // Not used by this widget virtual void enableControls(bool enable) { Q_UNUSED(enable)}; // Not used by this widget
bool updatingFromHardware;
bool updatingToHardware;
private slots: private slots:
void ccpmSwashplateUpdate(); void ccpmSwashplateUpdate();
void ccpmSwashplateRedraw(); void ccpmSwashplateRedraw();
@ -104,6 +134,12 @@ private:
void SwashLvlCancelButtonPressed(); void SwashLvlCancelButtonPressed();
void SwashLvlFinishButtonPressed(); void SwashLvlFinishButtonPressed();
void UpdatCCPMOptionsFromUI();
void UpdatCCPMUIFromOptions();
void SetUIComponentVisibilities();
void ccpmChannelCheck();
void enableSwashplateLevellingControl(bool state); void enableSwashplateLevellingControl(bool state);
void setSwashplateLevel(int percent); void setSwashplateLevel(int percent);
void SwashLvlSpinBoxChanged(int value); void SwashLvlSpinBoxChanged(int value);

View File

@ -1,10 +1,11 @@
<xml> <xml>
<object name="SystemSettings" singleinstance="true" settings="true"> <object name="SystemSettings" singleinstance="true" settings="true">
<description>Select airframe type. Currently used by @ref ActuatorModule to choose mixing from @ref ActuatorDesired to @ref ActuatorCommand</description> <description>Select airframe type. Currently used by @ref ActuatorModule to choose mixing from @ref ActuatorDesired to @ref ActuatorCommand</description>
<field name="AirframeType" units="" type="enum" elements="1" options="FixedWing,FixedWingElevon,FixedWingVtail,VTOL,HeliCP,QuadX,QuadP,Hexa,Octo,Custom,HexaX,OctoV,OctoCoaxP,OctoCoaxX,HexaCoax,Tri" defaultvalue="FixedWing"/> <field name="AirframeType" units="" type="enum" elements="1" options="FixedWing,FixedWingElevon,FixedWingVtail,VTOL,HeliCP,QuadX,QuadP,Hexa,Octo,Custom,HexaX,OctoV,OctoCoaxP,OctoCoaxX,HexaCoax,Tri" defaultvalue="FixedWing"/>
<access gcs="readwrite" flight="readwrite"/> <field name="GUIConfigData" units="bits" type="uint32" elements="2" defaultvalue="0"/>
<telemetrygcs acked="true" updatemode="onchange" period="0"/> <access gcs="readwrite" flight="readwrite"/>
<telemetryflight acked="true" updatemode="onchange" period="0"/> <telemetrygcs acked="true" updatemode="onchange" period="0"/>
<logging updatemode="never" period="0"/> <telemetryflight acked="true" updatemode="onchange" period="0"/>
</object> <logging updatemode="never" period="0"/>
</xml> </object>
</xml>