diff options
| author | luigi1111 <luigi1111w@gmail.com> | 2018-04-27 15:35:34 -0500 |
|---|---|---|
| committer | luigi1111 <luigi1111w@gmail.com> | 2018-04-27 15:35:34 -0500 |
| commit | 679d18166fd4eadb447bf5c193932733bfcf0556 (patch) | |
| tree | 6075a29298c5ae9ae459ff0f7041b344ccbd7a21 /components/DaemonConsole.qml | |
| parent | 1deef732374c0734d91e36e98d7ad812b431dc3c (diff) | |
| parent | 75ccc7a31b0ab3b969da9a599e8244a8119aa74d (diff) | |
| download | monzero-gui-679d18166fd4eadb447bf5c193932733bfcf0556.tar.gz monzero-gui-679d18166fd4eadb447bf5c193932733bfcf0556.tar.xz monzero-gui-679d18166fd4eadb447bf5c193932733bfcf0556.zip | |
Merge pull request #1341
7d8d477 Redesigned the daemon console pop-up
acefb96 Added 'Windows.js' for dialogs/windows
47f9a17 Modify password dialog and move customdecorations function out of main.qml
4d56ed9 Make the titlebar more modular
7fe9d71 Added daemonConsole component to main.qml
75ccc7a Added Utils.js, for miscellaneous Javascript functions
Diffstat (limited to 'components/DaemonConsole.qml')
| -rw-r--r-- | components/DaemonConsole.qml | 186 |
1 files changed, 127 insertions, 59 deletions
diff --git a/components/DaemonConsole.qml b/components/DaemonConsole.qml index 2643a339..225b2dba 100644 --- a/components/DaemonConsole.qml +++ b/components/DaemonConsole.qml @@ -27,22 +27,23 @@ // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import QtQuick 2.0 -import QtQuick.Controls 1.4 +import QtQuick.Controls 2.0 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.1 import QtQuick.Controls.Styles 1.4 -import QtQuick.Window 2.0 +import QtQuick.Window 2.2 import "../components" as MoneroComponents +import "../js/Windows.js" as Windows +import "../js/Utils.js" as Utils Window { id: root modality: Qt.ApplicationModal - flags: Qt.Window | Qt.FramelessWindowHint - property alias title: dialogTitle.text + color: "black" + flags: Windows.flags property alias text: dialogContent.text property alias content: root.text - property alias okVisible: okButton.visible property alias textArea: dialogContent property var icon @@ -50,15 +51,25 @@ Window { signal accepted() signal rejected() + onClosing: { + inactiveOverlay.visible = false; + } function open() { - show() + inactiveOverlay.visible = true; + show(); } // TODO: implement without hardcoding sizes width: 480 height: 280 + // background gradient + Image { + anchors.fill: parent + source: "../images/middlePanelBg.jpg" + } + // Make window draggable MouseArea { anchors.fill: parent @@ -70,79 +81,136 @@ Window { ColumnLayout { id: mainLayout - spacing: 10 - anchors { fill: parent; margins: 35 } + + anchors.fill: parent + anchors.topMargin: 20 * scaleRatio + anchors.margins: 35 * scaleRatio + spacing: 20 * scaleRatio RowLayout { - id: column - //anchors {fill: parent; margins: 16 } - Layout.alignment: Qt.AlignHCenter + id: content + Layout.fillWidth: true + Layout.fillHeight: true - Label { - id: dialogTitle - horizontalAlignment: Text.AlignHCenter - font.pixelSize: 32 - font.family: "Arial" - color: "#555555" - } + Flickable { + id: flickable + anchors.fill: parent - } + TextArea.flickable: TextArea { + id : dialogContent + textFormat: TextEdit.RichText + selectByMouse: true + selectByKeyboard: true + anchors.fill: parent + font.family: "Ariel" + font.pixelSize: 14 * scaleRatio + color: MoneroComponents.Style.defaultFontColor + selectionColor: MoneroComponents.Style.dimmedFontColor + wrapMode: TextEdit.Wrap + readOnly: true + background: Rectangle { + color: "transparent" + anchors.fill: parent + border.color: Qt.rgba(255, 255, 255, 0.25); + border.width: 1 + radius: 4 + } + function logCommand(msg){ + msg = log_color(msg, "lime"); + textArea.append(msg); + } + function logMessage(msg){ + msg = msg.trim(); + var color = "white"; + if(msg.toLowerCase().indexOf('error') >= 0){ + color = "red"; + } else if (msg.toLowerCase().indexOf('warning') >= 0){ + color = "yellow"; + } - RowLayout { - TextArea { - id : dialogContent - Layout.fillWidth: true - Layout.fillHeight: true - font.family: "Arial" - textFormat: TextEdit.AutoText - readOnly: true - font.pixelSize: 12 - } - } + // format multi-lines + if(msg.split("\n").length >= 2){ + msg = msg.split("\n").join('<br>'); + } - // Ok/Cancel buttons - RowLayout { - id: buttons - spacing: 60 - Layout.alignment: Qt.AlignHCenter + log(msg, color); + } + function log_color(msg, color){ + return "<span style='color: " + color + ";' >" + msg + "</span>"; + } + function log(msg, color){ + var timestamp = Utils.formatDate(new Date(), { + weekday: undefined, + month: "numeric", + timeZoneName: undefined + }); + + var _timestamp = log_color("[" + timestamp + "]", "#FFFFFF"); + var _msg = log_color(msg, color); + textArea.append(_timestamp + " " + _msg); - MoneroComponents.StandardButton { - id: okButton - width: 120 - fontSize: 14 - text: qsTr("Close") + translationManager.emptyString - onClicked: { - root.close() - root.accepted() + // scroll to bottom + if(flickable.contentHeight > content.height){ + flickable.contentY = flickable.contentHeight + 20; + } + } + } + ScrollBar.vertical: ScrollBar { + // TODO: scrollbar always visible is buggy. + // QT 5.9 introduces `policy: ScrollBar.AlwaysOn` + contentItem.opacity: 1 + anchors.top: flickable.top + anchors.left: flickable.right + anchors.leftMargin: 10 * scaleRatio + anchors.bottom: flickable.bottom } } + } + + RowLayout { + Layout.fillWidth: true MoneroComponents.LineEdit { id: sendCommandText - width: 300 + Layout.fillWidth: true placeholderText: qsTr("command + enter (e.g help)") + translationManager.emptyString onAccepted: { - if(text.length > 0) - daemonManager.sendCommand(text,currentWallet.nettype); + if(text.length > 0) { + textArea.logCommand(">>> " + text) + daemonManager.sendCommand(text, currentWallet.nettype); + } text = "" } } - - // Status button -// MoneroComponents.StandardButton { -// id: sendCommandButton -// enabled: sendCommandText.text.length > 0 -// fontSize: 14 -// text: qsTr("Send command") -// onClicked: { -// daemonManager.sendCommand(sendCommandText.text,currentWallet.testnet); -// } -// } } } -} - + // window borders + Rectangle { + anchors.bottom: parent.bottom + anchors.top: parent.top + anchors.left: parent.left + width:1 + color: "#2F2F2F" + z: 2 + } + Rectangle { + anchors.bottom: parent.bottom + anchors.top: parent.top + anchors.right: parent.right + width:1 + color: "#2F2F2F" + z: 2 + } + Rectangle { + anchors.bottom: parent.bottom + anchors.right: parent.right + anchors.left: parent.left + height:1 + color: "#2F2F2F" + z: 2 + } +}
\ No newline at end of file |
