pragma ComponentBehavior: Bound import QtQuick import QtQuick.Controls import QtQuick.Layouts import Xpl2 ApplicationWindow { id: root height: 600 title: "XPL2 Demo" visible: true width: 800 Connections { function onConnectedChanged() { debugConsole.appendLog(Xpl2Client.connected ? "Connected" : "Disconnected"); } function onErrorOccurred(error: string) { debugConsole.appendLog("ERROR: " + error); } function onJcVersionReceived() { debugConsole.appendLog( "JC Version: controller=%1 fw=%2 hw=%3 phCount=%4".arg( Xpl2Client.controllerId).arg( Xpl2Client.firmwareVersion).arg( Xpl2Client.hardwareVersion).arg( Xpl2Client.printheadCount)); } function onStatusMessage(message: string) { debugConsole.appendLog(message); } function onWireDebugMessage(message: string) { debugConsole.appendLog("WIRE: " + message); } target: Xpl2Client } ColumnLayout { anchors.fill: parent spacing: 0 ColumnLayout { Layout.fillHeight: true Layout.fillWidth: true Layout.margins: 16 spacing: 12 // --- Connection --- GroupBox { Layout.fillWidth: true title: "Connection" RowLayout { anchors.fill: parent Label { text: "Host:" } TextField { id: hostField Layout.fillWidth: true text: Xpl2Client.host onEditingFinished: Xpl2Client.host = text } Button { text: Xpl2Client.connected ? "Disconnect" : "Connect" onClicked: { if (Xpl2Client.connected) Xpl2Client.disconnectFromServer(); else Xpl2Client.connectToServer(); } } CheckBox { checked: Xpl2Client.wireDebug text: "Wire debug" onToggled: Xpl2Client.wireDebug = checked } } } // --- Protocol Commands --- GroupBox { Layout.fillWidth: true enabled: Xpl2Client.connected title: "Protocol Commands" ColumnLayout { anchors.fill: parent RowLayout { Button { text: "Get JC Version" onClicked: Xpl2Client.getJcVersion() } Label { text: Xpl2Client.controllerId > 0 ? "Controller: %1 | FW: %2 | HW: %3 | PHs: %4".arg( Xpl2Client.controllerId).arg( Xpl2Client.firmwareVersion).arg( Xpl2Client.hardwareVersion).arg( Xpl2Client.printheadCount) : "No version data" } } } } // --- Spacer --- Item { Layout.fillHeight: true } } // --- Debug Console --- Rectangle { id: debugConsole function appendLog(msg: string): void { let ts = new Date().toLocaleTimeString(Qt.locale(), "HH:mm:ss"); debugLog.text += "[" + ts + "] " + msg + "\n"; debugLog.cursorPosition = debugLog.text.length; } Layout.fillWidth: true Layout.preferredHeight: 160 border.color: "#444" color: "#1e1e1e" radius: 4 ScrollView { anchors.fill: parent anchors.margins: 4 TextArea { id: debugLog background: null color: "#cccccc" font.family: "monospace" font.pointSize: 9 readOnly: true wrapMode: TextEdit.Wrap } } } } }