diff --git a/ethereal/assets/qml/newTransaction/_new_contract.qml b/ethereal/assets/qml/newTransaction/_new_contract.qml
index 8ce81a799e..abaac16959 100644
--- a/ethereal/assets/qml/newTransaction/_new_contract.qml
+++ b/ethereal/assets/qml/newTransaction/_new_contract.qml
@@ -85,9 +85,34 @@ Component {
}
}
+ Row {
+ id: rowContract
+ ExclusiveGroup { id: contractTypeGroup }
+ RadioButton {
+ id: createContractRadio
+ text: "Create contract"
+ checked: true
+ exclusiveGroup: contractTypeGroup
+ onClicked: {
+ txFuelRecipient.visible = false
+ txDataLabel.text = "Contract code"
+ }
+ }
+ RadioButton {
+ id: runContractRadio
+ text: "Run contract"
+ exclusiveGroup: contractTypeGroup
+ onClicked: {
+ txFuelRecipient.visible = true
+ txDataLabel.text = "Contract arguments"
+ }
+ }
+ }
+
+
Label {
id: txDataLabel
- text: "Transaction data"
+ text: "Contract code"
}
TextArea {
@@ -100,6 +125,14 @@ Component {
}
}
+ TextField {
+ id: txFuelRecipient
+ placeholderText: "Contract address"
+ validator: RegExpValidator { regExp: /[a-f0-9]{40}/ }
+ visible: false
+ width: 530
+ }
+
Button {
id: txButton
states: [
@@ -116,14 +149,14 @@ Component {
enabled: false
onClicked: {
//this.enabled = false
- var res = eth.createTx("", txValue.text, txGas.text, txGasPrice.text, codeView.text)
+ var res = eth.createTx(txFuelRecipient.text, 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"
+ txResult.text = "Your transaction has been submitted:\n"
txOutput.text = res[0]
mainContractColumn.state = "DONE"
}
diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml
index fdadc6ebb4..37224c7b44 100644
--- a/ethereal/assets/qml/wallet.qml
+++ b/ethereal/assets/qml/wallet.qml
@@ -167,7 +167,7 @@ ApplicationWindow {
var newContract = component.createObject("newContract")
addTab("Simple send", newTransaction)
- addTab("Create contract", newContract)
+ addTab("Contracts", newContract)
}
}
}
@@ -401,26 +401,36 @@ ApplicationWindow {
orientation: Qt.Vertical
anchors.fill: parent
- TableView {
- property var memModel: ListModel {
- id: memModel
- }
- height: parent.height/2
- width: parent.width
- TableViewColumn{ id:mnumColmn ; role: "num" ; title: "#" ; width: 50}
- TableViewColumn{ role: "value" ; title: "Memory" ; width: 750}
- model: memModel
- }
-
- TableView {
- property var stackModel: ListModel {
- id: stackModel
- }
- height: parent.height/2
- width: parent.width
- TableViewColumn{ role: "value" ; title: "Stack" ; width: parent.width }
- model: stackModel
- }
+ TableView {
+ property var memModel: ListModel {
+ id: memModel
+ }
+ height: parent.height/2
+ width: parent.width
+ TableViewColumn{ id:mnumColmn ; role: "num" ; title: "#" ; width: 50}
+ TableViewColumn{ role: "value" ; title: "Memory" ; width: 750}
+ model: memModel
+ }
+
+ SplitView {
+ orientation: Qt.Horizontal
+ TableView {
+ property var debuggerLog: ListModel {
+ id: debuggerLog
+ }
+ TableViewColumn{ role: "value"; title: "Debug messages" }
+ model: debuggerLog
+ }
+ TableView {
+ property var stackModel: ListModel {
+ id: stackModel
+ }
+ height: parent.height/2
+ width: parent.width
+ TableViewColumn{ role: "value" ; title: "Stack" ; width: parent.width }
+ model: stackModel
+ }
+ }
}
}
}
@@ -449,6 +459,10 @@ ApplicationWindow {
function setStack(stack) {
stackModel.append({value: stack})
}
+ function addDebugMessage(message){
+ console.log("WOOP:")
+ debuggerLog.append({value: message})
+ }
function clearStack() {
stackModel.clear()
diff --git a/ethereal/ui/ui_lib.go b/ethereal/ui/ui_lib.go
index 86855290fb..b2552cdce9 100644
--- a/ethereal/ui/ui_lib.go
+++ b/ethereal/ui/ui_lib.go
@@ -102,6 +102,9 @@ func (ui *UiLib) DebugTx(recipient, valueStr, gasStr, gasPriceStr, data string)
asm, err := mutan.Compile(strings.NewReader(mainInput), false)
if err != nil {
fmt.Println(err)
+ for _, e := range err {
+ ui.win.Root().Call("addDebugMessage", e.Error())
+ }
}
callerScript := ethutil.Assemble(asm...)