Commit 4d3dd793 authored by Don Gagne's avatar Don Gagne

ViewWithDialog -> QGCView

- More more on making QGCView real
- Converted Parameter Editor to QGCView
parent ccc5f622
...@@ -32,7 +32,10 @@ ...@@ -32,7 +32,10 @@
<file alias="QGroundControl/Controls/VehicleSummaryRow.qml">src/QmlControls/VehicleSummaryRow.qml</file> <file alias="QGroundControl/Controls/VehicleSummaryRow.qml">src/QmlControls/VehicleSummaryRow.qml</file>
<file alias="QGroundControl/Controls/arrow-down.png">src/QmlControls/arrow-down.png</file> <file alias="QGroundControl/Controls/arrow-down.png">src/QmlControls/arrow-down.png</file>
<file alias="QGroundControl/Controls/ViewWidget.qml">src/ViewWidgets/ViewWidget.qml</file> <file alias="QGroundControl/Controls/ViewWidget.qml">src/ViewWidgets/ViewWidget.qml</file>
<file alias="QGroundControl/Controls/ViewWithDialog.qml">src/QmlControls/ViewWithDialog.qml</file>
<file alias="QGroundControl/Controls/QGCView.qml">src/QmlControls/QGCView.qml</file>
<file alias="QGroundControl/Controls/QGCViewPanel.qml">src/QmlControls/QGCViewPanel.qml</file>
<file alias="QGroundControl/Controls/QGCViewDialog.qml">src/QmlControls/QGCViewDialog.qml</file>
<file alias="QGroundControl/Controls/ParameterEditor.qml">src/QmlControls/ParameterEditor.qml</file> <file alias="QGroundControl/Controls/ParameterEditor.qml">src/QmlControls/ParameterEditor.qml</file>
......
...@@ -32,8 +32,9 @@ import QGroundControl.Palette 1.0 ...@@ -32,8 +32,9 @@ import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.Controllers 1.0 import QGroundControl.Controllers 1.0
ViewWithDialog { QGCView {
viewComponent: view id: rootQGCView
viewComponent: view
Component { Component {
id: view id: view
...@@ -45,9 +46,13 @@ ViewWithDialog { ...@@ -45,9 +46,13 @@ ViewWithDialog {
signal showDialog(Component component, string title, int charWidth, int buttons) signal showDialog(Component component, string title, int charWidth, int buttons)
signal hideDialog signal hideDialog
function doWorkAfterComponentCompleted() { Connections {
if (controller.showCustomConfigPanel) { target: rootQGCView
panel.showDialog(customConfigDialog, "Custom Airframe Config", 50, StandardButton.Reset)
onCompleted: {
if (controller.showCustomConfigPanel) {
panel.showDialog(customConfigDialog, "Custom Airframe Config", 50, StandardButton.Reset)
}
} }
} }
......
...@@ -36,384 +36,336 @@ import QGroundControl.Controllers 1.0 ...@@ -36,384 +36,336 @@ import QGroundControl.Controllers 1.0
import QGroundControl.FactSystem 1.0 import QGroundControl.FactSystem 1.0
import QGroundControl.FactControls 1.0 import QGroundControl.FactControls 1.0
Rectangle { QGCView {
/// true: show full information, false: for use in smaller widgets viewComponent: parameterList
property bool fullMode: true
QGCPalette { id: __qgcPal; colorGroupEnabled: true }
ParameterEditorController { id: __controller }
QGCLabel { id: __textControl; text: "X"; visible: false }
readonly property real __leftMargin: 10
readonly property real __rightMargin: 20
readonly property int __maxParamChars: 16
color: __qgcPal.window
// We use an ExclusiveGroup to maintain the visibility of a single editing control at a time
ExclusiveGroup {
id: __exclusiveEditorGroup
}
property Fact __editorOverlayFact: Fact { }
property real __textHeight: __textControl.contentHeight
property real __textWidth: __textControl.contentWidth
Item {
id: __editorOverlay
anchors.fill: parent
visible: false
z: 100
Rectangle {
width: __textWidth * 75
height: parent.height
anchors.left: parent.left
anchors.right: editorDialog.left
opacity: 0.80
color: __qgcPal.window
}
Rectangle { /// true: show full information, false: for use in smaller widgets
id: editorDialog property bool fullMode: true
width: fullMode ? __textWidth * 50 : parent.width
height: parent.height
anchors.right: parent.right
color: __qgcPal.windowShadeDark
Column { QGCPalette { id: __qgcPal; colorGroupEnabled: true }
spacing: __textHeight ParameterEditorController { id: __controller }
anchors.fill: parent QGCLabel { id: __textMeasure; text: "X"; visible: false }
property Fact __editorDialogFact: Fact { }
Rectangle {
width: parent.width
height: saveButton.height
color: __qgcPal.windowShade
QGCLabel { readonly property real __leftMargin: 10
x: __textWidth readonly property real __rightMargin: 20
height: parent.height readonly property int __maxParamChars: 16
verticalAlignment: Text.AlignVCenter
text: "Edit Parameter"
}
QGCButton { property real __textHeight: __textMeasure.contentHeight
anchors.right: saveButton.left property real __textWidth: __textMeasure.contentWidth
anchors.bottom: parent.bottom
text: "Cancel"
onClicked: { Component {
__editorOverlay.visible = false id: parameterList
}
}
QGCButton { QGCViewPanel {
id: saveButton id: panel
anchors.right: parent.right
primary: true
text: "Save"
onClicked: { Component {
__editorOverlayFact.value = valueField.text id: factRowsComponent
__editorOverlay.visible = false
}
}
}
Column { Column {
spacing: __textHeight id: factColumn
anchors.leftMargin: __textWidth * 2 x: __leftMargin
anchors.rightMargin: __textWidth
anchors.left: parent.left
anchors.right: parent.right
QGCLabel { QGCLabel {
width: parent.width height: __textHeight + (ScreenTools.pixelSizeFactor * (9))
wrapMode: Text.WordWrap text: group
text: __editorOverlayFact.shortDescription ? __editorOverlayFact.shortDescription : "Description missing" verticalAlignment: Text.AlignVCenter
font.pointSize: ScreenTools.fontPointFactor * (16);
} }
QGCLabel { Rectangle {
width: parent.width width: parent.width
wrapMode: Text.WordWrap height: 1
visible: __editorOverlayFact.longDescription color: __qgcPal.text
text: __editorOverlayFact.longDescription
} }
QGCTextField { Repeater {
id: valueField model: __controller.getFactsForGroup(componentId, group)
text: __editorOverlayFact.valueString
}
QGCLabel { text: __editorOverlayFact.name } Column {
Item {
x: __leftMargin
width: parent.width
height: __textHeight + (ScreenTools.pixelSizeFactor * (9))
Row { Fact {
spacing: __textWidth id: modelFact
QGCLabel { text: "Units:" } Component.onCompleted: {
QGCLabel { text: __editorOverlayFact.units ? __editorOverlayFact.units : "none" } name = modelData + ":" + componentId
} }
}
QGCLabel {
id: nameLabel
width: __textWidth * (__maxParamChars + 1)
height: parent.height
verticalAlignment: Text.AlignVCenter
text: modelFact.name
}
QGCLabel {
id: valueLabel
width: __textWidth * 20
height: parent.height
anchors.left: nameLabel.right
verticalAlignment: Text.AlignVCenter
color: modelFact.valueEqualsDefault ? __qgcPal.text : "orange"
text: modelFact.valueString + " " + modelFact.units
}
QGCLabel {
height: parent.height
anchors.left: valueLabel.right
verticalAlignment: Text.AlignVCenter
visible: fullMode
text: modelFact.shortDescription
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton
onClicked: {
__editorDialogFact = modelFact
panel.showDialog(editorDialogComponent, "Parameter Editor", fullMode ? 50 : -1, StandardButton.Cancel | StandardButton.Save)
}
}
}
Row { Rectangle {
spacing: __textWidth x: __leftMargin
width: factColumn.width - __leftMargin - __rightMargin
height: 1
color: __qgcPal.windowShade
}
} // Column - Fact
} // Repeater - Facts
} // Column - Facts
} // Component - factRowsComponent
QGCLabel { text: "Minimum value:" } Column {
QGCLabel { text: __editorOverlayFact.min } anchors.fill: parent
}
Row { Item {
spacing: __textWidth width: parent.width
height: firstButton.height
QGCLabel { text: "Maxmimum value:" } QGCLabel {
QGCLabel { text: __editorOverlayFact.max } font.pointSize: ScreenTools.fontPointFactor * (20)
visible: fullMode
text: "PARAMETER EDITOR"
} }
Row { Row {
spacing: __textWidth spacing: 10
layoutDirection: Qt.RightToLeft
QGCLabel { text: "Default value:" } width: parent.width
QGCLabel { text: __editorOverlayFact.defaultValueAvailable ? __editorOverlayFact.defaultValue : "none" }
}
QGCLabel { QGCButton {
width: parent.width text: "Clear RC to Param"
wrapMode: Text.WordWrap onClicked: __controller.clearRCToParam()
text: "Warning: Modifying parameters while vehicle is in flight can lead to vehicle instability and possible vehicle loss. " + }
"Make sure you know what you are doing and double-check your values before Save!" QGCButton {
text: "Save to file"
visible: fullMode
onClicked: __controller.saveToFile()
}
QGCButton {
text: "Load from file"
visible: fullMode
onClicked: __controller.loadFromFile()
}
QGCButton {
id: firstButton
text: "Refresh"
onClicked: __controller.refresh()
}
} }
} // Column - Fact information }
} // Column - Header + Fact information
QGCButton {
anchors.rightMargin: __textWidth
anchors.right: rcButton.left
anchors.bottom: parent.bottom
visible: __editorOverlayFact.defaultValueAvailable
text: "Reset to default"
onClicked: { Item {
__editorOverlayFact.value = __editorOverlayFact.defaultValue id: lastSpacer
__editorOverlay.visible = false height: 10
width: 5
} }
}
QGCButton { Item {
id: rcButton width: parent.width
anchors.right: parent.right height: parent.height - (lastSpacer.y + lastSpacer.height)
anchors.bottom: parent.bottom
visible: __editorOverlayFact.defaultValueAvailable
text: "Set RC to Param..."
onClicked: __controller.setRCToParam(__editorOverlayFact.name)
}
} // Rectangle - editorDialog
} // Item - editorOverlay
Component { ScrollView {
id: factRowsComponent id : groupScroll
width: __textWidth * 25
height: parent.height
Column { Column {
id: factColumn Repeater {
x: __leftMargin model: __controller.componentIds
QGCLabel { Column {
height: __textHeight + (ScreenTools.pixelSizeFactor * (9)) id: componentColumn
text: group
verticalAlignment: Text.AlignVCenter
font.pointSize: ScreenTools.fontPointFactor * (16);
}
Rectangle { readonly property int componentId: parseInt(modelData)
width: parent.width
height: 1
color: __qgcPal.text
}
Repeater { QGCLabel {
model: __controller.getFactsForGroup(componentId, group) height: contentHeight + (ScreenTools.pixelSizeFactor * (9))
text: "Component #: " + componentId.toString()
verticalAlignment: Text.AlignVCenter
font.pointSize: ScreenTools.fontPointFactor * (16);
}
Column { Repeater {
Item { model: __controller.getGroupsForComponent(componentColumn.componentId)
x: __leftMargin
width: parent.width Column {
height: __textHeight + (ScreenTools.pixelSizeFactor * (9)) QGCButton {
x: __leftMargin
width: groupScroll.width - __leftMargin - __rightMargin
text: modelData
onClicked: {
factRowsLoader.sourceComponent = null
factRowsLoader.componentId = componentId
factRowsLoader.group = modelData
factRowsLoader.sourceComponent = factRowsComponent
}
}
Item {
width: 1
height: ScreenTools.pixelSizeFactor * (3)
}
} // Column - Group
} // Repeater - Groups
Fact { Item {
id: modelFact height: 10
width: 10
}
} // Column - Component
} // Repeater - Components
} // Column - Component
} // ScrollView - Groups
Component.onCompleted: { ScrollView {
name = modelData + ":" + componentId id: factScrollView
} anchors.left: groupScroll.right
} anchors.right: parent.right
height: parent.height
QGCLabel { Loader {
id: nameLabel id: factRowsLoader
width: __textWidth * (__maxParamChars + 1) width: factScrollView.width
height: parent.height
verticalAlignment: Text.AlignVCenter
text: modelFact.name
}
QGCLabel { property int componentId: __controller.componentIds[0]
id: valueLabel property string group: __controller.getGroupsForComponent(__controller.componentIds[0])[0]
width: __textWidth * 20 sourceComponent: factRowsComponent
height: parent.height
anchors.left: nameLabel.right
verticalAlignment: Text.AlignVCenter
color: modelFact.valueEqualsDefault ? __qgcPal.text : "orange"
text: modelFact.valueString + " " + modelFact.units
} }
} // ScrollView - Facts
} // Item - Group ScrollView + Facts
} // Column - Outer
}
} // Component - Parameter List
QGCLabel { Component {
height: parent.height id: editorDialogComponent
anchors.left: valueLabel.right
verticalAlignment: Text.AlignVCenter
visible: fullMode
text: modelFact.shortDescription
}
MouseArea { QGCViewDialog {
anchors.fill: parent id: editorDialog
acceptedButtons: Qt.LeftButton
onClicked: { property bool fullMode: true
__editorOverlayFact = modelFact
__editorOverlay.visible = true
}
}
}
Rectangle { function accept() {
x: __leftMargin __editorDialogFact.value = valueField.text
width: factColumn.width - __leftMargin - __rightMargin editorDialog.hideDialog()
height: 1
color: __qgcPal.windowShade
}
} // Column - Fact
} // Repeater - Facts
} // Column - Facts
} // Component - factRowsComponent
Column {
anchors.fill: parent
Item {
width: parent.width
height: firstButton.height
QGCLabel {
font.pointSize: ScreenTools.fontPointFactor * (20)
visible: fullMode
text: "PARAMETER EDITOR"
} }
Row { Column {
spacing: 10 spacing: __textHeight
layoutDirection: Qt.RightToLeft anchors.left: parent.left
width: parent.width anchors.right: parent.right
QGCButton { QGCLabel {
text: "Clear RC to Param" width: parent.width
onClicked: __controller.clearRCToParam() wrapMode: Text.WordWrap
text: __editorDialogFact.shortDescription ? __editorDialogFact.shortDescription : "Description missing"
} }
QGCButton {
text: "Save to file" QGCLabel {
visible: fullMode width: parent.width
onClicked: __controller.saveToFile() wrapMode: Text.WordWrap
} visible: __editorDialogFact.longDescription
QGCButton { text: __editorDialogFact.longDescription
text: "Load from file"
visible: fullMode
onClicked: __controller.loadFromFile()
}
QGCButton {
id: firstButton
text: "Refresh"
onClicked: __controller.refresh()
} }
}
}
Item { QGCTextField {
id: lastSpacer id: valueField
height: 10 text: __editorDialogFact.valueString
width: 5 }
}
Item { QGCLabel { text: __editorDialogFact.name }
width: parent.width
height: parent.height - (lastSpacer.y + lastSpacer.height)
ScrollView { Row {
id : groupScroll spacing: __textWidth
width: __textWidth * 25
height: parent.height
Column { QGCLabel { text: "Units:" }
Repeater { QGCLabel { text: __editorDialogFact.units ? __editorDialogFact.units : "none" }
model: __controller.componentIds }
Column { Row {
id: componentColumn spacing: __textWidth
readonly property int componentId: parseInt(modelData) QGCLabel { text: "Minimum value:" }
QGCLabel { text: __editorDialogFact.min }
}
QGCLabel { Row {
height: contentHeight + (ScreenTools.pixelSizeFactor * (9)) spacing: __textWidth
text: "Component #: " + componentId.toString()
verticalAlignment: Text.AlignVCenter
font.pointSize: ScreenTools.fontPointFactor * (16);
}
Repeater { QGCLabel { text: "Maxmimum value:" }
model: __controller.getGroupsForComponent(componentColumn.componentId) QGCLabel { text: __editorDialogFact.max }
}
Column { Row {
QGCButton { spacing: __textWidth
x: __leftMargin
width: groupScroll.width - __leftMargin - __rightMargin
text: modelData
onClicked: {
factRowsLoader.sourceComponent = null
factRowsLoader.componentId = componentId
factRowsLoader.group = modelData
factRowsLoader.sourceComponent = factRowsComponent
}
}
Item { QGCLabel { text: "Default value:" }
width: 1 QGCLabel { text: __editorDialogFact.defaultValueAvailable ? __editorDialogFact.defaultValue : "none" }
height: ScreenTools.pixelSizeFactor * (3) }
}
} // Column - Group
} // Repeater - Groups
Item { QGCLabel {
height: 10 width: parent.width
width: 10 wrapMode: Text.WordWrap
} text: "Warning: Modifying parameters while vehicle is in flight can lead to vehicle instability and possible vehicle loss. " +
} // Column - Component "Make sure you know what you are doing and double-check your values before Save!"
} // Repeater - Components }
} // Column - Component } // Column - Fact information
} // ScrollView - Groups
ScrollView {
id: factScrollView
anchors.left: groupScroll.right
anchors.right: parent.right
height: parent.height
Loader { QGCButton {
id: factRowsLoader anchors.rightMargin: __textWidth
width: factScrollView.width anchors.right: rcButton.left
anchors.bottom: parent.bottom
visible: __editorDialogFact.defaultValueAvailable
text: "Reset to default"
property int componentId: __controller.componentIds[0] onClicked: {
property string group: __controller.getGroupsForComponent(__controller.componentIds[0])[0] __editorDialogFact.value = __editorDialogFact.defaultValue
sourceComponent: factRowsComponent editorDialog.hideDialog()
} }
} // ScrollView - Facts }
} // Item - Group ScrollView + Facts
} // Column - Outer QGCButton {
} id: rcButton
anchors.right: parent.right
anchors.bottom: parent.bottom
visible: __editorDialogFact.defaultValueAvailable
text: "Set RC to Param..."
onClicked: __controller.setRCToParam(__editorDialogFact.name)
}
} // Rectangle - editorDialog
} // Component - Editor Dialog
} // QGCView
\ No newline at end of file
...@@ -35,14 +35,22 @@ import QGroundControl.FactSystem 1.0 ...@@ -35,14 +35,22 @@ import QGroundControl.FactSystem 1.0
import QGroundControl.FactControls 1.0 import QGroundControl.FactControls 1.0
Item { Item {
id: __rootItem
property Component viewComponent property Component viewComponent
/// This is signalled when the top level Item reaches Component.onCompleted. This allows
/// the view subcomponent to connect to this signal and do work once the full ui is ready
/// to go.
signal completed
function __showDialog(component, title, charWidth, buttons) { function __showDialog(component, title, charWidth, buttons) {
__acceptButton.visible = false __acceptButton.visible = false
__rejectButton.visible = false __rejectButton.visible = false
__dialogCharWidth = charWidth __dialogCharWidth = charWidth
__dialogTitle = title __dialogTitle = title
// Accept role buttons
if (buttons & StandardButton.Ok) { if (buttons & StandardButton.Ok) {
__acceptButton.text = "Ok" __acceptButton.text = "Ok"
__acceptButton.visible = true __acceptButton.visible = true
...@@ -52,12 +60,6 @@ Item { ...@@ -52,12 +60,6 @@ Item {
} else if (buttons & StandardButton.Save) { } else if (buttons & StandardButton.Save) {
__acceptButton.text = "Save" __acceptButton.text = "Save"
__acceptButton.visible = true __acceptButton.visible = true
} else if (buttons & StandardButton.Cancel) {
__rejectButton.text = "Cancel"
__rejectButton.visible = true
} else if (buttons & StandardButton.Close) {
__rejectButton.text = "Cancel"
__rejectButton.visible = true
} else if (buttons & StandardButton.Apply) { } else if (buttons & StandardButton.Apply) {
__acceptButton.text = "Apply" __acceptButton.text = "Apply"
__acceptButton.visible = true __acceptButton.visible = true
...@@ -73,15 +75,6 @@ Item { ...@@ -73,15 +75,6 @@ Item {
} else if (buttons & StandardButton.YesToAll) { } else if (buttons & StandardButton.YesToAll) {
__acceptButton.text = "Yes to All" __acceptButton.text = "Yes to All"
__acceptButton.visible = true __acceptButton.visible = true
} else if (buttons & StandardButton.No) {
__rejectButton.text = "No"
__rejectButton.visible = true
} else if (buttons & StandardButton.NoToAll) {
__rejectButton.text = "No to All"
__rejectButton.visible = true
} else if (buttons & StandardButton.Abort) {
__rejectButton.text = "Abort"
__rejectButton.visible = true
} else if (buttons & StandardButton.Retry) { } else if (buttons & StandardButton.Retry) {
__acceptButton.text = "Retry" __acceptButton.text = "Retry"
__acceptButton.visible = true __acceptButton.visible = true
...@@ -95,6 +88,25 @@ Item { ...@@ -95,6 +88,25 @@ Item {
__acceptButton.text = "Ignore" __acceptButton.text = "Ignore"
__acceptButton.visible = true __acceptButton.visible = true
} }
// Reject role buttons
if (buttons & StandardButton.Cancel) {
__rejectButton.text = "Cancel"
__rejectButton.visible = true
} else if (buttons & StandardButton.Close) {
__rejectButton.text = "Cancel"
__rejectButton.visible = true
} else if (buttons & StandardButton.No) {
__rejectButton.text = "No"
__rejectButton.visible = true
} else if (buttons & StandardButton.NoToAll) {
__rejectButton.text = "No to All"
__rejectButton.visible = true
} else if (buttons & StandardButton.Abort) {
__rejectButton.text = "Abort"
__rejectButton.visible = true
}
__dialogComponent = component __dialogComponent = component
__viewPanel.enabled = false __viewPanel.enabled = false
__dialogOverlay.visible = true __dialogOverlay.visible = true
...@@ -120,7 +132,7 @@ Item { ...@@ -120,7 +132,7 @@ Item {
property Component __dialogComponent property Component __dialogComponent
Component.onCompleted: __viewPanel.item.doWorkAfterComponentCompleted() Component.onCompleted: completed()
Connections { Connections {
target: __viewPanel.item target: __viewPanel.item
...@@ -161,7 +173,7 @@ Item { ...@@ -161,7 +173,7 @@ Item {
// This is the main dialog panel which is anchored to the right edge // This is the main dialog panel which is anchored to the right edge
Rectangle { Rectangle {
id: __dialogPanel id: __dialogPanel
width: __textWidth * __dialogCharWidth width: __dialogCharWidth == -1 ? parent.width : __textWidth * __dialogCharWidth
height: parent.height height: parent.height
anchors.right: parent.right anchors.right: parent.right
color: __qgcPal.windowShadeDark color: __qgcPal.windowShadeDark
......
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/// @file
/// @author Don Gagne <don@thegagnes.com>
import QtQuick 2.3
import QtQuick.Controls 1.3
import QGroundControl.Controls 1.0
import QGroundControl.Palette 1.0
Rectangle {
QGCPalette { id: qgcPal; colorGroupEnabled: enabled }
signal hideDialog
function accept() {
hideDialog()
}
function reject() {
hideDialog()
}
color: qgcPal.windowShadeDark
}
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/// @file
/// @author Don Gagne <don@thegagnes.com>
import QtQuick 2.3
import QtQuick.Controls 1.3
import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0
Rectangle {
QGCPalette { id: qgcPal; colorGroupEnabled: enabled }
signal showDialog(Component component, string title, int charWidth, int buttons)
signal hideDialog
color: qgcPal.window
}
...@@ -16,5 +16,8 @@ VehicleRotationCal 1.0 VehicleRotationCal.qml ...@@ -16,5 +16,8 @@ VehicleRotationCal 1.0 VehicleRotationCal.qml
VehicleSummaryRow 1.0 VehicleSummaryRow.qml VehicleSummaryRow 1.0 VehicleSummaryRow.qml
ParameterEditor 1.0 ParameterEditor.qml ParameterEditor 1.0 ParameterEditor.qml
ViewWidget 1.0 ViewWidget.qml ViewWidget 1.0 ViewWidget.qml
ViewWithDialog 1.0 ViewWithDialog.qml
QGCView 1.0 QGCView.qml
QGCViewPanel 1.0 QGCViewPanel.qml
QGCViewDialog 1.0 QGCViewDialog.qml
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