11 changed files with 600 additions and 124 deletions
@ -0,0 +1,162 @@ |
|||||||
|
/**************************************************************************** |
||||||
|
* |
||||||
|
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org> |
||||||
|
* |
||||||
|
* QGroundControl is licensed according to the terms in the file |
||||||
|
* COPYING.md in the root of the source code directory. |
||||||
|
* |
||||||
|
****************************************************************************/ |
||||||
|
|
||||||
|
import QtQuick 2.11 |
||||||
|
import QtQuick.Controls 2.4 |
||||||
|
import QtQuick.Layouts 1.11 |
||||||
|
import QtQuick.Dialogs 1.3 |
||||||
|
|
||||||
|
import QGroundControl 1.0 |
||||||
|
import QGroundControl.Palette 1.0 |
||||||
|
import QGroundControl.Controls 1.0 |
||||||
|
import QGroundControl.Controllers 1.0 |
||||||
|
import QGroundControl.ScreenTools 1.0 |
||||||
|
|
||||||
|
Item { |
||||||
|
anchors.fill: parent |
||||||
|
anchors.margins: ScreenTools.defaultFontPixelWidth |
||||||
|
|
||||||
|
readonly property real _butttonWidth: ScreenTools.defaultFontPixelWidth * 30 |
||||||
|
|
||||||
|
property int curVehicleIndex: 0 |
||||||
|
property var curVehicle: controller.vehicles.count > 0 ? controller.vehicles.get(curVehicleIndex) : null |
||||||
|
property int curMessageIndex: 0 |
||||||
|
property var curMessage: curVehicle && curVehicle.messages.count ? curVehicle.messages.get(curMessageIndex) : null |
||||||
|
|
||||||
|
MAVLinkInspectorController { |
||||||
|
id: controller |
||||||
|
} |
||||||
|
|
||||||
|
DeadMouseArea { |
||||||
|
anchors.fill: parent |
||||||
|
} |
||||||
|
|
||||||
|
//-- Header |
||||||
|
ColumnLayout { |
||||||
|
id: header |
||||||
|
width: parent.width |
||||||
|
spacing: ScreenTools.defaultFontPixelHeight |
||||||
|
QGCLabel { |
||||||
|
text: qsTr("Analyze real time MAVLink messages.") |
||||||
|
} |
||||||
|
RowLayout { |
||||||
|
Layout.fillWidth: true |
||||||
|
spacing: ScreenTools.defaultFontPixelWidth |
||||||
|
QGCLabel { |
||||||
|
text: qsTr("Vehicle:") |
||||||
|
} |
||||||
|
QGCComboBox { |
||||||
|
id: vehicleSelector |
||||||
|
model: controller.vehicleNames |
||||||
|
enabled: controller.vehicles.count > 0 |
||||||
|
onActivated: curVehicleIndex = index |
||||||
|
Layout.minimumWidth: ScreenTools.defaultFontPixelWidth * 16 |
||||||
|
} |
||||||
|
} |
||||||
|
Item { |
||||||
|
height: ScreenTools.defaultFontPixelHeight |
||||||
|
width: 1 |
||||||
|
} |
||||||
|
} |
||||||
|
//-- Messages |
||||||
|
QGCFlickable { |
||||||
|
id: buttonGrid |
||||||
|
anchors.top: header.bottom |
||||||
|
anchors.bottom: parent.bottom |
||||||
|
anchors.left: parent.left |
||||||
|
width: ScreenTools.defaultFontPixelWidth * 32 |
||||||
|
contentWidth: buttonCol.width |
||||||
|
contentHeight: buttonCol.height |
||||||
|
ColumnLayout { |
||||||
|
id: buttonCol |
||||||
|
spacing: ScreenTools.defaultFontPixelHeight * 0.25 |
||||||
|
Repeater { |
||||||
|
model: curVehicle ? curVehicle.messages : [] |
||||||
|
delegate: QGCButton { |
||||||
|
text: object.name |
||||||
|
onClicked: curMessageIndex = index |
||||||
|
Layout.minimumWidth: _butttonWidth |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
//-- Message Data |
||||||
|
QGCFlickable { |
||||||
|
id: messageGrid |
||||||
|
anchors.top: header.bottom |
||||||
|
anchors.bottom: parent.bottom |
||||||
|
anchors.left: buttonGrid.right |
||||||
|
anchors.leftMargin: ScreenTools.defaultFontPixelWidth * 2 |
||||||
|
anchors.right: parent.right |
||||||
|
contentWidth: messageCol.width |
||||||
|
contentHeight: messageCol.height |
||||||
|
Column { |
||||||
|
id: messageCol |
||||||
|
spacing: ScreenTools.defaultFontPixelHeight |
||||||
|
GridLayout { |
||||||
|
columns: 2 |
||||||
|
columnSpacing: ScreenTools.defaultFontPixelWidth |
||||||
|
rowSpacing: ScreenTools.defaultFontPixelHeight * 0.25 |
||||||
|
QGCLabel { |
||||||
|
text: qsTr("Message:") |
||||||
|
Layout.minimumWidth: ScreenTools.defaultFontPixelWidth * 20 |
||||||
|
} |
||||||
|
QGCLabel { |
||||||
|
color: qgcPal.buttonHighlight |
||||||
|
text: curMessage ? curMessage.name : "" |
||||||
|
} |
||||||
|
QGCLabel { |
||||||
|
text: qsTr("Count:") |
||||||
|
} |
||||||
|
QGCLabel { |
||||||
|
text: curMessage ? curMessage.count : "" |
||||||
|
} |
||||||
|
QGCLabel { |
||||||
|
text: qsTr("Frequency:") |
||||||
|
} |
||||||
|
QGCLabel { |
||||||
|
text: curMessage ? curMessage.messageHz + 'Hz' : "" |
||||||
|
} |
||||||
|
} |
||||||
|
GridLayout { |
||||||
|
columns: 3 |
||||||
|
columnSpacing: ScreenTools.defaultFontPixelWidth |
||||||
|
rowSpacing: ScreenTools.defaultFontPixelHeight * 0.25 |
||||||
|
Repeater { |
||||||
|
model: curMessage ? curMessage.fields : [] |
||||||
|
delegate: QGCLabel { |
||||||
|
Layout.row: index |
||||||
|
Layout.column: 0 |
||||||
|
Layout.minimumWidth: ScreenTools.defaultFontPixelWidth * 20 |
||||||
|
text: object.name |
||||||
|
} |
||||||
|
} |
||||||
|
Repeater { |
||||||
|
model: curMessage ? curMessage.fields : [] |
||||||
|
delegate: QGCLabel { |
||||||
|
Layout.row: index |
||||||
|
Layout.column: 1 |
||||||
|
Layout.minimumWidth: ScreenTools.defaultFontPixelWidth * 30 |
||||||
|
Layout.maximumWidth: ScreenTools.defaultFontPixelWidth * 30 |
||||||
|
wrapMode: Text.WordWrap |
||||||
|
text: object.value |
||||||
|
} |
||||||
|
} |
||||||
|
Repeater { |
||||||
|
model: curMessage ? curMessage.fields : [] |
||||||
|
delegate: QGCLabel { |
||||||
|
Layout.row: index |
||||||
|
Layout.column: 2 |
||||||
|
text: object.type |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue