Commit 208be59b authored by Don Gagne's avatar Don Gagne

commit

parent 106c2cf2
...@@ -548,7 +548,8 @@ SOURCES += \ ...@@ -548,7 +548,8 @@ SOURCES += \
# #
INCLUDEPATH += \ INCLUDEPATH += \
src/VehicleSetup src/VehicleSetup \
src/AutoPilotPlugins/PX4 \
FORMS += \ FORMS += \
src/VehicleSetup/SetupView.ui \ src/VehicleSetup/SetupView.ui \
......
...@@ -38,14 +38,10 @@ ...@@ -38,14 +38,10 @@
bool AirframeComponentController::_typesRegistered = false; bool AirframeComponentController::_typesRegistered = false;
AirframeComponentController::AirframeComponentController(void) : AirframeComponentController::AirframeComponentController(void) :
_uas(NULL),
_currentVehicleIndex(0), _currentVehicleIndex(0),
_autostartId(0), _autostartId(0),
_showCustomConfigPanel(false) _showCustomConfigPanel(false)
{ {
_uas = UASManager::instance()->getActiveUAS();
Q_ASSERT(_uas);
if (!_typesRegistered) { if (!_typesRegistered) {
_typesRegistered = true; _typesRegistered = true;
qmlRegisterUncreatableType<AirframeType>("QGroundControl.Controllers", 1, 0, "AiframeType", "Can only reference AirframeType"); qmlRegisterUncreatableType<AirframeType>("QGroundControl.Controllers", 1, 0, "AiframeType", "Can only reference AirframeType");
......
...@@ -66,7 +66,6 @@ signals: ...@@ -66,7 +66,6 @@ signals:
private: private:
static bool _typesRegistered; static bool _typesRegistered;
UASInterface* _uas;
QVariantList _airframeTypes; QVariantList _airframeTypes;
QString _currentAirframeType; QString _currentAirframeType;
QString _currentVehicleName; QString _currentVehicleName;
......
...@@ -75,9 +75,6 @@ PX4AutoPilotPlugin::PX4AutoPilotPlugin(UASInterface* uas, QObject* parent) : ...@@ -75,9 +75,6 @@ PX4AutoPilotPlugin::PX4AutoPilotPlugin(UASInterface* uas, QObject* parent) :
{ {
Q_ASSERT(uas); Q_ASSERT(uas);
qmlRegisterType<FlightModesComponentController>("QGroundControl.Controllers", 1, 0, "FlightModesComponentController");
qmlRegisterType<AirframeComponentController>("QGroundControl.Controllers", 1, 0, "AirframeComponentController");
_parameterFacts = new PX4ParameterLoader(this, uas, this); _parameterFacts = new PX4ParameterLoader(this, uas, this);
Q_CHECK_PTR(_parameterFacts); Q_CHECK_PTR(_parameterFacts);
......
...@@ -110,11 +110,7 @@ QWidget* SensorsComponent::setupWidget(void) const ...@@ -110,11 +110,7 @@ QWidget* SensorsComponent::setupWidget(void) const
QGCQmlWidgetHolder* holder = new QGCQmlWidgetHolder(); QGCQmlWidgetHolder* holder = new QGCQmlWidgetHolder();
Q_CHECK_PTR(holder); Q_CHECK_PTR(holder);
holder->setAutoPilot(_autopilot); holder->setAutoPilot(_autopilot);
SensorsComponentController* controller = new SensorsComponentController(_autopilot, holder);
holder->setContextPropertyObject("controller", controller);
holder->setSource(QUrl::fromUserInput("qrc:/qml/SensorsComponent.qml")); holder->setSource(QUrl::fromUserInput("qrc:/qml/SensorsComponent.qml"));
return holder; return holder;
......
...@@ -31,91 +31,101 @@ import QGroundControl.FactControls 1.0 ...@@ -31,91 +31,101 @@ import QGroundControl.FactControls 1.0
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.ScreenTools 1.0 import QGroundControl.ScreenTools 1.0
import QGroundControl.Controllers 1.0
QGCView { QGCView {
id: rootQGCView id: rootQGCView
viewComponent: view viewComponent: view
// Help text which is shown both in the status text area prior to pressing a cal button and in the
// pre-calibration dialog.
readonly property string compassHelp: "For Compass calibration you will need to rotate your vehicle through a number of positions. For this calibration is is best " +
"to be connected to your vehicle via radio instead of USB since the USB cable will likely get in the way."
readonly property string gyroHelp: "For Gyroscope calibration you will need to place your vehicle right side up on solid surface and leave it still."
readonly property string accelHelp: "For Accelerometer calibration you will need to place your vehicle on all six sides and hold it still there for a few seconds."
readonly property string airspeedHelp: "For Airspeed calibration you will need to keep your airspeed sensor out of any wind and then blow across the sensor."
property var controller
// Used to pass what type of calibration is being performed to the preCalibrationDialog
property string preCalibrationDialogType
// Used to pass help text to the preCalibrationDialog dialog
property string preCalibrationDialogHelp
readonly property int rotationColumnWidth: 200
readonly property var rotations: [
"ROTATION_NONE",
"ROTATION_YAW_45",
"ROTATION_YAW_90",
"ROTATION_YAW_135",
"ROTATION_YAW_180",
"ROTATION_YAW_225",
"ROTATION_YAW_270",
"ROTATION_YAW_315",
"ROTATION_ROLL_180",
"ROTATION_ROLL_180_YAW_45",
"ROTATION_ROLL_180_YAW_90",
"ROTATION_ROLL_180_YAW_135",
"ROTATION_PITCH_180",
"ROTATION_ROLL_180_YAW_225",
"ROTATION_ROLL_180_YAW_270",
"ROTATION_ROLL_180_YAW_315",
"ROTATION_ROLL_90",
"ROTATION_ROLL_90_YAW_45",
"ROTATION_ROLL_90_YAW_90",
"ROTATION_ROLL_90_YAW_135",
"ROTATION_ROLL_270",
"ROTATION_ROLL_270_YAW_45",
"ROTATION_ROLL_270_YAW_90",
"ROTATION_ROLL_270_YAW_135",
"ROTATION_PITCH_90",
"ROTATION_PITCH_270",
"ROTATION_ROLL_270_YAW_270"
]
Component { Component {
id: preCalibrationDialogComponent id: preCalibrationDialogComponent
QGCViewDialog { QGCViewDialog {
id: preCalibrationDialog id: preCalibrationDialog
Fact { id: sys_autostart; name: "SYS_AUTOSTART" }
function accept() { function accept() {
sys_autostart.value = 0 if (preCalibrationDialogType == "gyro") {
customConfigDialog.hideDialog() controller.calibrateGyro()
} } else if (preCalibrationDialogType == "accel") {
controller.calibrateAccel()
QGCLabel { } else if (preCalibrationDialogType == "compass") {
anchors.fill: parent controller.calibrateCompass()
wrapMode: Text.WordWrap } else if (preCalibrationDialogType == "airspeed") {
text: "Your vehicle is using a custom airframe configuration. " + controller.calibrateAirspeed()
"This configuration can only be modified through the Parameter Editor.\n\n" + }
"If you want to Reset your airframe configuration and select a standard configuration, click 'Reset' above." preCalibrationDialog.hideDialog()
} }
Rectangle {
property string calibrationType
id: boardRotationOverlay
width: 300
height: boardRotationOverlayColumn.height + 11
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
color: qgcPal.window
border.width: 1
border.color: qgcPal.text
visible: false
z: overlay.z + 1
Column {
id: boardRotationOverlayColumn
anchors.topMargin: 10
anchors.top: parent.top
width: parent.width
spacing: 10
Column { Column {
anchors.leftMargin: 10 anchors.fill: parent
anchors.rightMargin: 10 spacing: 10
anchors.left: parent.left
anchors.right: parent.right
spacing: 10
QGCLabel {
width: parent.width
wrapMode: Text.WordWrap
text: "Please check and/or update board rotation before calibrating"
}
FactComboBox {
width: rotationColumnWidth
model: rotations
fact: Fact { name: "SENS_BOARD_ROT" }
}
}
QGCButton { QGCLabel {
x: 1 width: parent.width
width: parent.width - 2 wrapMode: Text.WordWrap
primary: true text: preCalibrationDialogHelp
text: "OK" }
onClicked: { QGCLabel {
boardRotationOverlay.visible = false width: parent.width
overlay.visible = false wrapMode: Text.WordWrap
visible: preCalibrationDialogType != "airspeed"
text: "Please check and/or update board rotation before calibrating"
}
if (boardRotationOverlay.calibrationType == "gyro") { FactComboBox {
controller.calibrateGyro() width: rotationColumnWidth
} else if (boardRotationOverlay.calibrationType == "accel") { model: rotations
controller.calibrateAccel() visible: preCalibrationDialogType != "airspeed"
} else if (boardRotationOverlay.calibrationType == "compass") { fact: Fact { name: "SENS_BOARD_ROT"; onFactMissing: showMissingFactOverlay(name) }
controller.calibrateCompass()
}
}
}
} }
} }
} }
...@@ -124,42 +134,44 @@ QGCView { ...@@ -124,42 +134,44 @@ QGCView {
Component { Component {
id: view id: view
// FIXME: Need to convert QGCViewPanel to FactPanel
QGCViewPanel { QGCViewPanel {
anchors.fill: parent id: viewPanel
Connections {
target: rootQGCView
onCompleted: {
rootQGCView.controller = viewPanel.controller
}
}
SensorsComponentController {
id: controller
factPanel: viewPanel
statusLog: statusTextArea
progressBar: progressBar
compassButton: compassButton
gyroButton: gyroButton
accelButton: accelButton
airspeedButton: airspeedButton
cancelButton: cancelButton
orientationCalAreaHelpText: orientationCalAreaHelpText
onResetStatusTextArea: statusTextArea.text = statusTextAreaDefaultText
onSetCompassRotations: showCompassRotationOverlay()
onWaitingForCancelChanged: {
if (controller.waitingForCancel) {
showMessage(
} else {
hideDialog()
}
}
}
QGCPalette { id: qgcPal; colorGroupEnabled: enabled } QGCPalette { id: qgcPal; colorGroupEnabled: enabled }
readonly property int rotationColumnWidth: 200
readonly property var rotations: [
"ROTATION_NONE",
"ROTATION_YAW_45",
"ROTATION_YAW_90",
"ROTATION_YAW_135",
"ROTATION_YAW_180",
"ROTATION_YAW_225",
"ROTATION_YAW_270",
"ROTATION_YAW_315",
"ROTATION_ROLL_180",
"ROTATION_ROLL_180_YAW_45",
"ROTATION_ROLL_180_YAW_90",
"ROTATION_ROLL_180_YAW_135",
"ROTATION_PITCH_180",
"ROTATION_ROLL_180_YAW_225",
"ROTATION_ROLL_180_YAW_270",
"ROTATION_ROLL_180_YAW_315",
"ROTATION_ROLL_90",
"ROTATION_ROLL_90_YAW_45",
"ROTATION_ROLL_90_YAW_90",
"ROTATION_ROLL_90_YAW_135",
"ROTATION_ROLL_270",
"ROTATION_ROLL_270_YAW_45",
"ROTATION_ROLL_270_YAW_90",
"ROTATION_ROLL_270_YAW_135",
"ROTATION_PITCH_90",
"ROTATION_PITCH_270",
"ROTATION_ROLL_270_YAW_270"
]
readonly property string statusTextAreaDefaultText: "For Compass calibration you will need to rotate your vehicle through a number of positions. For this calibration is is best " + readonly property string statusTextAreaDefaultText: "For Compass calibration you will need to rotate your vehicle through a number of positions. For this calibration is is best " +
"to be connected to your vehicle via radio instead of USB since the USB cable will likely get in the way.\n\n" + "to be connected to your vehicle via radio instead of USB since the USB cable will likely get in the way.\n\n" +
...@@ -181,33 +193,6 @@ QGCView { ...@@ -181,33 +193,6 @@ QGCView {
color: qgcPal.window color: qgcPal.window
// We use this bogus loader just so we can get an onLoaded signal to hook to in order to
// finish controller initialization.
Component {
id: loadSignal;
Item { }
}
Loader {
sourceComponent: loadSignal
onLoaded: {
controller.statusLog = statusTextArea
controller.progressBar = progressBar
controller.compassButton = compassButton
controller.gyroButton = gyroButton
controller.accelButton = accelButton
controller.airspeedButton = airspeedButton
controller.cancelButton = cancelButton
controller.orientationCalAreaHelpText = orientationCalAreaHelpText
}
}
Connections {
target: controller
onResetStatusTextArea: statusTextArea.text = statusTextAreaDefaultText
onSetCompassRotations: showCompassRotationOverlay()
}
Rectangle { Rectangle {
id: overlay id: overlay
anchors.fill: parent anchors.fill: parent
...@@ -383,7 +368,11 @@ QGCView { ...@@ -383,7 +368,11 @@ QGCView {
text: "Compass" text: "Compass"
indicatorGreen: fact.value != 0 indicatorGreen: fact.value != 0
onClicked: showBoardRotationOverlay("compass") onClicked: {
preCalibrationDialogType = "compass"
preCalibrationDialogHelp = compassHelp
showDialog(preCalibrationDialogComponent, "Calibrate Compass", 50, StandardButton.Cancel | StandardButton.Ok)
}
} }
IndicatorButton { IndicatorButton {
...@@ -394,7 +383,11 @@ QGCView { ...@@ -394,7 +383,11 @@ QGCView {
text: "Gyroscope" text: "Gyroscope"
indicatorGreen: fact.value != 0 indicatorGreen: fact.value != 0
onClicked: showBoardRotationOverlay("gyro") onClicked: {
preCalibrationDialogType = "gyro"
preCalibrationDialogHelp = gyroHelp
showDialog(preCalibrationDialogComponent, "Calibrate Gyro", 50, StandardButton.Cancel | StandardButton.Ok)
}
} }
IndicatorButton { IndicatorButton {
...@@ -405,7 +398,11 @@ QGCView { ...@@ -405,7 +398,11 @@ QGCView {
text: "Accelerometer" text: "Accelerometer"
indicatorGreen: fact.value != 0 indicatorGreen: fact.value != 0
onClicked: showBoardRotationOverlay("accel") onClicked: {
preCalibrationDialogType = "accel"
preCalibrationDialogHelp = accelHelp
showDialog(preCalibrationDialogComponent, "Calibrate Accelerometer", 50, StandardButton.Cancel | StandardButton.Ok)
}
} }
IndicatorButton { IndicatorButton {
...@@ -416,7 +413,12 @@ QGCView { ...@@ -416,7 +413,12 @@ QGCView {
text: "Airspeed" text: "Airspeed"
visible: controller.fixedWing visible: controller.fixedWing
indicatorGreen: fact.value != 0 indicatorGreen: fact.value != 0
onClicked: controller.calibrateAirspeed()
onClicked: {
preCalibrationDialogType = "airspeed"
preCalibrationDialogHelp = airspeedHelp
showDialog(preCalibrationDialogComponent, "Calibrate Airspeed", 50, StandardButton.Cancel | StandardButton.Ok)
}
} }
QGCButton { QGCButton {
......
...@@ -32,8 +32,7 @@ ...@@ -32,8 +32,7 @@
#include <QVariant> #include <QVariant>
#include <QQmlProperty> #include <QQmlProperty>
SensorsComponentController::SensorsComponentController(AutoPilotPlugin* autopilot, QObject* parent) : SensorsComponentController::SensorsComponentController(void) :
QObject(parent),
_statusLog(NULL), _statusLog(NULL),
_progressBar(NULL), _progressBar(NULL),
_compassButton(NULL), _compassButton(NULL),
...@@ -67,15 +66,8 @@ SensorsComponentController::SensorsComponentController(AutoPilotPlugin* autopilo ...@@ -67,15 +66,8 @@ SensorsComponentController::SensorsComponentController(AutoPilotPlugin* autopilo
_orientationCalLeftSideRotate(false), _orientationCalLeftSideRotate(false),
_orientationCalNoseDownSideRotate(false), _orientationCalNoseDownSideRotate(false),
_unknownFirmwareVersion(false), _unknownFirmwareVersion(false),
_waitingForCancel(false), _waitingForCancel(false)
_autopilot(autopilot)
{ {
Q_ASSERT(_autopilot);
Q_ASSERT(_autopilot->pluginReady());
_uas = _autopilot->uas();
Q_ASSERT(_uas);
// Mag rotation parameters are optional // Mag rotation parameters are optional
_showCompass0 = _autopilot->parameterExists("CAL_MAG0_ROT") && _showCompass0 = _autopilot->parameterExists("CAL_MAG0_ROT") &&
_autopilot->getParameterFact("CAL_MAG0_ROT")->value().toInt() >= 0; _autopilot->getParameterFact("CAL_MAG0_ROT")->value().toInt() >= 0;
......
...@@ -31,15 +31,15 @@ ...@@ -31,15 +31,15 @@
#include <QQuickItem> #include <QQuickItem>
#include "UASInterface.h" #include "UASInterface.h"
#include "AutoPilotPlugin.h" #include "FactPanelController.h"
/// Sensors Component MVC Controller for SensorsComponent.qml. /// Sensors Component MVC Controller for SensorsComponent.qml.
class SensorsComponentController : public QObject class SensorsComponentController : public FactPanelController
{ {
Q_OBJECT Q_OBJECT
public: public:
SensorsComponentController(AutoPilotPlugin* autopilot, QObject* parent = NULL); SensorsComponentController(void);
Q_PROPERTY(bool fixedWing READ fixedWing CONSTANT) Q_PROPERTY(bool fixedWing READ fixedWing CONSTANT)
...@@ -167,9 +167,6 @@ private: ...@@ -167,9 +167,6 @@ private:
bool _unknownFirmwareVersion; bool _unknownFirmwareVersion;
bool _waitingForCancel; bool _waitingForCancel;
AutoPilotPlugin* _autopilot;
UASInterface* _uas;
}; };
#endif #endif
...@@ -31,7 +31,11 @@ import QGroundControl.FactSystem 1.0 ...@@ -31,7 +31,11 @@ import QGroundControl.FactSystem 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
Item { Rectangle {
color: __qgcPal.window
QGCPalette { id: __qgcPal; colorGroupEnabled: true }
property string __missingFacts: "" property string __missingFacts: ""
function showMissingFactOverlay(missingFactName) { function showMissingFactOverlay(missingFactName) {
...@@ -43,8 +47,6 @@ Item { ...@@ -43,8 +47,6 @@ Item {
} }
Rectangle { Rectangle {
QGCPalette { id: __qgcPal; colorGroupEnabled: true }
id: __missingFactOverlay id: __missingFactOverlay
anchors.fill: parent anchors.fill: parent
z: 9999 z: 9999
......
...@@ -33,10 +33,10 @@ FactPanelController::FactPanelController(void) : ...@@ -33,10 +33,10 @@ FactPanelController::FactPanelController(void) :
_autopilot(NULL), _autopilot(NULL),
_factPanel(NULL) _factPanel(NULL)
{ {
UASInterface* uas = UASManager::instance()->getActiveUAS(); _uas = UASManager::instance()->getActiveUAS();
Q_ASSERT(uas); Q_ASSERT(_uas);
_autopilot = AutoPilotPluginManager::instance()->getInstanceForAutoPilotPlugin(uas); _autopilot = AutoPilotPluginManager::instance()->getInstanceForAutoPilotPlugin(_uas);
Q_ASSERT(_autopilot); Q_ASSERT(_autopilot);
Q_ASSERT(_autopilot->pluginReady()); Q_ASSERT(_autopilot->pluginReady());
......
...@@ -56,6 +56,7 @@ protected: ...@@ -56,6 +56,7 @@ protected:
/// Report a missing fact to the FactPanel Qml element /// Report a missing fact to the FactPanel Qml element
void _reportMissingFact(const QString& missingFact); void _reportMissingFact(const QString& missingFact);
UASInterface* _uas;
AutoPilotPlugin* _autopilot; AutoPilotPlugin* _autopilot;
private slots: private slots:
......
...@@ -62,6 +62,9 @@ ...@@ -62,6 +62,9 @@
#include "ViewWidgetController.h" #include "ViewWidgetController.h"
#include "ParameterEditorController.h" #include "ParameterEditorController.h"
#include "CustomCommandWidgetController.h" #include "CustomCommandWidgetController.h"
#include "FlightModesComponentController.h"
#include "AirframeComponentController.h"
#include "SensorsComponentController.h"
#include "ScreenTools.h" #include "ScreenTools.h"
#include "MavManager.h" #include "MavManager.h"
...@@ -310,13 +313,20 @@ void QGCApplication::_initCommon(void) ...@@ -310,13 +313,20 @@ void QGCApplication::_initCommon(void)
// setFont(fontDatabase.font(fontFamilyName, "Roman", 12)); // setFont(fontDatabase.font(fontFamilyName, "Roman", 12));
// Register our Qml objects // Register our Qml objects
qmlRegisterType<QGCPalette>("QGroundControl.Palette", 1, 0, "QGCPalette"); qmlRegisterType<QGCPalette>("QGroundControl.Palette", 1, 0, "QGCPalette");
qmlRegisterType<ViewWidgetController>("QGroundControl.Controllers", 1, 0, "ViewWidgetController"); qmlRegisterType<ViewWidgetController>("QGroundControl.Controllers", 1, 0, "ViewWidgetController");
qmlRegisterType<ParameterEditorController>("QGroundControl.Controllers", 1, 0, "ParameterEditorController"); qmlRegisterType<ParameterEditorController>("QGroundControl.Controllers", 1, 0, "ParameterEditorController");
qmlRegisterType<CustomCommandWidgetController>("QGroundControl.Controllers", 1, 0, "CustomCommandWidgetController"); qmlRegisterType<CustomCommandWidgetController>("QGroundControl.Controllers", 1, 0, "CustomCommandWidgetController");
qmlRegisterType<FlightModesComponentController>("QGroundControl.Controllers", 1, 0, "FlightModesComponentController");
qmlRegisterType<AirframeComponentController>("QGroundControl.Controllers", 1, 0, "AirframeComponentController");
qmlRegisterType<SensorsComponentController>("QGroundControl.Controllers", 1, 0, "SensorsComponentController");
//-- Create QML Singleton Interfaces //-- Create QML Singleton Interfaces
qmlRegisterSingletonType<ScreenTools>("QGroundControl.ScreenTools", 1, 0, "ScreenTools", screenToolsSingletonFactory); qmlRegisterSingletonType<ScreenTools>("QGroundControl.ScreenTools", 1, 0, "ScreenTools", screenToolsSingletonFactory);
qmlRegisterSingletonType<MavManager>("QGroundControl.MavManager", 1, 0, "MavManager", mavManagerSingletonFactory); qmlRegisterSingletonType<MavManager>("QGroundControl.MavManager", 1, 0, "MavManager", mavManagerSingletonFactory);
//-- Register Waypoint Interface //-- Register Waypoint Interface
qmlRegisterInterface<Waypoint>("Waypoint"); qmlRegisterInterface<Waypoint>("Waypoint");
} }
......
...@@ -30,8 +30,11 @@ import QtQuick.Controls 1.3 ...@@ -30,8 +30,11 @@ import QtQuick.Controls 1.3
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
Rectangle { import QGroundControl.FactSystem 1.0
QGCPalette { id: qgcPal; colorGroupEnabled: enabled } import QGroundControl.FactControls 1.0
FactPanel {
QGCPalette { id: __qgcPal; colorGroupEnabled: enabled }
signal hideDialog signal hideDialog
...@@ -43,5 +46,5 @@ Rectangle { ...@@ -43,5 +46,5 @@ Rectangle {
hideDialog() hideDialog()
} }
color: qgcPal.windowShadeDark color: __qgcPal.windowShadeDark
} }
...@@ -30,12 +30,15 @@ import QtQuick.Controls 1.3 ...@@ -30,12 +30,15 @@ import QtQuick.Controls 1.3
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
Rectangle { import QGroundControl.FactSystem 1.0
property QGCPalette qgcPal: QGCPalette { colorGroupEnabled: enabled } import QGroundControl.FactControls 1.0
FactPanel {
QGCPalette { id: __qgcPal; colorGroupEnabled: enabled }
signal showDialog(Component component, string title, int charWidth, int buttons) signal showDialog(Component component, string title, int charWidth, int buttons)
signal hideDialog signal hideDialog
signal showMessage(string title, string message, int buttons) signal showMessage(string title, string message, int buttons)
color: qgcPal.window color: __qgcPal.window
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment