1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

Changed the element id's in one of the SVG files that I incorrectly edited. This prevents the error:

Could not resolve property : SVGID_1_

Error comes from qsvghandler.cpp or qsvgstyle.cpp in the QT libraries Qt5.2.0//5.2.0-beta1/Src/qtsvg/src/svg/

The fixedwing-shapes.svg and flyingwing-shapes.svg files need modified to prevent the errors caused by qsvgtinydocument.cpp in the QT libraries.

Couldn't find node aileron. Skipping rendering.
Couldn't find node vtail. Skipping rendering.

These errors come from the case statement that was added to updateImageAnd Description() for FixedWingPage

+    switch (type) {
+    case SetupWizard::FIXED_WING_AILERON:
+        elementId = "aileron";
+        break;
+    case SetupWizard::FIXED_WING_VTAIL:
+        elementId = "vtail";
+        break;
+    default:
+        elementId = "";
+        break;
+    }

A similar error needs to be resolved in connectiondiagram.cpp
+            switch (m_configSource->getVehicleSubType()) {
+            case VehicleConfigurationSource::FIXED_WING_AILERON:
+                elementsToShow << "aileron";
+                break;
+            case VehicleConfigurationSource::FIXED_WING_VTAIL:
+                elementsToShow << "vtail";
+                break;
+            default:
+                break;
+            }

Likewise outputcalibrationpage.cpp will need to reverence the elements inside the SVG file properly.
+        m_vehicleElementIds << "fixed-aileron" << "aileron";
+        m_vehicleHighlightElementIndexes << 0 << 1;
...
+        m_vehicleElementIds << "fixed-vtail" << "vtail";
+        m_vehicleHighlightElementIndexes << 0 << 1;

Until these elements are fixed in the SVG files the wizard will not render properly and allow the user to click *next*.
This commit is contained in:
Kevin Finisterre 2013-11-24 17:29:38 -05:00
parent 721000b279
commit 92c19f2d74
12 changed files with 451 additions and 20 deletions

View File

@ -4,6 +4,9 @@
<file>images/ahrs-calib.svg</file>
<file>images/paper-plane.svg</file>
<file>images/multirotor-shapes.svg</file>
<!-- these are different from the files in /setupwiz/resources -->
<file>images/fixedwing-shapes.svg</file>
<file>images/flyingwing-shapes.svg</file>
<file>images/ccpm_setup.svg</file>
<file>images/PipXtreme.png</file>
<file>images/help.png</file>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="aileron" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="792px" height="1008px" viewBox="0 0 792 1008" enable-background="new 0 0 792 1008" xml:space="preserve">
<path fill="#010101" d="M362.386,549.617l-45.657,17.535H134.987c0,0-19.025-2.023-17.592,45.59
c1.433,47.611,4.344,44.581,17.592,50.531h227.87l23.964,171.965h-71.977c0,0-11.272,1.641-11.22,23.54
@ -15,7 +15,7 @@
<path d="M402.97,458.154c0,0,20-7.5,39.5-6.5s60.5,5.5,66.5,6.5c0,0-50.5,6-76.5,5.5S402.97,458.154,402.97,458.154z"/>
<path d="M394.476,458.592c0,0-20,7.5-39.5,6.5s-60.5-5.5-66.5-6.5c0,0,50.5-6,76.5-5.5S394.476,458.592,394.476,458.592z"/>
</g>
<linearGradient id="vtail" gradientUnits="userSpaceOnUse" x1="434.8428" y1="254.2417" x2="662.4346" y2="254.2417" gradientTransform="matrix(1 0 0 1 0 397)">
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="434.8428" y1="254.2417" x2="662.4346" y2="254.2417" gradientTransform="matrix(1 0 0 1 0 397)">
<stop offset="0" style="stop-color:#FFFFFF"/>
<stop offset="1" style="stop-color:#27AAE1"/>
</linearGradient>

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -118,6 +118,16 @@ void ConnectionDiagram::setupGraphicsScene()
}
break;
case VehicleConfigurationSource::VEHICLE_FIXEDWING:
switch (m_configSource->getVehicleSubType()) {
case VehicleConfigurationSource::FIXED_WING_AILERON:
elementsToShow << "aileron";
break;
case VehicleConfigurationSource::FIXED_WING_VTAIL:
elementsToShow << "vtail";
break;
default:
break;
}
case VehicleConfigurationSource::VEHICLE_HELI:
case VehicleConfigurationSource::VEHICLE_SURFACE:
default:

View File

