From 5768b18a3b1cfcb1229e5f0236d75da4e9b65dcd Mon Sep 17 00:00:00 2001 From: Maran Date: Fri, 11 Apr 2014 15:18:38 -0400 Subject: [PATCH 1/4] Refactored simple send to use states --- ethereal/assets/qml/wallet.qml | 385 ++++++++++++++++++--------------- 1 file changed, 208 insertions(+), 177 deletions(-) diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml index 2c8d1f241..1a14697e6 100644 --- a/ethereal/assets/qml/wallet.qml +++ b/ethereal/assets/qml/wallet.qml @@ -30,27 +30,27 @@ ApplicationWindow { MenuItem { text: "Test test" shortcut: "Ctrl+t" - onTriggered: { - var win - function finishedLoading(){ - console.log("Trigged") - win = wizard.createObject(root) - } - console.log("Loading wizard") + onTriggered: { + var win + function finishedLoading(){ + console.log("Trigged") + win = wizard.createObject(root) + } + console.log("Loading wizard") - var wizard = Qt.createComponent("first_run.qml") - if(wizard.status== Component.Ready){ - console.log("Component is ready") - finishedLoading() - }else if( wizard.status == Component.Error){ - console.log("Error loading component:", wizard.errorString()) - } - else{ - wizard.statusChanged.connect(finishedLoading) - console.log("Component is NOT ready") - win = wizard.createObject(root) - } - } + var wizard = Qt.createComponent("first_run.qml") + if(wizard.status== Component.Ready){ + console.log("Component is ready") + finishedLoading() + }else if( wizard.status == Component.Error){ + console.log("Error loading component:", wizard.errorString()) + } + else{ + wizard.statusChanged.connect(finishedLoading) + console.log("Component is NOT ready") + win = wizard.createObject(root) + } + } } } @@ -187,52 +187,89 @@ ApplicationWindow { anchors.bottomMargin: 5 id: newTransactionTab Component.onCompleted:{ - addTab("Send ether", newTransaction) + addTab("Simple send", newTransaction) addTab("Create contract", newContract) } } Component { id: newTransaction Column { + id: simpleSendColumn + states: [ + State{ + name: "ERROR" + }, + State { + name: "DONE" + PropertyChanges { target: txSimpleValue; visible:false} + PropertyChanges { target: txSimpleRecipient; visible:false} + PropertyChanges { target:newSimpleTxButton; visible:false} + + PropertyChanges { target: txSimpleResult; visible:true} + PropertyChanges { target: txSimpleOutput; visible:true} + PropertyChanges { target:newSimpleTxButton; visible:true} + }, + State { + name: "SETUP" + PropertyChanges { target: txSimpleValue; visible:true; text: ""} + PropertyChanges { target: txSimpleRecipient; visible:true; text: ""} + PropertyChanges { target: txSimpleButton; visible:true} + PropertyChanges { target:newSimpleTxButton; visible:false} + } + ] spacing: 5 anchors.leftMargin: 5 anchors.topMargin: 5 anchors.top: parent.top anchors.left: parent.left + + function checkFormState(){ + if(txSimpleRecipient.text.length == 40 && txSimpleValue.text.length > 0) { + txSimpleButton.state = "READY" + }else{ + txSimpleButton.state = "NOTREADY" + } + } + TextField { id: txSimpleRecipient placeholderText: "Recipient address" Layout.fillWidth: true - validator: RegExpValidator { regExp: /[a-f0-9]{40}/ } + validator: RegExpValidator { regExp: /[a-f0-9]{40}/ } width: 530 + onTextChanged: { checkFormState() } } TextField { id: txSimpleValue placeholderText: "Amount" anchors.rightMargin: 5 validator: IntValidator { } + onTextChanged: { checkFormState() } } Button { id: txSimpleButton + states: [ + State { + name: "READY" + PropertyChanges { target: txSimpleButton; enabled: true} + }, + State { + name: "NOTREADY" + PropertyChanges { target: txSimpleButton; enabled: false} + } + ] text: "Send" + enabled: false onClicked: { //this.enabled = false var res = eth.createTx(txSimpleRecipient.text, txSimpleValue.text,"","","") if(res[1]) { txSimpleResult.text = "There has been an error broadcasting your transaction:" + res[1].error() - txSimpleResult.visible = true } else { txSimpleResult.text = "Your transaction has been broadcasted over the network.\nYour transaction id is:" txSimpleOutput.text = res[0] - txSimpleOutput.visible = true - txSimpleResult.visible = true - txSimpleValue.visible = false - txSimpleRecipient.visible = false - txSimpleValue.text = "" - txSimpleRecipient.text = "" - txSimpleRecipient.focus = true - newSimpleTxButton.visible = true - this.visible = false + this.visible = false + simpleSendColumn.state = "DONE" } } } @@ -247,18 +284,12 @@ ApplicationWindow { width: 530 } Button { - id: newSimpleTxButton + id: newSimpleTxButton visible: false text: "Create an other transaction" onClicked: { this.visible = false - txSimpleResult.text = "" - txSimpleOutput.text = "" - txSimpleResult.visible = false - txSimpleOutput.visible = false - txSimpleValue.visible = true - txSimpleRecipient.visible = true - txSimpleButton.visible = true + simpleSendColumn.state = "SETUP" } } } @@ -266,49 +297,49 @@ ApplicationWindow { Component { id: newContract Column { - id: mainContractColumn - function contractFormReady(){ - if(codeView.text.length > 0 && txValue.text.length > 0 && txGas.text.length > 0 && txGasPrice.length > 0) { - txButton.state = "READY" - }else{ - txButton.state = "NOTREADY" - } - } - states: [ - State{ - name: "ERROR" - PropertyChanges { target: txResult; visible:true} - PropertyChanges { target: codeView; visible:true} - }, - State { - name: "DONE" - PropertyChanges { target: txValue; visible:false} - PropertyChanges { target: txGas; visible:false} - PropertyChanges { target: txGasPrice; visible:false} - PropertyChanges { target: codeView; visible:false} - PropertyChanges { target: txButton; visible:false} - PropertyChanges { target: txDataLabel; visible:false} + id: mainContractColumn + function contractFormReady(){ + if(codeView.text.length > 0 && txValue.text.length > 0 && txGas.text.length > 0 && txGasPrice.length > 0) { + txButton.state = "READY" + }else{ + txButton.state = "NOTREADY" + } + } + states: [ + State{ + name: "ERROR" + PropertyChanges { target: txResult; visible:true} + PropertyChanges { target: codeView; visible:true} + }, + State { + name: "DONE" + PropertyChanges { target: txValue; visible:false} + PropertyChanges { target: txGas; visible:false} + PropertyChanges { target: txGasPrice; visible:false} + PropertyChanges { target: codeView; visible:false} + PropertyChanges { target: txButton; visible:false} + PropertyChanges { target: txDataLabel; visible:false} - PropertyChanges { target: txResult; visible:true} - PropertyChanges { target: txOutput; visible:true} - PropertyChanges { target: newTxButton; visible:true} - }, - State { - name: "SETUP" - PropertyChanges { target: txValue; visible:true; text: ""} - PropertyChanges { target: txGas; visible:true; text: ""} - PropertyChanges { target: txGasPrice; visible:true; text: ""} - PropertyChanges { target: codeView; visible:true; text: ""} - PropertyChanges { target: txButton; visible:true} - PropertyChanges { target: txDataLabel; visible:true} + PropertyChanges { target: txResult; visible:true} + PropertyChanges { target: txOutput; visible:true} + PropertyChanges { target: newTxButton; visible:true} + }, + State { + name: "SETUP" + PropertyChanges { target: txValue; visible:true; text: ""} + PropertyChanges { target: txGas; visible:true; text: ""} + PropertyChanges { target: txGasPrice; visible:true; text: ""} + PropertyChanges { target: codeView; visible:true; text: ""} + PropertyChanges { target: txButton; visible:true} + PropertyChanges { target: txDataLabel; visible:true} - PropertyChanges { target: txResult; visible:false} - PropertyChanges { target: txOutput; visible:false} - PropertyChanges { target: newTxButton; visible:false} - } - ] + PropertyChanges { target: txResult; visible:false} + PropertyChanges { target: txOutput; visible:false} + PropertyChanges { target: newTxButton; visible:false} + } + ] width: 400 - spacing: 5 + spacing: 5 anchors.left: parent.left anchors.top: parent.top anchors.leftMargin: 5 @@ -319,31 +350,31 @@ ApplicationWindow { width: 200 placeholderText: "Amount" validator: IntValidator { } - onTextChanged: { - contractFormReady() - } + onTextChanged: { + contractFormReady() + } } TextField { id: txGas width: 200 validator: IntValidator { } placeholderText: "Gas" - onTextChanged: { - contractFormReady() - } + onTextChanged: { + contractFormReady() + } } TextField { id: txGasPrice width: 200 placeholderText: "Gas price" validator: IntValidator { } - onTextChanged: { - contractFormReady() - } + onTextChanged: { + contractFormReady() + } } Label { - id: txDataLabel + id: txDataLabel text: "Transaction data" } @@ -352,58 +383,58 @@ ApplicationWindow { anchors.topMargin: 5 Layout.fillWidth: true width: parent.width /2 - onTextChanged: { - contractFormReady() - } + onTextChanged: { + contractFormReady() + } } Button { id: txButton - states: [ - State { - name: "READY" - PropertyChanges { target: txButton; enabled: true} - }, - State { - name: "NOTREADY" - PropertyChanges { target: txButton; enabled:false} - } - ] + states: [ + State { + name: "READY" + PropertyChanges { target: txButton; enabled: true} + }, + State { + name: "NOTREADY" + PropertyChanges { target: txButton; enabled:false} + } + ] text: "Send" - enabled: false + enabled: false onClicked: { //this.enabled = false var res = eth.createTx("", txValue.text, txGas.text, txGasPrice.text, codeView.text) if(res[1]) { - txResult.text = "Your contract could not be send over the network:\n" - txResult.text += res[1].error() - txResult.text += "" - mainContractColumn.state = "ERROR" + txResult.text = "Your contract could not be send over the network:\n" + txResult.text += res[1].error() + txResult.text += "" + mainContractColumn.state = "ERROR" } else { - txResult.text = "Your contract has been submitted:\n" - txOutput.text = res[0] - mainContractColumn.state = "DONE" + txResult.text = "Your contract has been submitted:\n" + txOutput.text = res[0] + mainContractColumn.state = "DONE" } } } - Text { - id: txResult - visible: false - } + Text { + id: txResult + visible: false + } TextField { id: txOutput visible: false width: 530 } Button { - id: newTxButton + id: newTxButton visible: false text: "Create an other contract" onClicked: { this.visible = false - txResult.text = "" - txOutput.text = "" - mainContractColumn.state = "SETUP" + txResult.text = "" + txOutput.text = "" + mainContractColumn.state = "SETUP" } } @@ -461,26 +492,26 @@ ApplicationWindow { } /* - signal addPlugin(string name) - Component { - id: pluginWindow - Rectangle { - anchors.fill: parent - Label { - id: pluginTitle - anchors.centerIn: parent - text: "Hello world" - } - Component.onCompleted: setView(this) - } - } + signal addPlugin(string name) + Component { + id: pluginWindow + Rectangle { + anchors.fill: parent + Label { + id: pluginTitle + anchors.centerIn: parent + text: "Hello world" + } + Component.onCompleted: setView(this) + } + } - onAddPlugin: { - var pluginWin = pluginWindow.createObject(mainView) - console.log(pluginWin) - pluginWin.pluginTitle.text = "Test" - } - */ + onAddPlugin: { + var pluginWin = pluginWindow.createObject(mainView) + console.log(pluginWin) + pluginWin.pluginTitle.text = "Test" + } + */ } } @@ -665,52 +696,52 @@ ApplicationWindow { function setAsm(asm) { //for(var i = 0; i < asm.length; i++) { - asmModel.append({asm: asm}) - //} - } - function clearAsm() { - asmModel.clear() - } + asmModel.append({asm: asm}) + //} + } + function clearAsm() { + asmModel.clear() + } - function setMem(mem) { - memModel.append({num: mem.num, value: mem.value}) - } - function clearMem(){ - memModel.clear() - } + function setMem(mem) { + memModel.append({num: mem.num, value: mem.value}) + } + function clearMem(){ + memModel.clear() + } - function setStack(stack) { - stackModel.append({value: stack}) - } + function setStack(stack) { + stackModel.append({value: stack}) + } - function clearStack() { - stackModel.clear() - } + function clearStack() { + stackModel.clear() + } - function loadPlugin(name) { - console.log("Loading plugin" + name) - mainView.addPlugin(name) - } + function loadPlugin(name) { + console.log("Loading plugin" + name) + mainView.addPlugin(name) + } - function setWalletValue(value) { - walletValueLabel.text = value - } + function setWalletValue(value) { + walletValueLabel.text = value + } - function addTx(tx) { - txModel.insert(0, {hash: tx.hash, address: tx.address, value: tx.value}) - } + function addTx(tx) { + txModel.insert(0, {hash: tx.hash, address: tx.address, value: tx.value}) + } - function addBlock(block) { - blockModel.insert(0, {number: block.number, hash: block.hash}) - } + function addBlock(block) { + blockModel.insert(0, {number: block.number, hash: block.hash}) + } - function addLog(str) { - if(str.len != 0) { - logModel.append({description: str}) + function addLog(str) { + if(str.len != 0) { + logModel.append({description: str}) + } + } + + function setPeers(text) { + peerLabel.text = text } } - - function setPeers(text) { - peerLabel.text = text - } -} From 11aa7da6c31c18d6f9b9901b1588d7f9adb2d724 Mon Sep 17 00:00:00 2001 From: Maran Date: Fri, 11 Apr 2014 16:44:13 -0400 Subject: [PATCH 2/4] Initial refactor for wallet qml --- .../qml/newTransaction/_new_contract.qml | 162 +++++++++++ .../qml/newTransaction/_simple_send.qml | 111 ++++++++ ethereal/assets/qml/wallet.qml | 265 +----------------- 3 files changed, 280 insertions(+), 258 deletions(-) create mode 100644 ethereal/assets/qml/newTransaction/_new_contract.qml create mode 100644 ethereal/assets/qml/newTransaction/_simple_send.qml diff --git a/ethereal/assets/qml/newTransaction/_new_contract.qml b/ethereal/assets/qml/newTransaction/_new_contract.qml new file mode 100644 index 000000000..8ce81a799 --- /dev/null +++ b/ethereal/assets/qml/newTransaction/_new_contract.qml @@ -0,0 +1,162 @@ +import QtQuick 2.0 +import QtQuick.Controls 1.0; +import QtQuick.Layouts 1.0; +import QtQuick.Dialogs 1.0; +import QtQuick.Window 2.1; +import QtQuick.Controls.Styles 1.1 +import Ethereum 1.0 + +Component { + id: newContract + Column { + id: mainContractColumn + function contractFormReady(){ + if(codeView.text.length > 0 && txValue.text.length > 0 && txGas.text.length > 0 && txGasPrice.length > 0) { + txButton.state = "READY" + }else{ + txButton.state = "NOTREADY" + } + } + states: [ + State{ + name: "ERROR" + PropertyChanges { target: txResult; visible:true} + PropertyChanges { target: codeView; visible:true} + }, + State { + name: "DONE" + PropertyChanges { target: txValue; visible:false} + PropertyChanges { target: txGas; visible:false} + PropertyChanges { target: txGasPrice; visible:false} + PropertyChanges { target: codeView; visible:false} + PropertyChanges { target: txButton; visible:false} + PropertyChanges { target: txDataLabel; visible:false} + + PropertyChanges { target: txResult; visible:true} + PropertyChanges { target: txOutput; visible:true} + PropertyChanges { target: newTxButton; visible:true} + }, + State { + name: "SETUP" + PropertyChanges { target: txValue; visible:true; text: ""} + PropertyChanges { target: txGas; visible:true; text: ""} + PropertyChanges { target: txGasPrice; visible:true; text: ""} + PropertyChanges { target: codeView; visible:true; text: ""} + PropertyChanges { target: txButton; visible:true} + PropertyChanges { target: txDataLabel; visible:true} + + PropertyChanges { target: txResult; visible:false} + PropertyChanges { target: txOutput; visible:false} + PropertyChanges { target: newTxButton; visible:false} + } + ] + width: 400 + spacing: 5 + anchors.left: parent.left + anchors.top: parent.top + anchors.leftMargin: 5 + anchors.topMargin: 5 + + TextField { + id: txValue + width: 200 + placeholderText: "Amount" + validator: IntValidator { } + onTextChanged: { + contractFormReady() + } + } + TextField { + id: txGas + width: 200 + validator: IntValidator { } + placeholderText: "Gas" + onTextChanged: { + contractFormReady() + } + } + TextField { + id: txGasPrice + width: 200 + placeholderText: "Gas price" + validator: IntValidator { } + onTextChanged: { + contractFormReady() + } + } + + Label { + id: txDataLabel + text: "Transaction data" + } + + TextArea { + id: codeView + anchors.topMargin: 5 + Layout.fillWidth: true + width: parent.width /2 + onTextChanged: { + contractFormReady() + } + } + + Button { + id: txButton + states: [ + State { + name: "READY" + PropertyChanges { target: txButton; enabled: true} + }, + State { + name: "NOTREADY" + PropertyChanges { target: txButton; enabled:false} + } + ] + text: "Send" + enabled: false + onClicked: { + //this.enabled = false + var res = eth.createTx("", txValue.text, txGas.text, txGasPrice.text, codeView.text) + if(res[1]) { + txResult.text = "Your contract could not be send over the network:\n" + txResult.text += res[1].error() + txResult.text += "" + mainContractColumn.state = "ERROR" + } else { + txResult.text = "Your contract has been submitted:\n" + txOutput.text = res[0] + mainContractColumn.state = "DONE" + } + } + } + Text { + id: txResult + visible: false + } + TextField { + id: txOutput + visible: false + width: 530 + } + Button { + id: newTxButton + visible: false + text: "Create an other contract" + onClicked: { + this.visible = false + txResult.text = "" + txOutput.text = "" + mainContractColumn.state = "SETUP" + } + } + + Button { + id: debugButton + text: "Debug" + onClicked: { + var res = ui.debugTx("", txValue.text, txGas.text, txGasPrice.text, codeView.text) + debugWindow.visible = true + } + } + } +} diff --git a/ethereal/assets/qml/newTransaction/_simple_send.qml b/ethereal/assets/qml/newTransaction/_simple_send.qml new file mode 100644 index 000000000..981766160 --- /dev/null +++ b/ethereal/assets/qml/newTransaction/_simple_send.qml @@ -0,0 +1,111 @@ +import QtQuick 2.0 +import QtQuick.Controls 1.0; +import QtQuick.Layouts 1.0; +import QtQuick.Dialogs 1.0; +import QtQuick.Window 2.1; +import QtQuick.Controls.Styles 1.1 +import Ethereum 1.0 + +Component { + id: newTransaction + Column { + id: simpleSendColumn + states: [ + State{ + name: "ERROR" + }, + State { + name: "DONE" + PropertyChanges { target: txSimpleValue; visible:false} + PropertyChanges { target: txSimpleRecipient; visible:false} + PropertyChanges { target:newSimpleTxButton; visible:false} + + PropertyChanges { target: txSimpleResult; visible:true} + PropertyChanges { target: txSimpleOutput; visible:true} + PropertyChanges { target:newSimpleTxButton; visible:true} + }, + State { + name: "SETUP" + PropertyChanges { target: txSimpleValue; visible:true; text: ""} + PropertyChanges { target: txSimpleRecipient; visible:true; text: ""} + PropertyChanges { target: txSimpleButton; visible:true} + PropertyChanges { target:newSimpleTxButton; visible:false} + } + ] + spacing: 5 + anchors.leftMargin: 5 + anchors.topMargin: 5 + anchors.top: parent.top + anchors.left: parent.left + + function checkFormState(){ + if(txSimpleRecipient.text.length == 40 && txSimpleValue.text.length > 0) { + txSimpleButton.state = "READY" + }else{ + txSimpleButton.state = "NOTREADY" + } + } + + TextField { + id: txSimpleRecipient + placeholderText: "Recipient address" + Layout.fillWidth: true + validator: RegExpValidator { regExp: /[a-f0-9]{40}/ } + width: 530 + onTextChanged: { checkFormState() } + } + TextField { + id: txSimpleValue + placeholderText: "Amount" + anchors.rightMargin: 5 + validator: IntValidator { } + onTextChanged: { checkFormState() } + } + Button { + id: txSimpleButton + states: [ + State { + name: "READY" + PropertyChanges { target: txSimpleButton; enabled: true} + }, + State { + name: "NOTREADY" + PropertyChanges { target: txSimpleButton; enabled: false} + } + ] + text: "Send" + enabled: false + onClicked: { + //this.enabled = false + var res = eth.createTx(txSimpleRecipient.text, txSimpleValue.text,"","","") + if(res[1]) { + txSimpleResult.text = "There has been an error broadcasting your transaction:" + res[1].error() + } else { + txSimpleResult.text = "Your transaction has been broadcasted over the network.\nYour transaction id is:" + txSimpleOutput.text = res[0] + this.visible = false + simpleSendColumn.state = "DONE" + } + } + } + Text { + id: txSimpleResult + visible: false + + } + TextField { + id: txSimpleOutput + visible: false + width: 530 + } + Button { + id: newSimpleTxButton + visible: false + text: "Create an other transaction" + onClicked: { + this.visible = false + simpleSendColumn.state = "SETUP" + } + } + } +} diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml index 1a14697e6..1452b1f97 100644 --- a/ethereal/assets/qml/wallet.qml +++ b/ethereal/assets/qml/wallet.qml @@ -108,6 +108,7 @@ ApplicationWindow { //color: "#D9DDE7" color: "#252525" + ColumnLayout { y: 50 anchors.left: parent.left @@ -187,270 +188,18 @@ ApplicationWindow { anchors.bottomMargin: 5 id: newTransactionTab Component.onCompleted:{ + var component = Qt.createComponent("newTransaction/_simple_send.qml") + var newTransaction = component.createObject("newTransaction") + + component = Qt.createComponent("newTransaction/_new_contract.qml") + var newContract = component.createObject("newContract") + addTab("Simple send", newTransaction) addTab("Create contract", newContract) } } - Component { - id: newTransaction - Column { - id: simpleSendColumn - states: [ - State{ - name: "ERROR" - }, - State { - name: "DONE" - PropertyChanges { target: txSimpleValue; visible:false} - PropertyChanges { target: txSimpleRecipient; visible:false} - PropertyChanges { target:newSimpleTxButton; visible:false} - - PropertyChanges { target: txSimpleResult; visible:true} - PropertyChanges { target: txSimpleOutput; visible:true} - PropertyChanges { target:newSimpleTxButton; visible:true} - }, - State { - name: "SETUP" - PropertyChanges { target: txSimpleValue; visible:true; text: ""} - PropertyChanges { target: txSimpleRecipient; visible:true; text: ""} - PropertyChanges { target: txSimpleButton; visible:true} - PropertyChanges { target:newSimpleTxButton; visible:false} - } - ] - spacing: 5 - anchors.leftMargin: 5 - anchors.topMargin: 5 - anchors.top: parent.top - anchors.left: parent.left - - function checkFormState(){ - if(txSimpleRecipient.text.length == 40 && txSimpleValue.text.length > 0) { - txSimpleButton.state = "READY" - }else{ - txSimpleButton.state = "NOTREADY" - } - } - - TextField { - id: txSimpleRecipient - placeholderText: "Recipient address" - Layout.fillWidth: true - validator: RegExpValidator { regExp: /[a-f0-9]{40}/ } - width: 530 - onTextChanged: { checkFormState() } - } - TextField { - id: txSimpleValue - placeholderText: "Amount" - anchors.rightMargin: 5 - validator: IntValidator { } - onTextChanged: { checkFormState() } - } - Button { - id: txSimpleButton - states: [ - State { - name: "READY" - PropertyChanges { target: txSimpleButton; enabled: true} - }, - State { - name: "NOTREADY" - PropertyChanges { target: txSimpleButton; enabled: false} - } - ] - text: "Send" - enabled: false - onClicked: { - //this.enabled = false - var res = eth.createTx(txSimpleRecipient.text, txSimpleValue.text,"","","") - if(res[1]) { - txSimpleResult.text = "There has been an error broadcasting your transaction:" + res[1].error() - } else { - txSimpleResult.text = "Your transaction has been broadcasted over the network.\nYour transaction id is:" - txSimpleOutput.text = res[0] - this.visible = false - simpleSendColumn.state = "DONE" - } - } - } - Text { - id: txSimpleResult - visible: false - - } - TextField { - id: txSimpleOutput - visible: false - width: 530 - } - Button { - id: newSimpleTxButton - visible: false - text: "Create an other transaction" - onClicked: { - this.visible = false - simpleSendColumn.state = "SETUP" - } - } - } - } - Component { - id: newContract - Column { - id: mainContractColumn - function contractFormReady(){ - if(codeView.text.length > 0 && txValue.text.length > 0 && txGas.text.length > 0 && txGasPrice.length > 0) { - txButton.state = "READY" - }else{ - txButton.state = "NOTREADY" - } - } - states: [ - State{ - name: "ERROR" - PropertyChanges { target: txResult; visible:true} - PropertyChanges { target: codeView; visible:true} - }, - State { - name: "DONE" - PropertyChanges { target: txValue; visible:false} - PropertyChanges { target: txGas; visible:false} - PropertyChanges { target: txGasPrice; visible:false} - PropertyChanges { target: codeView; visible:false} - PropertyChanges { target: txButton; visible:false} - PropertyChanges { target: txDataLabel; visible:false} - - PropertyChanges { target: txResult; visible:true} - PropertyChanges { target: txOutput; visible:true} - PropertyChanges { target: newTxButton; visible:true} - }, - State { - name: "SETUP" - PropertyChanges { target: txValue; visible:true; text: ""} - PropertyChanges { target: txGas; visible:true; text: ""} - PropertyChanges { target: txGasPrice; visible:true; text: ""} - PropertyChanges { target: codeView; visible:true; text: ""} - PropertyChanges { target: txButton; visible:true} - PropertyChanges { target: txDataLabel; visible:true} - - PropertyChanges { target: txResult; visible:false} - PropertyChanges { target: txOutput; visible:false} - PropertyChanges { target: newTxButton; visible:false} - } - ] - width: 400 - spacing: 5 - anchors.left: parent.left - anchors.top: parent.top - anchors.leftMargin: 5 - anchors.topMargin: 5 - - TextField { - id: txValue - width: 200 - placeholderText: "Amount" - validator: IntValidator { } - onTextChanged: { - contractFormReady() - } - } - TextField { - id: txGas - width: 200 - validator: IntValidator { } - placeholderText: "Gas" - onTextChanged: { - contractFormReady() - } - } - TextField { - id: txGasPrice - width: 200 - placeholderText: "Gas price" - validator: IntValidator { } - onTextChanged: { - contractFormReady() - } - } - - Label { - id: txDataLabel - text: "Transaction data" - } - - TextArea { - id: codeView - anchors.topMargin: 5 - Layout.fillWidth: true - width: parent.width /2 - onTextChanged: { - contractFormReady() - } - } - - Button { - id: txButton - states: [ - State { - name: "READY" - PropertyChanges { target: txButton; enabled: true} - }, - State { - name: "NOTREADY" - PropertyChanges { target: txButton; enabled:false} - } - ] - text: "Send" - enabled: false - onClicked: { - //this.enabled = false - var res = eth.createTx("", txValue.text, txGas.text, txGasPrice.text, codeView.text) - if(res[1]) { - txResult.text = "Your contract could not be send over the network:\n" - txResult.text += res[1].error() - txResult.text += "" - mainContractColumn.state = "ERROR" - } else { - txResult.text = "Your contract has been submitted:\n" - txOutput.text = res[0] - mainContractColumn.state = "DONE" - } - } - } - Text { - id: txResult - visible: false - } - TextField { - id: txOutput - visible: false - width: 530 - } - Button { - id: newTxButton - visible: false - text: "Create an other contract" - onClicked: { - this.visible = false - txResult.text = "" - txOutput.text = "" - mainContractColumn.state = "SETUP" - } - } - - Button { - id: debugButton - text: "Debug" - onClicked: { - var res = ui.debugTx("", txValue.text, txGas.text, txGasPrice.text, codeView.text) - debugWindow.visible = true - } - } - } - } } - Rectangle { id: networkView property var title: "Network" From 3f82d5172f372b5f5d8d9ede4967c5d2b9867980 Mon Sep 17 00:00:00 2001 From: Maran Date: Fri, 11 Apr 2014 16:47:55 -0400 Subject: [PATCH 3/4] remove test menu --- ethereal/assets/qml/wallet.qml | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml index 1452b1f97..95512f661 100644 --- a/ethereal/assets/qml/wallet.qml +++ b/ethereal/assets/qml/wallet.qml @@ -25,35 +25,6 @@ ApplicationWindow { } } - Menu { - title: "Test" - MenuItem { - text: "Test test" - shortcut: "Ctrl+t" - onTriggered: { - var win - function finishedLoading(){ - console.log("Trigged") - win = wizard.createObject(root) - } - console.log("Loading wizard") - - var wizard = Qt.createComponent("first_run.qml") - if(wizard.status== Component.Ready){ - console.log("Component is ready") - finishedLoading() - }else if( wizard.status == Component.Error){ - console.log("Error loading component:", wizard.errorString()) - } - else{ - wizard.statusChanged.connect(finishedLoading) - console.log("Component is NOT ready") - win = wizard.createObject(root) - } - } - } - } - Menu { title: "Network" MenuItem { From ab8d96258ea11c828a149dde176fe8e2efce0294 Mon Sep 17 00:00:00 2001 From: Maran Date: Fri, 11 Apr 2014 17:05:02 -0400 Subject: [PATCH 4/4] Added isContract to gui --- ethereal/assets/qml/wallet.qml | 9 ++++++++- ethereal/ui/gui.go | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml index 95512f661..0c8c91e13 100644 --- a/ethereal/assets/qml/wallet.qml +++ b/ethereal/assets/qml/wallet.qml @@ -140,6 +140,7 @@ ApplicationWindow { anchors.fill: parent TableViewColumn{ role: "value" ; title: "Value" ; width: 100 } TableViewColumn{ role: "address" ; title: "Address" ; width: 430 } + TableViewColumn{ role: "contract" ; title: "Contract" ; width: 100 } model: txModel } @@ -448,7 +449,13 @@ ApplicationWindow { } function addTx(tx) { - txModel.insert(0, {hash: tx.hash, address: tx.address, value: tx.value}) + var isContract + if (tx.contract == true){ + isContract = "Yes" + }else{ + isContract = "No" + } + txModel.insert(0, {hash: tx.hash, address: tx.address, value: tx.value, contract: isContract}) } function addBlock(block) { diff --git a/ethereal/ui/gui.go b/ethereal/ui/gui.go index fa4a5c833..c09c5954f 100644 --- a/ethereal/ui/gui.go +++ b/ethereal/ui/gui.go @@ -21,13 +21,15 @@ type Block struct { type Tx struct { Value, Hash, Address string + Contract bool } func NewTxFromTransaction(tx *ethchain.Transaction) *Tx { hash := hex.EncodeToString(tx.Hash()) sender := hex.EncodeToString(tx.Recipient) + isContract := len(tx.Data) > 0 - return &Tx{Hash: hash, Value: ethutil.CurrencyToString(tx.Value), Address: sender} + return &Tx{Hash: hash, Value: ethutil.CurrencyToString(tx.Value), Address: sender, Contract: isContract} } // Creates a new QML Block from a chain block