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();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|