Unified the contract interface and tx interface. Fixes #62

poc8
obscuren 11 years ago
parent e7c9b86a5a
commit 1020d7ff67
  1. 2
      README.md
  2. 103
      ethereal/assets/qml/wallet.qml

@ -27,7 +27,6 @@ General command line options
``` ```
Shared between ethereum and ethereal Shared between ethereum and ethereal
-m Start mining blocks
-genaddr Generates a new address and private key (destructive action) -genaddr Generates a new address and private key (destructive action)
-p Port on which the server will accept incomming connections -p Port on which the server will accept incomming connections
-upnp Enable UPnP -upnp Enable UPnP
@ -41,6 +40,7 @@ Ethereum only
ethereum [options] [filename] ethereum [options] [filename]
-js Start the JavaScript REPL -js Start the JavaScript REPL
filename Load the given file and interpret as JavaScript filename Load the given file and interpret as JavaScript
-m Start mining blocks
Etheral only Etheral only
-asset_path absolute path to GUI assets directory -asset_path absolute path to GUI assets directory

@ -170,6 +170,7 @@ ApplicationWindow {
visible: false visible: false
anchors.fill: parent anchors.fill: parent
color: "#00000000" color: "#00000000"
/*
TabView{ TabView{
anchors.fill: parent anchors.fill: parent
anchors.rightMargin: 5 anchors.rightMargin: 5
@ -182,6 +183,10 @@ ApplicationWindow {
addTab("Contracts", newContract) addTab("Contracts", newContract)
} }
} }
*/
Component.onCompleted: {
newContract.createObject(newTxView)
}
} }
Rectangle { Rectangle {
@ -574,7 +579,14 @@ ApplicationWindow {
}else{ }else{
isContract = "No" isContract = "No"
} }
txModel.insert(0, {inout: inout, hash: tx.hash, address: tx.address, value: tx.value, contract: isContract})
var address;
if(inout == "recv") {
address = tx.sender;
} else {
address = tx.address;
}
txModel.insert(0, {inout: inout, hash: tx.hash, address: address, value: tx.value, contract: isContract})
} }
function addBlock(block, initial) { function addBlock(block, initial) {
@ -625,6 +637,7 @@ ApplicationWindow {
id: newContract id: newContract
Column { Column {
id: mainContractColumn id: mainContractColumn
anchors.fill: parent
function contractFormReady(){ function contractFormReady(){
if(codeView.text.length > 0 && txValue.text.length > 0 && txGas.text.length > 0 && txGasPrice.length > 0) { if(codeView.text.length > 0 && txValue.text.length > 0 && txGas.text.length > 0 && txGasPrice.length > 0) {
txButton.state = "READY" txButton.state = "READY"
@ -646,6 +659,8 @@ ApplicationWindow {
PropertyChanges { target: codeView; visible:false} PropertyChanges { target: codeView; visible:false}
PropertyChanges { target: txButton; visible:false} PropertyChanges { target: txButton; visible:false}
PropertyChanges { target: txDataLabel; visible:false} PropertyChanges { target: txDataLabel; visible:false}
PropertyChanges { target: atLabel; visible:false}
PropertyChanges { target: txFuelRecipient; visible:false}
PropertyChanges { target: txResult; visible:true} PropertyChanges { target: txResult; visible:true}
PropertyChanges { target: txOutput; visible:true} PropertyChanges { target: txOutput; visible:true}
@ -673,81 +688,69 @@ ApplicationWindow {
anchors.topMargin: 5 anchors.topMargin: 5
TextField { TextField {
id: txValue id: txFuelRecipient
width: 200 placeholderText: "Address / Name or empty for contract"
placeholderText: "Amount" //validator: RegExpValidator { regExp: /[a-f0-9]{40}/ }
validator: RegExpValidator { regExp: /\d*/ } width: 400
onTextChanged: {
contractFormReady()
}
}
TextField {
id: txGas
width: 200
validator: RegExpValidator { regExp: /\d*/ }
placeholderText: "Gas"
onTextChanged: {
contractFormReady()
}
} }
TextField { TextField {
id: txGasPrice id: txValue
width: 200 width: 222
placeholderText: "Gas price" placeholderText: "Amount"
validator: RegExpValidator { regExp: /\d*/ } validator: RegExpValidator { regExp: /\d*/ }
onTextChanged: { onTextChanged: {
contractFormReady() contractFormReady()
} }
} }
Row { RowLayout {
id: rowContract TextField {
ExclusiveGroup { id: contractTypeGroup } id: txGas
RadioButton { width: 50
id: createContractRadio validator: RegExpValidator { regExp: /\d*/ }
text: "Create contract" placeholderText: "Gas"
checked: true text: "500"
exclusiveGroup: contractTypeGroup /*
onClicked: { onTextChanged: {
txFuelRecipient.visible = false contractFormReady()
txDataLabel.text = "Contract code"
} }
*/
}
Label {
id: atLabel
text: "@"
} }
RadioButton {
id: runContractRadio TextField {
text: "Run contract" id: txGasPrice
exclusiveGroup: contractTypeGroup width: 200
onClicked: { placeholderText: "Gas price"
txFuelRecipient.visible = true text: "1000000"
txDataLabel.text = "Contract arguments" validator: RegExpValidator { regExp: /\d*/ }
/*
onTextChanged: {
contractFormReady()
} }
*/
} }
} }
Label { Label {
id: txDataLabel id: txDataLabel
text: "Contract code" text: "Data"
} }
TextArea { TextArea {
id: codeView id: codeView
height: 300 height: 300
anchors.topMargin: 5 anchors.topMargin: 5
Layout.fillWidth: true width: 400
width: parent.width /2
onTextChanged: { onTextChanged: {
contractFormReady() contractFormReady()
} }
} }
TextField {
id: txFuelRecipient
placeholderText: "Contract address"
//validator: RegExpValidator { regExp: /[a-f0-9]{40}/ }
visible: false
width: 530
}
Button { Button {
id: txButton id: txButton
@ -790,7 +793,7 @@ ApplicationWindow {
Button { Button {
id: newTxButton id: newTxButton
visible: false visible: false
text: "Create an other contract" text: "Create a new transaction"
onClicked: { onClicked: {
this.visible = false this.visible = false
txResult.text = "" txResult.text = ""

Loading…
Cancel
Save