117404979b
This means everything is displayed via OpenGL, and there’s a basic menu system usable.
116 lines
3.1 KiB
QML
116 lines
3.1 KiB
QML
import QtQuick 2.0
|
|
import FlightGear 1.0 as FG
|
|
|
|
Item {
|
|
id: root
|
|
property bool showDecorations: true
|
|
property alias canvas: canvasDisplay.canvas
|
|
|
|
readonly property var centerPoint: Qt.point(width / 2, height / 2)
|
|
|
|
Component.onCompleted: {
|
|
width = canvas.size.width
|
|
height = canvas.size.height
|
|
x = canvas.center.x - (width / 2)
|
|
y = canvas.center.y - (height / 2)
|
|
}
|
|
|
|
function saveGeometry()
|
|
{
|
|
canvas.center = Qt.point(x + (width / 2), y + (height / 2))
|
|
canvas.size = Qt.size(root.width / 2, root.height / 2);
|
|
}
|
|
|
|
FG.CanvasDisplay {
|
|
id: canvasDisplay
|
|
anchors.fill: parent
|
|
|
|
onCanvasChanged: {
|
|
root.width = canvas.size.width
|
|
root.height = canvas.size.height
|
|
|
|
root.x = canvas.center.x - (root.width / 2)
|
|
root.y = canvas.center.y - (root.height / 2)
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
border.width: 1
|
|
border.color: "orange"
|
|
color: "transparent"
|
|
anchors.centerIn: parent
|
|
width: parent.width + 2
|
|
height: parent.height + 2
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
|
|
drag.target: root
|
|
|
|
onReleased: {
|
|
root.saveGeometry();
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
width: 32
|
|
height: 32
|
|
color: "orange"
|
|
opacity: 0.5
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
|
|
// resizing
|
|
|
|
onPositionChanged: {
|
|
var rootPos = mapToItem(root, mouse.x, mouse.y);
|
|
var rootDiff = Qt.point(rootPos.x - root.centerPoint.x,
|
|
rootPos.y - root.centerPoint.y);
|
|
|
|
root.width = rootDiff.x * 2;
|
|
root.height = rootDiff.y * 2;
|
|
root.x = canvas.center.x - (root.width / 2)
|
|
root.y = canvas.center.y - (root.height / 2)
|
|
}
|
|
|
|
onReleased: {
|
|
saveGeometry();
|
|
}
|
|
}
|
|
}
|
|
|
|
Text {
|
|
color: "orange"
|
|
anchors.centerIn: parent
|
|
text: "Canvas"
|
|
}
|
|
|
|
Text {
|
|
anchors.fill: parent
|
|
verticalAlignment: Text.AlignBottom
|
|
|
|
function statusAsString(status)
|
|
{
|
|
switch (status) {
|
|
case FG.CanvasConnection.NotConnected: return "Not connected";
|
|
case FG.CanvasConnection.Connecting: return "Connecting";
|
|
case FG.CanvasConnection.Connected: return "Connected";
|
|
case FG.CanvasConnection.Reconnecting: return "Re-connecting";
|
|
case FG.CanvasConnection.Error: return "Error";
|
|
}
|
|
}
|
|
|
|
text: "WS: " + canvas.webSocketUrl + "\n"
|
|
+ "Root:" + canvas.rootPath + "\n"
|
|
+ "Status:" + statusAsString(canvas.status);
|
|
color: "white"
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|