154 lines
4.0 KiB
QML
154 lines
4.0 KiB
QML
import QtQuick 2.0
|
|
import FlightGear 1.0 as FG
|
|
|
|
Item {
|
|
id: root
|
|
property bool showDecorations: true
|
|
property alias canvas: paintedDisplay.canvas
|
|
property bool showUi: true
|
|
property bool showMenu: false
|
|
|
|
|
|
Component.onCompleted: {
|
|
if (canvas) {
|
|
width = canvas.size.width
|
|
height = canvas.size.height
|
|
x = canvas.origin.x
|
|
y = canvas.origin.y
|
|
}
|
|
}
|
|
|
|
function saveGeometry()
|
|
{
|
|
canvas.origin = Qt.point(x, y )
|
|
canvas.size = Qt.size(root.width, root.height);
|
|
}
|
|
|
|
Item {
|
|
id: clipShell
|
|
anchors.fill: parent
|
|
clip: true
|
|
|
|
// FG.CanvasDisplay {
|
|
// id: canvasDisplay
|
|
// anchors.fill: parent
|
|
|
|
// onCanvasChanged: {
|
|
// if (canvas) {
|
|
// root.width = canvas.size.width
|
|
// root.height = canvas.size.height
|
|
// root.x = canvas.origin.x
|
|
// root.y = canvas.origin.y
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
FG.PaintedCanvasDisplay {
|
|
id: paintedDisplay
|
|
anchors.fill: parent
|
|
// canvas: canvasDisplay.canvas
|
|
|
|
onCanvasChanged: {
|
|
if (canvas) {
|
|
root.width = canvas.size.width
|
|
root.height = canvas.size.height
|
|
root.x = canvas.origin.x
|
|
root.y = canvas.origin.y
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
border.width: 1
|
|
border.color: "orange"
|
|
color: "transparent"
|
|
anchors.centerIn: parent
|
|
width: parent.width
|
|
height: parent.height
|
|
visible: showUi
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
|
|
drag.target: root
|
|
|
|
onReleased: {
|
|
root.saveGeometry();
|
|
}
|
|
|
|
onPressAndHold: {
|
|
root.showMenu = true;
|
|
}
|
|
}
|
|
|
|
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.x,
|
|
// rootPos.y - root.y);
|
|
|
|
root.width = rootPos.x;
|
|
root.height = rootPos.y;
|
|
}
|
|
|
|
onReleased: {
|
|
saveGeometry();
|
|
}
|
|
}
|
|
}
|
|
|
|
Text {
|
|
color: "orange"
|
|
anchors.centerIn: parent
|
|
text: "Canvas"
|
|
visible: !root.showMenu
|
|
}
|
|
|
|
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.Closed: return "Closed";
|
|
case FG.CanvasConnection.Reconnecting: return "Re-connecting";
|
|
case FG.CanvasConnection.Error: return "Error";
|
|
case FG.CanvasConnection.Snapshot: return "Snapshot";
|
|
}
|
|
}
|
|
|
|
text: "WS: " + canvas.webSocketUrl + "\n"
|
|
+ "Root:" + canvas.rootPath + "\n"
|
|
+ "Status:" + statusAsString(canvas.status);
|
|
color: "white"
|
|
|
|
}
|
|
|
|
CanvasMenu {
|
|
anchors.fill:parent
|
|
visible: root.showMenu
|
|
onMenuBack: root.showMenu = false
|
|
onCloseCanvas: _application.closeCanvas(canvas);
|
|
onReconnectCanvas: canvas.reconnect();
|
|
}
|
|
|
|
}
|
|
}
|