@ -24,87 +24,89 @@ along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
@@ -24,87 +24,89 @@ along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
/ / / @ f i l e
/ / / @ a u t h o r D o n G a g n e < d o n @ t h e g a g n e s . c o m >
import QtQuick 2.2
import QGroundControl . Palette 1.0
import QGroundControl . Controls 1.0
import QGroundControl . Controllers 1.0
ViewWidget {
connectedComponent: commandComponenet
Component {
id: commandComponenet
Item {
id: bogusFactPanel
/ / W e a r e n ' t r e a l l y u s i n g t h e c o n t r o l l e r i n a F a c t P a n e l f o r t h i s u s a g e s o w e
/ / p a s s i n a b o g u s i t e m t o k e e p i t f r o m g e t t i n g u p s e t .
CustomCommandWidgetController { id: controller ; factPanel: bogusFactPanel }
Item {
anchors.top: parent . top
anchors.bottom: buttonRow . top
width: parent . width
QGCLabel {
id: errorOutput
anchors.fill: parent
wrapMode: Text . WordWrap
visible: false
}
QGCLabel {
id: warning
anchors.fill: parent
wrapMode: Text . WordWrap
visible: ! controller . customQmlFile
text: "You can create your own commands and parameter editing user interface in this widget. " +
"You do this by providing your own Qml file. " +
"This support is a work in progress and the details may change somewhat in the future. " +
"By using this feature you are connecting directly to the internals of QGroundControl. " +
"Doing so incorrectly may cause instability both in QGroundControl and/or your vehicle. " +
"So make sure to test your changes thoroughly before using them in flight.\n\n" +
"Click 'Select Qml file' to provide your custom qml file.\n" +
"Click 'Clear Qml file' to reset to none.\n" +
"Example usage: http://www.qgroundcontrol.org/custom_command_qml_widgets"
}
Loader {
id: loader
anchors.fill: parent
source: controller . customQmlFile
visible: controller . customQmlFile
onStatusChanged: {
if ( loader . status == Loader . Error ) {
if ( sourceComponent . status == Component . Error ) {
errorOutput . text = sourceComponent . errorString ( )
errorOutput . visible = true
loader . visible = false
}
import QtQuick 2.5
import QtQuick . Controls 1.2
import QtQuick . Controls . Styles 1.2
import QtQuick . Dialogs 1.2
import QGroundControl . Palette 1.0
import QGroundControl . Controls 1.0
import QGroundControl . Controllers 1.0
import QGroundControl . ScreenTools 1.0
QGCView {
viewPanel: panel
property real _margins : ScreenTools . defaultFontPixelHeight
property string _emptyText : "<p>" +
"You can create your own commands and parameter editing user interface in this widget. " +
"You do this by providing your own Qml file. " +
"This support is a work in progress and the details may change somewhat in the future. " +
"By using this feature you are connecting directly to the internals of QGroundControl. " +
"Doing so incorrectly may cause instability both in QGroundControl and/or your vehicle. " +
"So make sure to test your changes thoroughly before using them in flight.</p>" +
"<p>Click 'Load Custom Qml file' to provide your custom qml file.</p>" +
"<p>Click 'Reset' to reset to none.</p>" +
"<p>Example usage: http://www.qgroundcontrol.org/custom_command_qml_widgets</p>"
QGCPalette { id: qgcPal ; colorGroupEnabled: enabled }
CustomCommandWidgetController { id: controller ; factPanel: panel }
QGCViewPanel {
id: panel
anchors.fill: parent
Rectangle {
anchors.fill: parent
color: qgcPal . window
QGCLabel {
id: textOutput
anchors.margins: _margins
anchors.left: parent . left
anchors.right: parent . right
anchors.top: parent . top
anchors.bottom: buttonRow . top
wrapMode: Text . WordWrap
textFormat: Text . RichText
text: _emptyText
visible: ! loader . visible
}
Loader {
id: loader
anchors.margins: _margins
anchors.left: parent . left
anchors.right: parent . right
anchors.top: parent . top
anchors.bottom: buttonRow . top
source: controller . customQmlFile
visible: false
onStatusChanged: {
loader . visible = true
if ( loader . status == Loader . Error ) {
if ( sourceComponent . status == Component . Error ) {
textOutput . text = sourceComponent . errorString ( )
loader . visible = false
}
}
}
}
Row {
id: buttonRow
spacing: 10
anchors.bottom: parent . bottom
id: buttonRow
spacing: ScreenTools . defaultFontPixelWidth
anchors.margins: _margins
anchors.bottom: parent . bottom
anchors.horizontalCenter: parent . horizontalCenter
QGCButton {
text: "Select Qml file..."
text: "Load Custom Qml file..."
width: ScreenTools . defaultFontPixelWidth * 22
onClicked: controller . selectQmlFile ( )
}
QGCButton {
text: "Clear Qml file "
text: "Reset "
width: ScreenTools . defaultFontPixelWidth * 22
onClicked: {
errorOutput . visible = false
controller . clearQmlFile ( )
loader . visible = false
textOutput . text = _emptyText
}
}
}