@ -27,16 +27,97 @@
#include "fixedwingpage.h"
#include "ui_fixedwingpage.h"
#include "setupwizard.h"
FixedWingPage::FixedWingPage(SetupWizard *wizard, QWidget *parent) :
AbstractWizardPage(wizard, parent),
ui(new Ui::FixedWingPage)
{
ui->setupUi(this);
setFinalPage(true);
QSvgRenderer *renderer = new QSvgRenderer();
// What do we do about v-tail here?
renderer->load(QString(":/configgadget/images/fixedwing-shapes.svg"));
m_fixedwingPic = new QGraphicsSvgItem();
m_fixedwingPic->setSharedRenderer(renderer);
QGraphicsScene *scene = new QGraphicsScene(this);
scene->addItem(m_fixedwingPic);
ui->typeGraphicsView->setScene(scene);
setupFixedWingTypesCombo();
// Default to Aileron setup
ui->typeCombo->setCurrentIndex(0);
connect(ui->typeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateImageAndDescription()));
ui->typeGraphicsView->setSceneRect(m_fixedwingPic->boundingRect());
ui->typeGraphicsView->fitInView(m_fixedwingPic, Qt::KeepAspectRatio);
}
FixedWingPage::~FixedWingPage()
{
delete ui;
}
void FixedWingPage::initializePage()
{
updateAvailableTypes();
updateImageAndDescription();
}
bool FixedWingPage::validatePage()
{
SetupWizard::VEHICLE_SUB_TYPE type = (SetupWizard::VEHICLE_SUB_TYPE)ui->typeCombo->itemData(ui->typeCombo->currentIndex()).toInt();
getWizard()->setVehicleSubType(type);
return true;
}
void FixedWingPage::resizeEvent(QResizeEvent *event)
{
Q_UNUSED(event);
if (m_fixedwingPic) {
ui->typeGraphicsView->setSceneRect(m_fixedwingPic->boundingRect());
ui->typeGraphicsView->fitInView(m_fixedwingPic, Qt::KeepAspectRatio);
}
}
void FixedWingPage::setupFixedWingTypesCombo()
{
ui->typeCombo->addItem(tr("Aileron, Elevator, Rudder"), SetupWizard::FIXED_WING_AILERON);
m_descriptions << tr("A description for aileron driven fixed wing stuff goes here... ");
ui->typeCombo->addItem(tr("V-Tail, or Elevon"), SetupWizard::FIXED_WING_VTAIL);
m_descriptions << tr("A description for vtail driven fixed wing stuff goes here... ");
}
void FixedWingPage::updateAvailableTypes()
{
}
void FixedWingPage::updateImageAndDescription()
{
SetupWizard::VEHICLE_SUB_TYPE type = (SetupWizard::VEHICLE_SUB_TYPE)ui->typeCombo->itemData(ui->typeCombo->currentIndex()).toInt();
QString elementId = "";
QString description = m_descriptions.at(ui->typeCombo->currentIndex());
switch (type) {
case SetupWizard::FIXED_WING_AILERON:
elementId = "aileron";
break;
case SetupWizard::FIXED_WING_VTAIL:
elementId = "vtail";
break;
default:
elementId = "";
break;
}
m_fixedwingPic->setElementId(elementId);
ui->typeGraphicsView->setSceneRect(m_fixedwingPic->boundingRect());
ui->typeGraphicsView->fitInView(m_fixedwingPic, Qt::KeepAspectRatio);
ui->typeDescription->setText(description);
}

View File

@ -28,6 +28,10 @@
#ifndef FIXEDWINGPAGE_H
#define FIXEDWINGPAGE_H
#include <QtSvg/QGraphicsSvgItem>
#include <QtSvg/QSvgRenderer>
#include <QList>
#include "abstractwizardpage.h"
namespace Ui {
@ -41,8 +45,21 @@ public:
explicit FixedWingPage(SetupWizard *wizard, QWidget *parent = 0);
~FixedWingPage();
void initializePage();
bool validatePage();
protected:
void resizeEvent(QResizeEvent *event);
private:
Ui::FixedWingPage *ui;
void setupFixedWingTypesCombo();
QGraphicsSvgItem *m_fixedwingPic;
void updateAvailableTypes();
QList<QString> m_descriptions;
private slots:
void updateImageAndDescription();
};
#endif // FIXEDWINGPAGE_H

View File

