1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-01 09:24:10 +01:00

Merge remote-tracking branch 'origin/laurent/OP-1466_Heli_config_tab' into rel-15.02

This commit is contained in:
Laurent Lalanne 2015-02-27 23:05:47 +01:00
commit 39ed1b0b45
4 changed files with 1713 additions and 1516 deletions

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>850</width> <width>850</width>
<height>572</height> <height>694</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -29,7 +29,16 @@
<bool>false</bool> <bool>false</bool>
</property> </property>
<layout class="QGridLayout" name="gridLayout_17"> <layout class="QGridLayout" name="gridLayout_17">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
@ -92,7 +101,7 @@
<string notr="true">#SwashplateBox,#SwashplateBox_2,#SwashplateBox_3,#SwashplateBox_4,#ccpmSwashImageBox,#SwashLvlInstructionsBox,#SwashLvlccpmSwashImageBox,#SwashLvlccpmSliderBox,#SwashLvlStatusBox,#ThrottleCurveBox,#PitchCurveBox{ <string notr="true">#SwashplateBox,#SwashplateBox_2,#SwashplateBox_3,#SwashplateBox_4,#ccpmSwashImageBox,#SwashLvlInstructionsBox,#SwashLvlccpmSwashImageBox,#SwashLvlccpmSliderBox,#SwashLvlStatusBox,#ThrottleCurveBox,#PitchCurveBox{
background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));
border: 1px outset #999; border: 1px outset #999;
border-radius: 3; border-radius: 6;
font:bold; font:bold;
} }
@ -100,16 +109,14 @@ QGroupBox::title {
subcontrol-origin: margin; subcontrol-origin: margin;
subcontrol-position: top center; /* position at the top center */ subcontrol-position: top center; /* position at the top center */
padding: 0 3px; padding: 0 3px;
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, top: 5px;
stop: 0 #FFOECE, stop: 1 #FFFFFF);
top: 5px;
}</string> }</string>
</property> </property>
<property name="tabShape"> <property name="tabShape">
<enum>QTabWidget::Rounded</enum> <enum>QTabWidget::Rounded</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<property name="documentMode"> <property name="documentMode">
<bool>false</bool> <bool>false</bool>
@ -119,42 +126,969 @@ QGroupBox::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>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="4">
<layout class="QVBoxLayout" name="ccpmSettingsBox" stretch="0,1,1,0,0"> <widget class="QGroupBox" name="ccpmSwashImageBox">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</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>
<property name="font">
<font>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Swashplate Layout</string>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_10">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>30</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="horizontalSpacing">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QSplitter" name="splitter_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QGraphicsView" name="SwashplateImage">
<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="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>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="backgroundBrush">
<brush brushstyle="DiagCrossPattern">
<color alpha="50">
<red>112</red>
<green>184</green>
<blue>138</blue>
</color>
</brush>
</property>
<property name="foregroundBrush">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>127</red>
<green>127</green>
<blue>127</blue>
</color>
</brush>
</property>
<property name="sceneRect">
<rectf>
<x>0.000000000000000</x>
<y>0.000000000000000</y>
<width>400.000000000000000</width>
<height>400.000000000000000</height>
</rectf>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="resizeAnchor">
<enum>QGraphicsView::AnchorViewCenter</enum>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="3">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item> <item>
<widget class="QGroupBox" name="SwashplateBox_2"> <widget class="QGroupBox" name="ccpmRevoMixingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>190</width> <width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>REVO</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="label_14">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>100%</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QSlider" name="ccpmRevoSlider">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_13">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>0%</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="ccpmREVOspinBox"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmPitchMixingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>CCPM</string>
</property>
<property name="alignment">
<set>Qt::AlignBottom|Qt::AlignHCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>10</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="label_15">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Collective</string>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QSlider" name="ccpmCollectiveSlider">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_16">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Cyclic</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="ccpmCollectivespinBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmCollectiveScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Collective</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QSlider" name="ccpmCollectiveScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmCollectiveScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmCyclicScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Cyclic</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QSlider" name="ccpmCyclicScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmCyclicScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmPitchScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Pitch</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_13">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QSlider" name="ccpmPitchScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmPitchScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmRollScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Roll</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QSlider" name="ccpmRollScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmRollScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<layout class="QVBoxLayout" name="ccpmSettingsBox" stretch="0,1,1,0">
<item>
<widget class="QGroupBox" name="SwashplateBox_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
<string>Motor outputs</string> <string>Motor outputs</string>
</property> </property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_18"> <layout class="QGridLayout" name="gridLayout_18">
<property name="horizontalSpacing"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="topMargin">
<number>2</number> <number>30</number>
</property> </property>
<property name="margin"> <property name="rightMargin">
<number>3</number> <number>3</number>
</property> </property>
<item row="2" column="1"> <property name="bottomMargin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="1" column="1">
<widget class="QComboBox" name="ccpmTailChannel"> <widget class="QComboBox" name="ccpmTailChannel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -171,12 +1105,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="0" column="1">
<widget class="QComboBox" name="ccpmEngineChannel"> <widget class="QComboBox" name="ccpmEngineChannel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -193,12 +1127,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="1" column="0">
<widget class="QLabel" name="ccpmTailLabel"> <widget class="QLabel" name="ccpmTailLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -223,7 +1157,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="0" column="0">
<widget class="QLabel" name="ccpmEngineLabel"> <widget class="QLabel" name="ccpmEngineLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -248,36 +1182,26 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="SwashplateBox"> <widget class="QGroupBox" name="SwashplateBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum"> <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>12</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>190</width> <width>16777215</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
@ -285,16 +1209,22 @@ QGroupBox::title {
<string>Swashplate outputs</string> <string>Swashplate outputs</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_19"> <layout class="QGridLayout" name="gridLayout_19">
<property name="horizontalSpacing"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="topMargin">
<number>2</number> <number>30</number>
</property> </property>
<property name="margin"> <property name="rightMargin">
<number>3</number> <number>3</number>
</property> </property>
<item row="1" column="0"> <property name="bottomMargin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="ccpmServoWLabel"> <widget class="QLabel" name="ccpmServoWLabel">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -322,7 +1252,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="0" column="1">
<widget class="QComboBox" name="ccpmServoWChannel"> <widget class="QComboBox" name="ccpmServoWChannel">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -342,12 +1272,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="1" column="1">
<widget class="QComboBox" name="ccpmServoXChannel"> <widget class="QComboBox" name="ccpmServoXChannel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -364,12 +1294,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="3" column="1">
<widget class="QComboBox" name="ccpmServoYChannel"> <widget class="QComboBox" name="ccpmServoYChannel">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -389,12 +1319,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="1" column="0">
<widget class="QLabel" name="ccpmServoXLabel"> <widget class="QLabel" name="ccpmServoXLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -419,7 +1349,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="1"> <item row="5" column="1">
<widget class="QComboBox" name="ccpmSingleServo"> <widget class="QComboBox" name="ccpmSingleServo">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
@ -461,7 +1391,7 @@ QGroupBox::title {
</item> </item>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="5" column="0">
<widget class="QLabel" name="ccpmServoZLabel_3"> <widget class="QLabel" name="ccpmServoZLabel_3">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -486,7 +1416,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="4" column="1">
<widget class="QComboBox" name="ccpmServoZChannel"> <widget class="QComboBox" name="ccpmServoZChannel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
@ -503,12 +1433,12 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>100</width> <width>100</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="4" column="0">
<widget class="QLabel" name="ccpmServoZLabel"> <widget class="QLabel" name="ccpmServoZLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -533,7 +1463,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="3" column="0">
<widget class="QLabel" name="ccpmServoYLabel"> <widget class="QLabel" name="ccpmServoYLabel">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -561,117 +1491,51 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0">
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QGroupBox" name="SwashplateBox_3"> <widget class="QGroupBox" name="SwashplateBox_3">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<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>70</width> <width>200</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>190</width> <width>16777215</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
<string>Swashplate Servo Angles</string> <string>Swashplate Servo Angles</string>
</property> </property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<layout class="QGridLayout" name="gridLayout_20"> <layout class="QGridLayout" name="gridLayout_20">
<property name="horizontalSpacing"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="topMargin">
<number>2</number> <number>30</number>
</property> </property>
<property name="margin"> <property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number> <number>3</number>
</property> </property>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="ccpmAngleW">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>85</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>85</width>
<height>16777215</height>
</size>
</property>
<property name="decimals">
<number>0</number>
</property>
<property name="maximum">
<double>360.000000000000000</double>
</property>
<property name="singleStep">
<double>15.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="ccpmServoWLabel_2">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Angle W</string>
</property>
</widget>
</item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QLabel" name="ccpmServoXLabel_2"> <widget class="QLabel" name="ccpmServoXLabel_2">
<property name="sizePolicy"> <property name="sizePolicy">
@ -798,7 +1662,7 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
<property name="decimals"> <property name="decimals">
@ -832,7 +1696,7 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
<property name="decimals"> <property name="decimals">
@ -863,7 +1727,7 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
<property name="decimals"> <property name="decimals">
@ -894,7 +1758,7 @@ QGroupBox::title {
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>16777215</height> <height>25</height>
</size> </size>
</property> </property>
<property name="decimals"> <property name="decimals">
@ -908,21 +1772,64 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0"> <item row="1" column="0">
<spacer name="verticalSpacer_7"> <widget class="QLabel" name="ccpmServoWLabel_2">
<property name="orientation"> <property name="enabled">
<enum>Qt::Vertical</enum> <bool>true</bool>
</property> </property>
<property name="sizeType"> <property name="sizePolicy">
<enum>QSizePolicy::Fixed</enum> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="minimumSize">
<size> <size>
<width>20</width> <width>80</width>
<height>20</height> <height>0</height>
</size> </size>
</property> </property>
</spacer> <property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Angle W</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="ccpmAngleW">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>85</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>85</width>
<height>25</height>
</size>
</property>
<property name="decimals">
<number>0</number>
</property>
<property name="maximum">
<double>360.000000000000000</double>
</property>
<property name="singleStep">
<double>15.000000000000000</double>
</property>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>
@ -930,14 +1837,20 @@ QGroupBox::title {
<item> <item>
<widget class="QGroupBox" name="SwashplateBox_4"> <widget class="QGroupBox" name="SwashplateBox_4">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>190</width> <width>16777215</width>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
@ -945,23 +1858,29 @@ QGroupBox::title {
<string>CCPM Options</string> <string>CCPM Options</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_21"> <layout class="QGridLayout" name="gridLayout_21">
<property name="horizontalSpacing"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="topMargin">
<number>2</number> <number>30</number>
</property> </property>
<property name="margin"> <property name="rightMargin">
<number>3</number> <number>3</number>
</property> </property>
<item row="2" column="0"> <property name="bottomMargin">
<number>3</number>
</property>
<property name="spacing">
<number>3</number>
</property>
<item row="1" column="0">
<widget class="QCheckBox" name="ccpmCollectivePassthrough"> <widget class="QCheckBox" name="ccpmCollectivePassthrough">
<property name="text"> <property name="text">
<string>Collective Pass through</string> <string>Collective Pass through</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="3" column="0">
<widget class="QCheckBox" name="ccpmLinkRoll"> <widget class="QCheckBox" name="ccpmLinkRoll">
<property name="text"> <property name="text">
<string>Link Roll/Pitch</string> <string>Link Roll/Pitch</string>
@ -971,7 +1890,7 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="2" column="0">
<widget class="QCheckBox" name="ccpmLinkCyclic"> <widget class="QCheckBox" name="ccpmLinkCyclic">
<property name="text"> <property name="text">
<string>Link Cyclic/Collective</string> <string>Link Cyclic/Collective</string>
@ -981,895 +1900,6 @@ QGroupBox::title {
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0">
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="0" column="10">
<layout class="QVBoxLayout" name="ccpmSwashImageBox_2">
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="ccpmSwashImageBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>600</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>
<property name="font">
<font>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="title">
<string>Swashplate Layout</string>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_10">
<property name="horizontalSpacing">
<number>3</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item row="1" column="0">
<widget class="QSplitter" name="splitter_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QGraphicsView" name="SwashplateImage">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>10</width>
<height>10</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>
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="backgroundBrush">
<brush brushstyle="DiagCrossPattern">
<color alpha="50">
<red>112</red>
<green>184</green>
<blue>138</blue>
</color>
</brush>
</property>
<property name="foregroundBrush">
<brush brushstyle="SolidPattern">
<color alpha="0">
<red>127</red>
<green>127</green>
<blue>127</blue>
</color>
</brush>
</property>
<property name="sceneRect">
<rectf>
<x>0.000000000000000</x>
<y>0.000000000000000</y>
<width>400.000000000000000</width>
<height>400.000000000000000</height>
</rectf>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="resizeAnchor">
<enum>QGraphicsView::AnchorViewCenter</enum>
</property>
</widget>
</widget>
</item>
<item row="0" column="0">
<spacer name="verticalSpacer_9">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="0" column="3">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="sizeConstraint">
<enum>QLayout::SetNoConstraint</enum>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QGroupBox" name="ccpmRevoMixingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>REVO</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="label_14">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>100%</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QSlider" name="ccpmRevoSlider">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_13">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>0%</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="ccpmREVOspinBox"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmPitchMixingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>60</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>CCPM</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<widget class="QLabel" name="label_15">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Collective</string>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QSlider" name="ccpmCollectiveSlider">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_16">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Cyclic</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="ccpmCollectivespinBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmCollectiveScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Collective</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QSlider" name="ccpmCollectiveScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmCollectiveScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmCyclicScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Cyclic</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QSlider" name="ccpmCyclicScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmCyclicScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmPitchScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Pitch</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_13">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QSlider" name="ccpmPitchScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmPitchScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="ccpmRollScalingBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>100</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>600</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">QGroupBox::title {
background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255));
color: rgb(255, 255, 255);
border-radius: 5;
margin:1px;
}</string>
</property>
<property name="title">
<string>Roll</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_10">
<property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QSlider" name="ccpmRollScale">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>100</height>
</size>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QSpinBox" name="ccpmRollScaleBox">
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="value">
<number>50</number>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@ -1882,7 +1912,16 @@ margin:1px;
<string>Swashplate Levelling</string> <string>Swashplate Levelling</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_8"> <layout class="QGridLayout" name="gridLayout_8">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -1890,13 +1929,16 @@ margin:1px;
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_8"> <layout class="QVBoxLayout" name="verticalLayout_8">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin"> <property name="leftMargin">
<number>3</number> <number>3</number>
</property> </property>
<item> <item>
<widget class="QGroupBox" name="SwashLvlInstructionsBox"> <widget class="QGroupBox" name="SwashLvlInstructionsBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -1904,43 +1946,70 @@ margin:1px;
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>228</width> <width>228</width>
<height>0</height> <height>200</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
<string>Commands</string> <string>Commands</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="margin"> <property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number> <number>3</number>
</property> </property>
<item>
<spacer name="verticalSpacer_16">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_9"> <layout class="QHBoxLayout" name="horizontalLayout_9">
<property name="spacing"> <property name="spacing">
<number>0</number> <number>3</number>
</property> </property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>30</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<widget class="QPushButton" name="SwashLvlPrevButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>85</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>85</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Prev</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QPushButton" name="SwashLvlStartButton"> <widget class="QPushButton" name="SwashLvlStartButton">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>0</height> <height>20</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@ -1962,7 +2031,7 @@ margin:1px;
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>85</width> <width>85</width>
<height>0</height> <height>20</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@ -1980,18 +2049,27 @@ margin:1px;
</item> </item>
<item> <item>
<widget class="QTextEdit" name="SwashLvlStepInstruction"> <widget class="QTextEdit" name="SwashLvlStepInstruction">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>250</width>
<height>150</height> <height>20</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>220</width> <width>500</width>
<height>450</height> <height>800</height>
</size> </size>
</property> </property>
<property name="styleSheet">
<string notr="true">QTextEdit { padding-left:4; padding-top:4; padding-bottom:4; padding-right:4}</string>
</property>
<property name="horizontalScrollBarPolicy"> <property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum> <enum>Qt::ScrollBarAlwaysOff</enum>
</property> </property>
@ -2002,37 +2080,21 @@ margin:1px;
</item> </item>
<item> <item>
<layout class="QGridLayout" name="gridLayout_3"> <layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0"> <property name="topMargin">
<widget class="QPushButton" name="SwashLvlCancelButton"> <number>3</number>
<property name="enabled"> </property>
<bool>false</bool> <property name="bottomMargin">
</property> <number>3</number>
<property name="minimumSize"> </property>
<size> <item row="2" column="0">
<width>170</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>170</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="SwashLvlFinishButton"> <widget class="QPushButton" name="SwashLvlFinishButton">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>170</width> <width>85</width>
<height>0</height> <height>20</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@ -2046,6 +2108,28 @@ margin:1px;
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0">
<widget class="QPushButton" name="SwashLvlCancelButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimumSize">
<size>
<width>85</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>170</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>
@ -2054,7 +2138,7 @@ margin:1px;
<item> <item>
<widget class="QGroupBox" name="SwashLvlStatusBox"> <widget class="QGroupBox" name="SwashLvlStatusBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Maximum"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -2062,36 +2146,78 @@ margin:1px;
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>200</width> <width>200</width>
<height>0</height> <height>130</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
<string>Status</string> <string>Status</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_22"> <layout class="QGridLayout" name="gridLayout_22">
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>30</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>3</number> <number>3</number>
</property> </property>
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>2</number> <number>2</number>
</property> </property>
<property name="margin"> <item row="0" column="0">
<number>3</number>
</property>
<item row="1" column="0">
<widget class="QListWidget" name="SwashLvlStepList"> <widget class="QListWidget" name="SwashLvlStepList">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>220</width> <width>100</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>190</width> <width>100</width>
<height>125</height> <height>92</height>
</size> </size>
</property> </property>
<property name="cursor" stdset="0">
<cursorShape>ArrowCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="midLineWidth">
<number>0</number>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="autoScrollMargin">
<number>16</number>
</property>
<property name="editTriggers"> <property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set> <set>QAbstractItemView::NoEditTriggers</set>
</property> </property>
@ -2104,6 +2230,9 @@ margin:1px;
<property name="selectionBehavior"> <property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum> <enum>QAbstractItemView::SelectRows</enum>
</property> </property>
<property name="viewMode">
<enum>QListView::ListMode</enum>
</property>
<item> <item>
<property name="text"> <property name="text">
<string>Neutral</string> <string>Neutral</string>
@ -2152,41 +2281,9 @@ margin:1px;
</item> </item>
</widget> </widget>
</item> </item>
<item row="0" column="0">
<spacer name="verticalSpacer_19">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<spacer name="verticalSpacer_4">
<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>0</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
@ -2195,7 +2292,7 @@ margin:1px;
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <sizepolicy hsizetype="Fixed" vsizetype="MinimumExpanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -2203,13 +2300,13 @@ margin:1px;
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>70</width> <width>70</width>
<height>100</height> <height>250</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>50</width> <width>16777215</width>
<height>600</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="title"> <property name="title">
@ -2220,27 +2317,20 @@ margin:1px;
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QVBoxLayout" name="verticalLayout_5">
<property name="spacing"> <property name="spacing">
<number>0</number>
</property>
<property name="margin">
<number>3</number> <number>3</number>
</property> </property>
<item> <property name="leftMargin">
<spacer name="verticalSpacer_18"> <number>3</number>
<property name="orientation"> </property>
<enum>Qt::Vertical</enum> <property name="topMargin">
</property> <number>30</number>
<property name="sizeType"> </property>
<enum>QSizePolicy::Fixed</enum> <property name="rightMargin">
</property> <number>3</number>
<property name="sizeHint" stdset="0"> </property>
<size> <property name="bottomMargin">
<width>20</width> <number>3</number>
<height>20</height> </property>
</size>
</property>
</spacer>
</item>
<item> <item>
<widget class="QLabel" name="label_17"> <widget class="QLabel" name="label_17">
<property name="enabled"> <property name="enabled">
@ -2338,7 +2428,7 @@ margin:1px;</string>
<item row="0" column="2"> <item row="0" column="2">
<widget class="QGroupBox" name="SwashLvlccpmSwashImageBox"> <widget class="QGroupBox" name="SwashLvlccpmSwashImageBox">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>1</horstretch> <horstretch>1</horstretch>
<verstretch>1</verstretch> <verstretch>1</verstretch>
</sizepolicy> </sizepolicy>
@ -2346,13 +2436,13 @@ margin:1px;</string>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>200</width> <width>200</width>
<height>200</height> <height>300</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>600</width> <width>16777215</width>
<height>600</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="sizeIncrement"> <property name="sizeIncrement">
@ -2380,13 +2470,22 @@ margin:1px;</string>
<bool>false</bool> <bool>false</bool>
</property> </property>
<layout class="QGridLayout" name="gridLayout_11"> <layout class="QGridLayout" name="gridLayout_11">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>30</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<property name="horizontalSpacing"> <property name="horizontalSpacing">
<number>3</number> <number>6</number>
</property> </property>
<property name="margin"> <item row="0" column="0">
<number>3</number>
</property>
<item row="1" column="0">
<widget class="QSplitter" name="splitter_4"> <widget class="QSplitter" name="splitter_4">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -2400,8 +2499,8 @@ margin:1px;</string>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>10</width> <width>250</width>
<height>10</height> <height>300</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@ -2475,22 +2574,6 @@ margin:1px;</string>
</widget> </widget>
</widget> </widget>
</item> </item>
<item row="0" column="0">
<spacer name="verticalSpacer_17">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@ -2501,7 +2584,16 @@ margin:1px;</string>
<string>Curve settings</string> <string>Curve settings</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_7"> <layout class="QGridLayout" name="gridLayout_7">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -2554,7 +2646,16 @@ margin:1px;</string>
<bool>false</bool> <bool>false</bool>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -2627,7 +2728,16 @@ margin:1px;</string>
<string/> <string/>
</property> </property>
<layout class="QGridLayout" name="gridLayout_5"> <layout class="QGridLayout" name="gridLayout_5">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -2695,7 +2805,16 @@ margin:1px;</string>
<string>Advanced settings</string> <string>Advanced settings</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_4"> <layout class="QGridLayout" name="gridLayout_4">
<property name="margin"> <property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number> <number>9</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -3140,7 +3259,6 @@ margin:1px;</string>
<tabstop>ccpmServoYChannel</tabstop> <tabstop>ccpmServoYChannel</tabstop>
<tabstop>ccpmServoZChannel</tabstop> <tabstop>ccpmServoZChannel</tabstop>
<tabstop>ccpmSingleServo</tabstop> <tabstop>ccpmSingleServo</tabstop>
<tabstop>ccpmAngleW</tabstop>
<tabstop>ccpmAngleX</tabstop> <tabstop>ccpmAngleX</tabstop>
<tabstop>ccpmAngleY</tabstop> <tabstop>ccpmAngleY</tabstop>
<tabstop>ccpmAngleZ</tabstop> <tabstop>ccpmAngleZ</tabstop>
@ -3150,9 +3268,7 @@ margin:1px;</string>
<tabstop>ccpmCollectiveSlider</tabstop> <tabstop>ccpmCollectiveSlider</tabstop>
<tabstop>ccpmCollectivespinBox</tabstop> <tabstop>ccpmCollectivespinBox</tabstop>
<tabstop>SwashplateImage</tabstop> <tabstop>SwashplateImage</tabstop>
<tabstop>SwashLvlStartButton</tabstop>
<tabstop>SwashLvlNextButton</tabstop> <tabstop>SwashLvlNextButton</tabstop>
<tabstop>SwashLvlStepInstruction</tabstop>
<tabstop>SwashLvlCancelButton</tabstop> <tabstop>SwashLvlCancelButton</tabstop>
<tabstop>SwashLvlFinishButton</tabstop> <tabstop>SwashLvlFinishButton</tabstop>
<tabstop>SwashLvlStepList</tabstop> <tabstop>SwashLvlStepList</tabstop>

View File

@ -40,8 +40,6 @@
#include <math.h> #include <math.h>
#define Pi 3.14159265358979323846
QStringList ConfigCcpmWidget::getChannelDescriptions() QStringList ConfigCcpmWidget::getChannelDescriptions()
{ {
// init a channel_numelem list of channel desc defaults // init a channel_numelem list of channel desc defaults
@ -181,16 +179,19 @@ ConfigCcpmWidget::ConfigCcpmWidget(QWidget *parent) :
Servos[i] = new QGraphicsSvgItem(); Servos[i] = new QGraphicsSvgItem();
Servos[i]->setSharedRenderer(renderer); Servos[i]->setSharedRenderer(renderer);
Servos[i]->setElementId(ServoNames.at(i)); Servos[i]->setElementId(ServoNames.at(i));
Servos[i]->setZValue(20);
m_aircraft->SwashplateImage->scene()->addItem(Servos[i]); m_aircraft->SwashplateImage->scene()->addItem(Servos[i]);
ServosText[i] = new QGraphicsTextItem(); ServosText[i] = new QGraphicsTextItem();
ServosText[i]->setDefaultTextColor(Qt::yellow); ServosText[i]->setDefaultTextColor(Qt::yellow);
ServosText[i]->setPlainText(QString("-")); ServosText[i]->setPlainText(QString("-"));
ServosText[i]->setFont(serifFont); ServosText[i]->setFont(serifFont);
ServosText[i]->setZValue(31);
ServosTextCircles[i] = new QGraphicsEllipseItem(1, 1, 30, 30); ServosTextCircles[i] = new QGraphicsEllipseItem(1, 1, 30, 30);
ServosTextCircles[i]->setBrush(brush); ServosTextCircles[i]->setBrush(brush);
ServosTextCircles[i]->setPen(pen2); ServosTextCircles[i]->setPen(pen2);
ServosTextCircles[i]->setZValue(30);
m_aircraft->SwashplateImage->scene()->addItem(ServosTextCircles[i]); m_aircraft->SwashplateImage->scene()->addItem(ServosTextCircles[i]);
m_aircraft->SwashplateImage->scene()->addItem(ServosText[i]); m_aircraft->SwashplateImage->scene()->addItem(ServosText[i]);
@ -257,6 +258,7 @@ ConfigCcpmWidget::ConfigCcpmWidget(QWidget *parent) :
connect(m_aircraft->SwashLvlStartButton, SIGNAL(clicked()), this, SLOT(SwashLvlStartButtonPressed())); connect(m_aircraft->SwashLvlStartButton, SIGNAL(clicked()), this, SLOT(SwashLvlStartButtonPressed()));
connect(m_aircraft->SwashLvlNextButton, SIGNAL(clicked()), this, SLOT(SwashLvlNextButtonPressed())); connect(m_aircraft->SwashLvlNextButton, SIGNAL(clicked()), this, SLOT(SwashLvlNextButtonPressed()));
connect(m_aircraft->SwashLvlPrevButton, SIGNAL(clicked()), this, SLOT(SwashLvlPrevButtonPressed()));
connect(m_aircraft->SwashLvlCancelButton, SIGNAL(clicked()), this, SLOT(SwashLvlCancelButtonPressed())); connect(m_aircraft->SwashLvlCancelButton, SIGNAL(clicked()), this, SLOT(SwashLvlCancelButtonPressed()));
connect(m_aircraft->SwashLvlFinishButton, SIGNAL(clicked()), this, SLOT(SwashLvlFinishButtonPressed())); connect(m_aircraft->SwashLvlFinishButton, SIGNAL(clicked()), this, SLOT(SwashLvlFinishButtonPressed()));
@ -391,9 +393,13 @@ void ConfigCcpmWidget::UpdateType()
TypeText = m_aircraft->ccpmType->currentText(); TypeText = m_aircraft->ccpmType->currentText();
SingleServoIndex = m_aircraft->ccpmSingleServo->currentIndex(); SingleServoIndex = m_aircraft->ccpmSingleServo->currentIndex();
// set visibility of user settings // set visibility of user settings (When Custom)
m_aircraft->ccpmAdvancedSettingsTable->setEnabled(TypeInt == 0); m_aircraft->ccpmAdvancedSettingsTable->setEnabled(TypeInt == 0);
// Clear advanced settings table if not Custom selected (Keep previous settings)
if (TypeText.compare(QString::fromUtf8("Custom - Advanced Settings"), Qt::CaseInsensitive) != 0) {
m_aircraft->ccpmAdvancedSettingsTable->clearFocus(); m_aircraft->ccpmAdvancedSettingsTable->clearFocus();
}
m_aircraft->ccpmAngleW->setEnabled(TypeInt == 1); m_aircraft->ccpmAngleW->setEnabled(TypeInt == 1);
m_aircraft->ccpmAngleX->setEnabled(TypeInt == 1); m_aircraft->ccpmAngleX->setEnabled(TypeInt == 1);
@ -552,15 +558,19 @@ void ConfigCcpmWidget::ccpmSwashplateRedraw()
QRect size; QRect size;
double scale, xscale, yscale; double scale, xscale, yscale;
size = m_aircraft->SwashplateImage->rect();
// If size = default, get size from other Img/tab
if (size.width() == 100) {
size = m_aircraft->SwashLvlSwashplateImage->rect();
}
size = m_aircraft->SwashplateImage->rect();
xscale = size.width(); xscale = size.width();
yscale = size.height(); yscale = size.height();
scale = xscale; scale = xscale;
if (yscale < scale) { if (yscale < scale) {
scale = yscale; scale = yscale;
} }
scale /= 460.00; scale /= 540.00;
m_aircraft->SwashplateImage->resetTransform(); m_aircraft->SwashplateImage->resetTransform();
m_aircraft->SwashplateImage->scale(scale, scale); m_aircraft->SwashplateImage->scale(scale, scale);
@ -592,10 +602,10 @@ void ConfigCcpmWidget::ccpmSwashplateRedraw()
used[1] = ((m_aircraft->ccpmServoXChannel->currentIndex() > 0) && (m_aircraft->ccpmServoXChannel->isEnabled())); used[1] = ((m_aircraft->ccpmServoXChannel->currentIndex() > 0) && (m_aircraft->ccpmServoXChannel->isEnabled()));
used[2] = ((m_aircraft->ccpmServoYChannel->currentIndex() > 0) && (m_aircraft->ccpmServoYChannel->isEnabled())); used[2] = ((m_aircraft->ccpmServoYChannel->currentIndex() > 0) && (m_aircraft->ccpmServoYChannel->isEnabled()));
used[3] = ((m_aircraft->ccpmServoZChannel->currentIndex() > 0) && (m_aircraft->ccpmServoZChannel->isEnabled())); used[3] = ((m_aircraft->ccpmServoZChannel->currentIndex() > 0) && (m_aircraft->ccpmServoZChannel->isEnabled()));
angle[0] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleW->value()) * Pi / 180.00; angle[0] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleW->value()) * M_PI / 180.00;
angle[1] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleX->value()) * Pi / 180.00; angle[1] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleX->value()) * M_PI / 180.00;
angle[2] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleY->value()) * Pi / 180.00; angle[2] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleY->value()) * M_PI / 180.00;
angle[3] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleZ->value()) * Pi / 180.00; angle[3] = (CorrectionAngle + 180 + m_aircraft->ccpmAngleZ->value()) * M_PI / 180.00;
for (i = 0; i < CCPM_MAX_SWASH_SERVOS; i++) { for (i = 0; i < CCPM_MAX_SWASH_SERVOS; i++) {
@ -640,16 +650,16 @@ void ConfigCcpmWidget::ccpmSwashplateRedraw()
ServoLines[i]->setVisible(defined[i] != 0); ServoLines[i]->setVisible(defined[i] != 0);
} }
// m_aircraft->SwashplateImage->centerOn (CenterX, CenterY); // m_aircraft->SwashplateImage->centerOn(CenterX, CenterY);
// m_aircraft->SwashplateImage->fitInView(SwashplateImg, Qt::KeepAspectRatio); // m_aircraft->SwashplateImage->fitInView(SwashplateImg, Qt::KeepAspectRatio);
} }
void ConfigCcpmWidget::ccpmSwashplateUpdate() void ConfigCcpmWidget::ccpmSwashplateUpdate()
{ {
ccpmSwashplateRedraw();
SetUIComponentVisibilities();
UpdateMixer(); UpdateMixer();
SetUIComponentVisibilities();
ccpmSwashplateRedraw();
} }
void ConfigCcpmWidget::UpdateMixer() void ConfigCcpmWidget::UpdateMixer()
@ -685,8 +695,8 @@ void ConfigCcpmWidget::UpdateMixer()
; ;
} }
} }
int TypeInt = m_aircraft->ccpmType->count() - m_aircraft->ccpmType->currentIndex() - 1;
if (config.heli.SwashplateType > 0) { // not advanced settings if (TypeInt != 0) { // not advanced settings
// get the channel data from the ui // get the channel data from the ui
MixerChannelData[0] = m_aircraft->ccpmEngineChannel->currentIndex(); MixerChannelData[0] = m_aircraft->ccpmEngineChannel->currentIndex();
MixerChannelData[1] = m_aircraft->ccpmTailChannel->currentIndex(); MixerChannelData[1] = m_aircraft->ccpmTailChannel->currentIndex();
@ -762,11 +772,11 @@ void ConfigCcpmWidget::UpdateMixer()
table->item(i, 3)->setText( table->item(i, 3)->setText(
QString("%1").arg( QString("%1").arg(
(int)(127.0 * (RollConstant) (int)(127.0 * (RollConstant)
* sin((180 + config.heli.CorrectionAngle + ThisAngle[i]) * Pi / 180.00)))); // Roll * sin((180 + config.heli.CorrectionAngle + ThisAngle[i]) * M_PI / 180.00)))); // Roll
table->item(i, 4)->setText( table->item(i, 4)->setText(
QString("%1").arg( QString("%1").arg(
(int)(127.0 * (PitchConstant) (int)(127.0 * (PitchConstant)
* cos((config.heli.CorrectionAngle + ThisAngle[i]) * Pi / 180.00)))); // Pitch * cos((config.heli.CorrectionAngle + ThisAngle[i]) * M_PI / 180.00)))); // Pitch
// Yaw // Yaw
table->item(i, 5)->setText(QString("%1").arg(0)); table->item(i, 5)->setText(QString("%1").arg(0));
} }
@ -779,13 +789,14 @@ void ConfigCcpmWidget::UpdateMixer()
} else { } else {
// advanced settings // advanced settings
QTableWidget *table = m_aircraft->ccpmAdvancedSettingsTable; QTableWidget *table = m_aircraft->ccpmAdvancedSettingsTable;
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) {
Channel = table->item(i, 0)->text(); Channel = table->item(i, 0)->text();
if (Channel == "-") { if (Channel == "-") {
Channel = QString("9"); Channel = QString((int)ConfigCcpmWidget::CHANNEL_NUMELEM + 1);
} }
MixerChannelData[i] = Channel.toInt(); MixerChannelData[i] = Channel.toInt();
} }
} }
} }
@ -874,6 +885,15 @@ void ConfigCcpmWidget::SetUIComponentVisibilities()
m_aircraft->ccpmRollScalingBox->setVisible(!m_aircraft->ccpmLinkRoll->isChecked()); m_aircraft->ccpmRollScalingBox->setVisible(!m_aircraft->ccpmLinkRoll->isChecked());
m_aircraft->ccpmLinkRoll->setVisible(1); m_aircraft->ccpmLinkRoll->setVisible(1);
} }
// clear status check boxes
m_aircraft->SwashLvlStepList->item(0)->setCheckState(Qt::Unchecked);
m_aircraft->SwashLvlStepList->item(1)->setCheckState(Qt::Unchecked);
m_aircraft->SwashLvlStepList->item(2)->setCheckState(Qt::Unchecked);
m_aircraft->SwashLvlStepList->item(3)->setCheckState(Qt::Unchecked);
m_aircraft->SwashLvlStepList->item(0)->setBackground(Qt::transparent);
m_aircraft->SwashLvlStepList->item(1)->setBackground(Qt::transparent);
m_aircraft->SwashLvlStepList->item(2)->setBackground(Qt::transparent);
m_aircraft->SwashLvlStepList->item(3)->setBackground(Qt::transparent);
} }
/** /**
@ -939,16 +959,20 @@ void ConfigCcpmWidget::setMixer()
UpdateMixer(); UpdateMixer();
// Set up some helper pointers // Set up some helper pointers
qint8 *mixers[8] = { mixerSettingsData.Mixer1Vector, qint8 *mixers[12] = { mixerSettingsData.Mixer1Vector,
mixerSettingsData.Mixer2Vector, mixerSettingsData.Mixer2Vector,
mixerSettingsData.Mixer3Vector, mixerSettingsData.Mixer3Vector,
mixerSettingsData.Mixer4Vector, mixerSettingsData.Mixer4Vector,
mixerSettingsData.Mixer5Vector, mixerSettingsData.Mixer5Vector,
mixerSettingsData.Mixer6Vector, mixerSettingsData.Mixer6Vector,
mixerSettingsData.Mixer7Vector, mixerSettingsData.Mixer7Vector,
mixerSettingsData.Mixer8Vector }; mixerSettingsData.Mixer8Vector,
mixerSettingsData.Mixer9Vector,
mixerSettingsData.Mixer10Vector,
mixerSettingsData.Mixer11Vector,
mixerSettingsData.Mixer12Vector };
quint8 *mixerTypes[8] = { quint8 *mixerTypes[12] = {
&mixerSettingsData.Mixer1Type, &mixerSettingsData.Mixer1Type,
&mixerSettingsData.Mixer2Type, &mixerSettingsData.Mixer2Type,
&mixerSettingsData.Mixer3Type, &mixerSettingsData.Mixer3Type,
@ -956,17 +980,20 @@ void ConfigCcpmWidget::setMixer()
&mixerSettingsData.Mixer5Type, &mixerSettingsData.Mixer5Type,
&mixerSettingsData.Mixer6Type, &mixerSettingsData.Mixer6Type,
&mixerSettingsData.Mixer7Type, &mixerSettingsData.Mixer7Type,
&mixerSettingsData.Mixer8Type &mixerSettingsData.Mixer8Type,
&mixerSettingsData.Mixer9Type,
&mixerSettingsData.Mixer10Type,
&mixerSettingsData.Mixer11Type,
&mixerSettingsData.Mixer12Type
}; };
// reset all to Disabled // reset all to Disabled
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
*mixerTypes[i] = 0; *mixerTypes[i] = 0;
} }
// go through the user data and update the mixer matrix // go through the user data and update the mixer matrix
for (i = 0; i < 6; i++) { for (i = 0; i < 6; i++) {
if (MixerChannelData[i] > 0) { if ((MixerChannelData[i] > 0) && (MixerChannelData[i] < (int)ConfigCcpmWidget::CHANNEL_NUMELEM + 1)) {
// Set the mixer type. If Coax, then first two are motors. Otherwise, only first is motor // Set the mixer type. If Coax, then first two are motors. Otherwise, only first is motor
if (TypeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) { if (TypeText.compare(QString::fromUtf8("Coax 2 Servo 90º"), Qt::CaseInsensitive) == 0) {
*(mixerTypes[MixerChannelData[i] - 1]) = i > 1 ? *(mixerTypes[MixerChannelData[i] - 1]) = i > 1 ?
@ -977,7 +1004,6 @@ void ConfigCcpmWidget::setMixer()
MixerSettings::MIXER1TYPE_SERVO : MixerSettings::MIXER1TYPE_SERVO :
MixerSettings::MIXER1TYPE_MOTOR; MixerSettings::MIXER1TYPE_MOTOR;
} }
// Configure the vector // Configure the vector
for (j = 0; j < 5; j++) { for (j = 0; j < 5; j++) {
mixers[MixerChannelData[i] - 1][j] = m_aircraft->ccpmAdvancedSettingsTable->item(i, j + 1)->text().toInt(); mixers[MixerChannelData[i] - 1][j] = m_aircraft->ccpmAdvancedSettingsTable->item(i, j + 1)->text().toInt();
@ -1052,8 +1078,8 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
QMessageBox msgBox; QMessageBox msgBox;
int i; int i;
msgBox.setText("<h1>Swashplate Leveling Routine</h1>"); msgBox.setText(tr("<h1>Swashplate Leveling Routine</h1>"));
msgBox.setInformativeText("<b>You are about to start the Swashplate levelling routine.</b><p>This process will start by downloading the current configuration from the GCS to the OP hardware and will adjust your configuration at various stages.<p>The final state of your system should match the current configuration in the GCS config gadget.<p>Please ensure all ccpm settings in the GCS are correct before continuing.<p>If this process is interrupted, then the state of your OP board may not match the GCS configuration.<p><i>After completing this process, please check all settings before attempting to fly.</i><p><font color=red><b>Please disconnect your motor to ensure it will not spin up.</b></font><p><hr><i>Do you wish to proceed?</i>"); msgBox.setInformativeText(tr("<b>You are about to start the Swashplate levelling routine.</b><p>This process will start by downloading the current configuration from the GCS to the OP hardware and will adjust your configuration at various stages.<p>The final state of your system should match the current configuration in the GCS config gadget.</p><p>Please ensure all ccpm settings in the GCS are correct before continuing.</p><p>If this process is interrupted, then the state of your OP board may not match the GCS configuration.</p><p><i>After completing this process, please check all settings before attempting to fly.</i></p><p><font color=red><b>Please disconnect your motor to ensure it will not spin up.</b></font><p><hr><i>Do you wish to proceed?</i></p>"));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Cancel);
msgBox.setIcon(QMessageBox::Information); msgBox.setIcon(QMessageBox::Information);
@ -1075,6 +1101,7 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(false); m_aircraft->SwashLvlStartButton->setEnabled(false);
m_aircraft->SwashLvlNextButton->setEnabled(true); m_aircraft->SwashLvlNextButton->setEnabled(true);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(true); m_aircraft->SwashLvlCancelButton->setEnabled(true);
m_aircraft->SwashLvlFinishButton->setEnabled(false); m_aircraft->SwashLvlFinishButton->setEnabled(false);
// clear status check boxes // clear status check boxes
@ -1136,6 +1163,7 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(true); m_aircraft->SwashLvlStartButton->setEnabled(true);
m_aircraft->SwashLvlNextButton->setEnabled(false); m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(false); m_aircraft->SwashLvlCancelButton->setEnabled(false);
m_aircraft->SwashLvlFinishButton->setEnabled(false); m_aircraft->SwashLvlFinishButton->setEnabled(false);
break; break;
@ -1145,15 +1173,24 @@ void ConfigCcpmWidget::SwashLvlStartButtonPressed()
} }
} }
void ConfigCcpmWidget::SwashLvlPrevButtonPressed()
{
SwashLvlState--;
SwashLvlPrevNextButtonPressed();
}
void ConfigCcpmWidget::SwashLvlNextButtonPressed() void ConfigCcpmWidget::SwashLvlNextButtonPressed()
{ {
// ShowDisclaimer(2);
SwashLvlState++; SwashLvlState++;
SwashLvlPrevNextButtonPressed();
}
void ConfigCcpmWidget::SwashLvlPrevNextButtonPressed()
{
switch (SwashLvlState) { switch (SwashLvlState) {
case 0: case 0:
break; break;
case 1: // Neutral levelling case 1: // Neutral levelling
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlStepList->setCurrentRow(0); m_aircraft->SwashLvlStepList->setCurrentRow(0);
// set spin boxes and swashplate servos to Neutral values // set spin boxes and swashplate servos to Neutral values
setSwashplateLevel(50); setSwashplateLevel(50);
@ -1170,9 +1207,10 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
} }
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setHtml( m_aircraft->SwashLvlStepInstruction->setHtml(
"<h2>Neutral levelling</h2><p>Using adjustment of:<ul><li>servo horns<li>link lengths and<li>Neutral timing spinboxes to the right</ul><br>ensure that the swashplate is in the center of desired travel range and is level."); tr("<h2>Neutral levelling</h2><p>Using adjustment of:<ul><li>Servo horns,</li><li>Link lengths,</li><li>Neutral triming spinboxes to the right</li></ul><br>Ensure that the swashplate is in the center of desired travel range and is level."));
break; break;
case 2: // Max levelling case 2: // Max levelling
m_aircraft->SwashLvlPrevButton->setEnabled(true);
// check Neutral status as complete // check Neutral status as complete
m_aircraft->SwashLvlStepList->item(0)->setCheckState(Qt::Checked); m_aircraft->SwashLvlStepList->item(0)->setCheckState(Qt::Checked);
m_aircraft->SwashLvlStepList->setCurrentRow(1); m_aircraft->SwashLvlStepList->setCurrentRow(1);
@ -1183,7 +1221,7 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
m_aircraft->SwashLvlPositionSpinBox->setValue(100); m_aircraft->SwashLvlPositionSpinBox->setValue(100);
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setText( m_aircraft->SwashLvlStepInstruction->setText(
"<h2>Max levelling</h2><p>Using adjustment of:<ul><li>Max timing spinboxes to the right ONLY</ul><br>ensure that the swashplate is at the top of desired travel range and is level."); tr("<h2>Max levelling</h2><p>Using adjustment of:<ul><li>Max triming spinboxes to the right ONLY</li></ul><br>Ensure that the swashplate is at the top of desired travel range and is level."));
break; break;
case 3: // Min levelling case 3: // Min levelling
// check Max status as complete // check Max status as complete
@ -1196,10 +1234,11 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
m_aircraft->SwashLvlPositionSpinBox->setValue(0); m_aircraft->SwashLvlPositionSpinBox->setValue(0);
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setText( m_aircraft->SwashLvlStepInstruction->setText(
"<h2>Min levelling</h2><p>Using adjustment of:<ul><li>Min timing spinboxes to the right ONLY</ul><br>ensure that the swashplate is at the bottom of desired travel range and is level."); tr("<h2>Min levelling</h2><p>Using adjustment of:<ul><li>Min triming spinboxes to the right ONLY</li></ul><br>Ensure that the swashplate is at the bottom of desired travel range and is level."));
break; break;
case 4: // levelling verification case 4: // levelling verification
// check Min status as complete // check Min status as complete
m_aircraft->SwashLvlNextButton->setEnabled(true);
m_aircraft->SwashLvlStepList->item(2)->setCheckState(Qt::Checked); m_aircraft->SwashLvlStepList->item(2)->setCheckState(Qt::Checked);
m_aircraft->SwashLvlStepList->setCurrentRow(3); m_aircraft->SwashLvlStepList->setCurrentRow(3);
// enable position slider // enable position slider
@ -1214,14 +1253,14 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setText( m_aircraft->SwashLvlStepInstruction->setText(
"<h2>levelling verification</h2><p>Adjust the slider to the right over it's full range and observe the swashplate motion. It should remain level over the entire range of travel."); tr("<h2>Levelling verification</h2><p>Adjust the slider to the right over it's full range and observe the swashplate motion. It should remain level over the entire range of travel.</p>"));
break; break;
case 5: // levelling complete case 5: // levelling complete
// check verify status as complete // check verify status as complete
m_aircraft->SwashLvlStepList->item(3)->setCheckState(Qt::Checked); m_aircraft->SwashLvlStepList->item(3)->setCheckState(Qt::Checked);
// issue user instructions // issue user instructions
m_aircraft->SwashLvlStepInstruction->setText( m_aircraft->SwashLvlStepInstruction->setText(
"<h2>levelling complete</h2><p>Press the Finish button to save these settings to the SD card<p>Press the cancel button to return to the pre-levelling settings"); tr("<h2>Levelling complete</h2><p>Press the Finish button to save these settings to the SD card</p><p>Press the cancel button to return to the pre-levelling settings</p>"));
// disable position slider // disable position slider
m_aircraft->SwashLvlPositionSlider->setEnabled(false); m_aircraft->SwashLvlPositionSlider->setEnabled(false);
m_aircraft->SwashLvlPositionSpinBox->setEnabled(false); m_aircraft->SwashLvlPositionSpinBox->setEnabled(false);
@ -1233,6 +1272,7 @@ void ConfigCcpmWidget::SwashLvlNextButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(false); m_aircraft->SwashLvlStartButton->setEnabled(false);
m_aircraft->SwashLvlNextButton->setEnabled(false); m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(true);
m_aircraft->SwashLvlCancelButton->setEnabled(true); m_aircraft->SwashLvlCancelButton->setEnabled(true);
m_aircraft->SwashLvlFinishButton->setEnabled(true); m_aircraft->SwashLvlFinishButton->setEnabled(true);
@ -1256,6 +1296,7 @@ void ConfigCcpmWidget::SwashLvlCancelButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(true); m_aircraft->SwashLvlStartButton->setEnabled(true);
m_aircraft->SwashLvlNextButton->setEnabled(false); m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(false); m_aircraft->SwashLvlCancelButton->setEnabled(false);
m_aircraft->SwashLvlFinishButton->setEnabled(false); m_aircraft->SwashLvlFinishButton->setEnabled(false);
@ -1287,7 +1328,9 @@ void ConfigCcpmWidget::SwashLvlCancelButtonPressed()
enableSwashplateLevellingControl(false); enableSwashplateLevellingControl(false);
m_aircraft->SwashLvlStepInstruction->setText( m_aircraft->SwashLvlStepInstruction->setText(
"<h2>Levelling Cancelled</h2><p>Previous settings have been restored."); tr("<h2>Levelling Cancelled</h2><p>Previous settings have been restored."));
ccpmSwashplateUpdate();
} }
@ -1299,6 +1342,7 @@ void ConfigCcpmWidget::SwashLvlFinishButtonPressed()
m_aircraft->SwashLvlStartButton->setEnabled(true); m_aircraft->SwashLvlStartButton->setEnabled(true);
m_aircraft->SwashLvlNextButton->setEnabled(false); m_aircraft->SwashLvlNextButton->setEnabled(false);
m_aircraft->SwashLvlPrevButton->setEnabled(false);
m_aircraft->SwashLvlCancelButton->setEnabled(false); m_aircraft->SwashLvlCancelButton->setEnabled(false);
m_aircraft->SwashLvlFinishButton->setEnabled(false); m_aircraft->SwashLvlFinishButton->setEnabled(false);
@ -1327,23 +1371,25 @@ void ConfigCcpmWidget::SwashLvlFinishButtonPressed()
enableSwashplateLevellingControl(false); enableSwashplateLevellingControl(false);
m_aircraft->SwashLvlStepInstruction->setText( m_aircraft->SwashLvlStepInstruction->setText(
"<h2>Levelling Completed</h2><p>New settings have been saved to the SD card"); tr("<h2>Levelling Completed</h2><p>New settings have been saved to the SD card"));
ShowDisclaimer(0); ShowDisclaimer(0);
// ShowDisclaimer(2); // ShowDisclaimer(2);
ccpmSwashplateUpdate();
} }
int ConfigCcpmWidget::ShowDisclaimer(int messageID) int ConfigCcpmWidget::ShowDisclaimer(int messageID)
{ {
QMessageBox msgBox; QMessageBox msgBox;
msgBox.setText("<font color=red><h1>Warning!!!</h2></font>"); msgBox.setText(tr("<font color=red><h1>Warning!!!</h2></font>"));
int ret; int ret;
switch (messageID) { switch (messageID) {
case 0: case 0:
// Basic disclaimer // Basic disclaimer
msgBox.setInformativeText( msgBox.setInformativeText(
"<h2>This code has many configurations.</h2><p>Please double check all settings before attempting flight!"); tr("<h2>This code has many configurations.</h2><p>Please double check all settings before attempting flight!"));
msgBox.setStandardButtons(QMessageBox::Ok); msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.setIcon(QMessageBox::Information); msgBox.setIcon(QMessageBox::Information);
@ -1354,7 +1400,7 @@ int ConfigCcpmWidget::ShowDisclaimer(int messageID)
case 1: case 1:
// Not Tested disclaimer // Not Tested disclaimer
msgBox.setInformativeText( msgBox.setInformativeText(
"<h2>The CCPM mixer code needs more testing!</h2><p><font color=red>Use it at your own risk!</font><p>Do you wish to continue?"); tr("<h2>The CCPM mixer code needs more testing!</h2><p><font color=red>Use it at your own risk!</font><p>Do you wish to continue?"));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Cancel);
msgBox.setIcon(QMessageBox::Warning); msgBox.setIcon(QMessageBox::Warning);
@ -1370,7 +1416,7 @@ int ConfigCcpmWidget::ShowDisclaimer(int messageID)
case 2: case 2:
// DO NOT use // DO NOT use
msgBox.setInformativeText( msgBox.setInformativeText(
"<h2>The CCPM swashplate levelling code is NOT complete!</h2><p><font color=red>DO NOT use it for flight!</font>"); tr("<h2>The CCPM swashplate levelling code is NOT complete!</h2><p><font color=red>DO NOT use it for flight!</font>"));
msgBox.setStandardButtons(QMessageBox::Ok); msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok); msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.setIcon(QMessageBox::Critical); msgBox.setIcon(QMessageBox::Critical);

View File

@ -120,7 +120,9 @@ private slots:
void UpdateType(); void UpdateType();
void SwashLvlStartButtonPressed(); void SwashLvlStartButtonPressed();
void SwashLvlPrevButtonPressed();
void SwashLvlNextButtonPressed(); void SwashLvlNextButtonPressed();
void SwashLvlPrevNextButtonPressed();
void SwashLvlCancelButtonPressed(); void SwashLvlCancelButtonPressed();
void SwashLvlFinishButtonPressed(); void SwashLvlFinishButtonPressed();

View File

@ -1,266 +1,299 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#" xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="400" width="400"
height="400" height="400"
id="svg2816" id="svg2816"
version="1.1" version="1.1"
inkscape:version="0.47 r22583" inkscape:version="0.48.5 r10040"
sodipodi:docname="ccpm_setup.svg"> sodipodi:docname="ccpm_setup.svg">
<defs <defs
id="defs2818"> id="defs2818">
<inkscape:perspective <inkscape:perspective
sodipodi:type="inkscape:persp3d" sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 200 : 1" inkscape:vp_x="0 : 200 : 1"
inkscape:vp_y="0 : 1000 : 0" inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="400 : 200 : 1" inkscape:vp_z="400 : 200 : 1"
inkscape:persp3d-origin="200 : 133.33333 : 1" inkscape:persp3d-origin="200 : 133.33333 : 1"
id="perspective2854" /> id="perspective2854" />
</defs> <filter
<sodipodi:namedview inkscape:collect="always"
pagecolor="#000000" id="filter4111">
bordercolor="#000000" <feGaussianBlur
borderopacity="1.0" inkscape:collect="always"
inkscape:pageopacity="1.0" stdDeviation="2.4480407"
inkscape:pageshadow="0" id="feGaussianBlur4113" />
inkscape:zoom="1.8725" </filter>
inkscape:cx="121.49533" <filter
inkscape:cy="328.17089" inkscape:collect="always"
inkscape:document-units="px" id="filter4149">
inkscape:current-layer="layer3" <feGaussianBlur
id="namedview2820" inkscape:collect="always"
showgrid="false" stdDeviation="1.990099"
showguides="true" id="feGaussianBlur4151" />
inkscape:snap-global="true" </filter>
inkscape:window-width="1680" <filter
inkscape:window-height="994" color-interpolation-filters="sRGB"
inkscape:window-x="-4" inkscape:collect="always"
inkscape:window-y="-4" id="filter4149-5">
inkscape:window-maximized="1" <feGaussianBlur
inkscape:guide-bbox="true"> inkscape:collect="always"
<sodipodi:guide stdDeviation="1.990099"
position="0,0" id="feGaussianBlur4151-9" />
orientation="0,744.09448" </filter>
id="guide2827" /> </defs>
<sodipodi:guide <sodipodi:namedview
position="744.09448,0" pagecolor="#edebe7"
orientation="-1052.3622,0" bordercolor="#000000"
id="guide2829" /> borderopacity="1.0"
<sodipodi:guide inkscape:pageopacity="1"
position="744.09448,1052.3622" inkscape:pageshadow="0"
orientation="0,-744.09448" inkscape:zoom="0.93625"
id="guide2831" /> inkscape:cx="329.50243"
<sodipodi:guide inkscape:cy="22.483153"
position="0,1052.3622" inkscape:document-units="px"
orientation="1052.3622,0" inkscape:current-layer="g4008"
id="guide2833" /> id="namedview2820"
<sodipodi:guide showgrid="false"
position="0,0" showguides="false"
orientation="0,400" inkscape:snap-global="true"
id="guide2835" /> inkscape:window-width="1280"
<sodipodi:guide inkscape:window-height="928"
position="400,0" inkscape:window-x="0"
orientation="-400,0" inkscape:window-y="27"
id="guide2837" /> inkscape:window-maximized="1"
<sodipodi:guide inkscape:guide-bbox="true"
position="400,400" inkscape:snap-bbox="true"
orientation="0,-400" inkscape:snap-bbox-midpoints="true">
id="guide2839" /> <sodipodi:guide
<sodipodi:guide position="0,0"
position="0,400" orientation="0,744.09448"
orientation="400,0" id="guide2827" />
id="guide2841" /> <sodipodi:guide
<inkscape:grid position="744.09448,0"
type="xygrid" orientation="-1052.3622,0"
id="grid2843" id="guide2829" />
empspacing="5" <sodipodi:guide
visible="true" position="744.09448,1052.3622"
enabled="true" orientation="0,-744.09448"
snapvisiblegridlinesonly="true" /> id="guide2831" />
</sodipodi:namedview> <sodipodi:guide
<metadata position="0,1052.3622"
id="metadata2822"> orientation="1052.3622,0"
<rdf:RDF> id="guide2833" />
<cc:Work <sodipodi:guide
rdf:about=""> position="0,0"
<dc:format>image/svg+xml</dc:format> orientation="0,400"
<dc:type id="guide2835" />
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <sodipodi:guide
<dc:title /> position="400,0"
</cc:Work> orientation="-400,0"
</rdf:RDF> id="guide2837" />
</metadata> <sodipodi:guide
<g position="400,400"
inkscape:label="SwashPlate" orientation="0,-400"
inkscape:groupmode="layer" id="guide2839" />
id="layer1" <sodipodi:guide
transform="translate(0,-652.36218)" position="0,400"
style="display:inline" /> orientation="400,0"
<g id="guide2841" />
inkscape:groupmode="layer" <inkscape:grid
id="layer2" type="xygrid"
inkscape:label="Rotor" id="grid2843"
style="display:inline"> empspacing="5"
<g visible="true"
id="Swashplate" enabled="true"
inkscape:label="#g4001"> snapvisiblegridlinesonly="true" />
<g </sodipodi:namedview>
id="g4008"> <metadata
<path id="metadata2822">
transform="matrix(0.99009901,0,0,0.99009901,-198.0198,201.9802)" <rdf:RDF>
sodipodi:type="arc" <cc:Work
style="fill:#00003d;fill-opacity:1;stroke:#0000ff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" rdf:about="">
id="Ring" <dc:format>image/svg+xml</dc:format>
sodipodi:cx="200" <dc:type
sodipodi:cy="200" rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
sodipodi:rx="200" <dc:title></dc:title>
sodipodi:ry="200" </cc:Work>
d="m 400,200 a 200,200 0 1 1 -400,0 200,200 0 1 1 400,0 z" </rdf:RDF>
inkscape:label="#path2847" /> </metadata>
<path <g
sodipodi:type="arc" inkscape:label="SwashPlate"
style="color:#000000;fill:#9796ab;fill-opacity:0.80813958;fill-rule:evenodd;stroke:#b5b5bb;stroke-width:2.37170815;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" inkscape:groupmode="layer"
id="Rotor" id="layer1"
sodipodi:cx="220" transform="translate(0,-652.36218)"
sodipodi:cy="207.5" style="display:inline" />
sodipodi:rx="45" <g
sodipodi:ry="12.5" inkscape:groupmode="layer"
d="m 265,207.5 a 45,12.5 0 1 1 -90,0 45,12.5 0 1 1 90,0 z" id="layer2"
transform="matrix(0.52910053,0,0,1.9047619,-116.40212,4.7619059)" inkscape:label="Rotor"
inkscape:label="#path3622" /> style="display:inline">
</g> <g
</g> id="Swashplate"
</g> inkscape:label="#g4001">
<g <g
inkscape:groupmode="layer" id="g4008">
id="layer3" <path
inkscape:label="ServoWlayer" id="path4127"
style="display:inline"> d="M 199.0099,400 C 199.0099,509.91014 109.91014,599.0099 4e-6,599.0099 C -109.91013,599.0099 -199.0099,509.91014 -199.0099,400 C -199.0099,290.08987 -109.91013,200.9901 4e-6,200.9901 C 109.91014,200.9901 199.0099,290.08987 199.0099,400 z"
<path style="fill:#515455;fill-opacity:1;stroke:#515455;stroke-width:3.98019790999999978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.58823532;display:inline;filter:url(#filter4149-5)"
sodipodi:type="arc" inkscape:connector-curvature="0"
style="color:#000000;fill:#d86415;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" transform="matrix(1.0083769,0,0,1.0083769,2.0000001e-6,-3.35076)" />
id="ServoW" <path
sodipodi:cx="0" style="fill:#2f82f4;fill-opacity:1;stroke:#0000ff;stroke-width:3.96039605;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline"
sodipodi:cy="397.5" d="M 198.01981,400 C 198.01981,509.36332 109.36332,598.0198 0,598.0198 C -109.36332,598.0198 -198.0198,509.36332 -198.0198,400 C -198.0198,290.63669 -109.36332,201.9802 0,201.9802 C 109.36332,201.9802 198.01981,290.63669 198.01981,400 z"
sodipodi:rx="10" id="Ring"
sodipodi:ry="7.5" inkscape:connector-curvature="0" />
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z" <path
transform="matrix(0.94540297,0,0,1.2605373,140.4225,-455.65278)" inkscape:connector-curvature="0"
inkscape:label="#path3635" /> id="path4089"
<text d="M 40.80068,400 C 40.80068,422.53358 22.533588,440.80068 3.7923656e-6,440.80068 C -22.533599,440.80068 -40.800676,422.53358 -40.800676,400 C -40.800676,377.4664 -22.533599,359.19932 3.7923656e-6,359.19932 C 22.533588,359.19932 40.80068,377.4664 40.80068,400 z"
xml:space="preserve" style="color:#000000;fill:#515455;fill-opacity:1;fill-rule:nonzero;stroke:#515455;stroke-width:5.37709665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4111);enable-background:accumulate"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans" transform="matrix(1.0128731,0,0,1.0128731,-2.5746203e-8,-5.149238)" />
x="158" <path
y="41" style="color:#000000;fill:#9796ab;fill-opacity:0.80784314;fill-rule:nonzero;stroke:#b5b5bb;stroke-width:5.37709665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="ServoWtext" d="M 40.800678,400 C 40.800678,422.53358 22.53359,440.80068 6e-6,440.80068 C -22.533597,440.80068 -40.800674,422.53358 -40.800674,400 C -40.800674,377.4664 -22.533597,359.19932 6e-6,359.19932 C 22.53359,359.19932 40.800678,377.4664 40.800678,400 z"
inkscape:label="#text3637"><tspan id="Rotor"
sodipodi:role="line" inkscape:connector-curvature="0" />
id="tspan3639" </g>
x="158" <g
y="41">ServoW</tspan></text> id="g4119"
</g> transform="translate(366.35514,38.451268)" />
<g </g>
style="display:inline" </g>
inkscape:label="ServoXlayer" <g
id="g3925" inkscape:groupmode="layer"
inkscape:groupmode="layer"> id="layer3"
<path inkscape:label="ServoWlayer"
transform="matrix(0.94540297,0,0,1.2605373,142.4225,-424.81942)" style="display:inline">
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z" <path
sodipodi:ry="7.5" sodipodi:type="arc"
sodipodi:rx="10" style="color:#000000;fill:#d86415;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:cy="397.5" id="ServoW"
sodipodi:cx="0" sodipodi:cx="0"
id="ServoX" sodipodi:cy="397.5"
style="color:#000000;fill:#d89615;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" sodipodi:rx="10"
sodipodi:type="arc" sodipodi:ry="7.5"
inkscape:label="#path3927" /> d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
<text transform="matrix(0.94540297,0,0,1.2605373,140.4225,-455.65278)"
id="ServoXtext" inkscape:label="#path3635" />
y="75.666656" <text
x="158" xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans" style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
xml:space="preserve" x="158"
inkscape:label="#text3929"><tspan y="41"
y="75.666656" id="ServoWtext"
x="158" inkscape:label="#text3637"><tspan
id="tspan3931" sodipodi:role="line"
sodipodi:role="line">ServoX</tspan></text> id="tspan3639"
</g> x="158"
<g y="41">ServoW</tspan></text>
inkscape:groupmode="layer" </g>
id="g3943" <g
inkscape:label="ServoYlayer" style="display:inline"
style="display:inline"> inkscape:label="ServoXlayer"
<path id="g3925"
sodipodi:type="arc" inkscape:groupmode="layer">
style="color:#000000;fill:#d8c815;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" <path
id="ServoY" transform="matrix(0.94540297,0,0,1.2605373,142.4225,-424.81942)"
sodipodi:cx="0" d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
sodipodi:cy="397.5" sodipodi:ry="7.5"
sodipodi:rx="10" sodipodi:rx="10"
sodipodi:ry="7.5" sodipodi:cy="397.5"
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z" sodipodi:cx="0"
transform="matrix(0.94540298,0,0,1.2605373,142.4225,-390.15277)" id="ServoX"
inkscape:label="#path3947" /> style="color:#000000;fill:#d89615;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
<text sodipodi:type="arc"
xml:space="preserve" inkscape:label="#path3927" />
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans" <text
x="158" id="ServoXtext"
y="110.33333" y="75.666656"
id="ServoYtext" x="158"
inkscape:label="#text3949"><tspan style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
sodipodi:role="line" xml:space="preserve"
id="tspan3951" inkscape:label="#text3929"><tspan
x="158" y="75.666656"
y="110.33333">ServoY</tspan></text> x="158"
</g> id="tspan3931"
<g sodipodi:role="line">ServoX</tspan></text>
style="display:inline" </g>
inkscape:label="ServoZlayer" <g
id="g3953" inkscape:groupmode="layer"
inkscape:groupmode="layer"> id="g3943"
<path inkscape:label="ServoYlayer"
transform="matrix(0.94540298,0,0,1.2605373,142.4225,-355.4861)" style="display:inline">
d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z" <path
sodipodi:ry="7.5" sodipodi:type="arc"
sodipodi:rx="10" style="color:#000000;fill:#d8c815;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:cy="397.5" id="ServoY"
sodipodi:cx="0" sodipodi:cx="0"
id="ServoZ" sodipodi:cy="397.5"
style="color:#000000;fill:#d8f915;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" sodipodi:rx="10"
sodipodi:type="arc" sodipodi:ry="7.5"
inkscape:label="#path3957" /> d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
<text transform="matrix(0.94540298,0,0,1.2605373,142.4225,-390.15277)"
id="ServoZtext" inkscape:label="#path3947" />
y="145" <text
x="158" xml:space="preserve"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans" style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
xml:space="preserve" x="158"
inkscape:label="#text3959"><tspan y="110.33333"
id="tspan3963" id="ServoYtext"
y="145" inkscape:label="#text3949"><tspan
x="158" sodipodi:role="line"
sodipodi:role="line">ServoZ</tspan><tspan id="tspan3951"
id="tspan3967" x="158"
y="165" y="110.33333">ServoY</tspan></text>
x="158" </g>
sodipodi:role="line" /></text> <g
<path style="display:inline"
style="fill:#ff6e00;stroke:#ff6e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" inkscape:label="ServoZlayer"
d="M 185.60761,186.1126 150.1962,151.94369" id="g3953"
id="RadialZ" inkscape:groupmode="layer">
inkscape:connector-type="polyline" <path
inkscape:connection-start="#path3622" transform="matrix(0.94540298,0,0,1.2605373,142.4225,-355.4861)"
inkscape:connection-end="#path3957" d="m 10,397.5 a 10,7.5 0 1 1 -20,0 10,7.5 0 1 1 20,0 z"
inkscape:label="#path3981" /> sodipodi:ry="7.5"
</g> sodipodi:rx="10"
</svg> sodipodi:cy="397.5"
sodipodi:cx="0"
id="ServoZ"
style="color:#000000;fill:#d8f915;fill-opacity:1;fill-rule:evenodd;stroke:#00ff00;stroke-width:1.0002594;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc"
inkscape:label="#path3957" />
<text
id="ServoZtext"
y="145"
x="158"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#1f5f00;fill-opacity:1;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:0.1;stroke-opacity:1;stroke-dasharray:none;font-family:Bitstream Vera Sans"
xml:space="preserve"
inkscape:label="#text3959"><tspan
id="tspan3963"
y="145"
x="158"
sodipodi:role="line">ServoZ</tspan><tspan
id="tspan3967"
y="165"
x="158"
sodipodi:role="line" /></text>
<path
style="fill:#ff6e00;fill-opacity:1;stroke:#ff6e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 185.60761,186.1126 L 150.1962,151.94369"
id="RadialZ"
inkscape:connector-type="polyline"
inkscape:connection-start="#path3622"
inkscape:connection-end="#path3957"
inkscape:label="#path3981"
inkscape:connection-start-point="d4"
inkscape:connection-end-point="d4"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 12 KiB