@ -15,22 +15,147 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;The Fixed Wing section of the OpenPilot Setup Wizard is not yet implemented&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<widget class="QLabel" name="label">
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;OpenPilot fixedwing configuration&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:12pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;This part of the wizard will set up the OpenPilot controller for use with a flying platform utilizing multiple rotors. The wizard supports the most common types of fixedwings. Other variants of fixedwings can be configured by using custom configuration options in the Configuration plugin in the GCS.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Please select the type of fixedwing you want to create a configuration for below:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="topMargin">
<number>4</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="rightMargin">
<number>4</number>
</property>
<item>
<widget class="QLabel" name="label_2">
<property name="minimumSize">
<size>
<width>125</width>
<height>36</height>
</size>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Multirotor type:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="typeCombo">
<property name="minimumSize">
<size>
<width>125</width>
<height>20</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QTextEdit" name="typeDescription">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="textInteractionFlags">
<set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGraphicsView" name="typeGraphicsView">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>200</height>
</size>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</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="backgroundBrush">
<brush brushstyle="NoBrush">
<color alpha="0">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</property>
<property name="foregroundBrush">
<brush brushstyle="NoBrush">
<color alpha="0">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</property>
<property name="interactive">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>

View File

@ -104,6 +104,23 @@ void OutputCalibrationPage::setupVehicle()
m_vehicleHighlightElementIndexes << 0 << 1 << 2 << 3 << 4 << 5 << 6;
m_channelIndex << 0 << 0 << 1 << 2 << 3 << 4 << 5;
break;
// KF hack
case SetupWizard::FIXED_WING_AILERON:
qDebug() << "no clue what a wizard index is!";
m_wizardIndexes << 0 << 1 << 1 << 1 << 1 << 1 << 1;
m_vehicleElementIds << "fixed-aileron" << "aileron";
m_vehicleHighlightElementIndexes << 0 << 1;
m_channelIndex << 0 << 0 << 1 << 2 << 3 << 4 << 5;
getWizard()->setActuatorSettings(m_actuatorSettings);
break;
case SetupWizard::FIXED_WING_VTAIL:
qDebug() << "no clue what a wizard index is!";
m_wizardIndexes << 0 << 1 << 1 << 1 << 1 << 1 << 1;
m_vehicleElementIds << "fixed-vtail" << "vtail";
m_vehicleHighlightElementIndexes << 0 << 1;
m_channelIndex << 0 << 0 << 1 << 2 << 3 << 4 << 5;
getWizard()->setActuatorSettings(m_actuatorSettings);
break;
default:
break;
}

View File

@ -146,7 +146,7 @@ p, li { white-space: pre-wrap; }
<item>
<widget class="QToolButton" name="fixedwingButton">
<property name="enabled">
<bool>false</bool>
<bool>true</bool>
</property>
<property name="font">
<font>

View File

@ -225,7 +225,22 @@ QString SetupWizard::getSummaryText()
break;
case VEHICLE_FIXEDWING:
summary.append(tr("Fixed wing"));
summary.append(tr("Fixed wing"));
summary.append("<br>");
summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>");
switch (getVehicleSubType()) {
case SetupWizard::FIXED_WING_AILERON:
summary.append(tr("Aileron"));
break;
case SetupWizard::FIXED_WING_VTAIL:
summary.append(tr("Vtail"));
break;
default:
summary.append(tr("Unknown"));
break;
}
break;
case VEHICLE_HELI:
summary.append(tr("Helicopter"));

View File

@ -214,6 +214,22 @@ void VehicleConfigurationHelper::applyVehicleConfiguration()
break;
}
case VehicleConfigurationSource::VEHICLE_FIXEDWING:
{
switch (m_configSource->getVehicleSubType()) {
case VehicleConfigurationSource::FIXED_WING_AILERON:
setupAileron();
break;
/* case VehicleConfigurationSource::FIXED_WING_ELEVON:
setupElevon();
break; */
case VehicleConfigurationSource::FIXED_WING_VTAIL:
setupVtail();
break;
default:
break;
}
break;
}
case VehicleConfigurationSource::VEHICLE_HELI:
case VehicleConfigurationSource::VEHICLE_SURFACE:
// TODO: Implement settings for other vehicle types?
@ -1287,3 +1303,144 @@ void VehicleConfigurationHelper::setupOctoCopter()
applyMixerConfiguration(channels);
applyMultiGUISettings(frame, guiSettings);
}
// This is all wrong... I just copied the Tricopter stuff
void VehicleConfigurationHelper::setupVtail()
{
mixerChannelSettings channels[10];
GUIConfigDataUnion guiSettings = getGUIConfigData();
channels[0].type = MIXER_TYPE_MOTOR;
channels[0].throttle1 = 100;
channels[0].throttle2 = 0;
channels[0].roll = 100;
channels[0].pitch = 50;
channels[0].yaw = 0;
channels[1].type = MIXER_TYPE_MOTOR;
channels[1].throttle1 = 100;
channels[1].throttle2 = 0;
channels[1].roll = -100;
channels[1].pitch = 50;
channels[1].yaw = 0;
channels[2].type = MIXER_TYPE_MOTOR;
channels[2].throttle1 = 100;
channels[2].throttle2 = 0;
channels[2].roll = 0;
channels[2].pitch = -100;
channels[2].yaw = 0;
channels[3].type = MIXER_TYPE_SERVO;
channels[3].throttle1 = 0;
channels[3].throttle2 = 0;
channels[3].roll = 0;
channels[3].pitch = 0;
channels[3].yaw = 100;
guiSettings.multi.VTOLMotorNW = 1;
guiSettings.multi.VTOLMotorNE = 2;
guiSettings.multi.VTOLMotorS = 3;
guiSettings.multi.TRIYaw = 4;
applyMixerConfiguration(channels);
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL, guiSettings);
}
// This is all wrong... I just copied the Tricopter stuff
void VehicleConfigurationHelper::setupAileron()
{
// Typical vehicle setup
// 1. Setup mixer data
// 2. Setup GUI data
// 3. Apply changes
mixerChannelSettings channels[10];
GUIConfigDataUnion guiSettings = getGUIConfigData();
channels[0].type = MIXER_TYPE_MOTOR;
channels[0].throttle1 = 100;
channels[0].throttle2 = 0;
channels[0].roll = 100;
channels[0].pitch = 50;
channels[0].yaw = 0;
channels[1].type = MIXER_TYPE_MOTOR;
channels[1].throttle1 = 100;
channels[1].throttle2 = 0;
channels[1].roll = -100;
channels[1].pitch = 50;
channels[1].yaw = 0;
channels[2].type = MIXER_TYPE_MOTOR;
channels[2].throttle1 = 100;
channels[2].throttle2 = 0;
channels[2].roll = 0;
channels[2].pitch = -100;
channels[2].yaw = 0;
channels[3].type = MIXER_TYPE_SERVO;
channels[3].throttle1 = 0;
channels[3].throttle2 = 0;
channels[3].roll = 0;
channels[3].pitch = 0;
channels[3].yaw = 100;
guiSettings.multi.VTOLMotorNW = 1;
guiSettings.multi.VTOLMotorNE = 2;
guiSettings.multi.VTOLMotorS = 3;
guiSettings.multi.TRIYaw = 4;
applyMixerConfiguration(channels);
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGVTAIL, guiSettings);
}
// This is all wrong... I just copied the Tricopter stuff
void VehicleConfigurationHelper::setupElevon()
{
// Typical vehicle setup
// 1. Setup mixer data
// 2. Setup GUI data
// 3. Apply changes
mixerChannelSettings channels[10];
GUIConfigDataUnion guiSettings = getGUIConfigData();
channels[0].type = MIXER_TYPE_MOTOR;
channels[0].throttle1 = 100;
channels[0].throttle2 = 0;
channels[0].roll = 100;
channels[0].pitch = 50;
channels[0].yaw = 0;
channels[1].type = MIXER_TYPE_MOTOR;
channels[1].throttle1 = 100;
channels[1].throttle2 = 0;
channels[1].roll = -100;
channels[1].pitch = 50;
channels[1].yaw = 0;
channels[2].type = MIXER_TYPE_MOTOR;
channels[2].throttle1 = 100;
channels[2].throttle2 = 0;
channels[2].roll = 0;
channels[2].pitch = -100;
channels[2].yaw = 0;
channels[3].type = MIXER_TYPE_SERVO;
channels[3].throttle1 = 0;
channels[3].throttle2 = 0;
channels[3].roll = 0;
channels[3].pitch = 0;
channels[3].yaw = 100;
guiSettings.multi.VTOLMotorNW = 1;
guiSettings.multi.VTOLMotorNE = 2;
guiSettings.multi.VTOLMotorS = 3;
guiSettings.multi.TRIYaw = 4;
applyMixerConfiguration(channels);
applyMultiGUISettings(SystemSettings::AIRFRAMETYPE_FIXEDWINGELEVON, guiSettings);
}

View File

@ -103,6 +103,9 @@ private:
void setupQuadCopter();
void setupHexaCopter();
void setupOctoCopter();
void setupVtail();
void setupAileron();
void setupElevon();
private slots:
void uAVOTransactionCompleted(UAVObject *object, bool success);

View File

@ -30,6 +30,9 @@
<file>resources/bttn-turbo-down.png</file>
<file>resources/bttn-turbo-up.png</file>
<file>resources/multirotor-shapes.svg</file>
<!-- these are different from the files in /config/images -->
<file>resources/fixedwing-shapes.svg</file>
<file>resources/flyingwing-shapes.svg</file>
<file>resources/bttn-illustration-down.png</file>
<file>resources/bttn-illustration-up.png</file>
<file>resources/bttn-save-down.png</file>