From a0f73c2703aacab189c5cf26a5c95e156039eb9e Mon Sep 17 00:00:00 2001 From: obscuren <geffobscura@gmail.com> Date: Tue, 27 May 2014 16:09:04 +0200 Subject: [PATCH] Minor fixes and improvements to the ui --- ethereal/assets/debugger/debugger.qml | 12 ++++----- ethereal/assets/heart.png | Bin 0 -> 4277 bytes ethereal/assets/qml/wallet.qml | 21 +++------------- ethereal/ui/debugger.go | 34 +++++++++++++++++++++++--- 4 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 ethereal/assets/heart.png diff --git a/ethereal/assets/debugger/debugger.qml b/ethereal/assets/debugger/debugger.qml index bf69b4254..9ea131d7d 100644 --- a/ethereal/assets/debugger/debugger.qml +++ b/ethereal/assets/debugger/debugger.qml @@ -8,7 +8,7 @@ import Ethereum 1.0 ApplicationWindow { visible: false - title: "Debugger" + title: "IceCream" minimumWidth: 1280 minimumHeight: 900 width: 1290 @@ -58,9 +58,10 @@ ApplicationWindow { anchors.bottom: parent.bottom Label { - text: "Data" + text: "Arbitrary data" } TextArea { + id: rawDataField anchors.left: parent.left anchors.right: parent.right height: 150 @@ -105,7 +106,7 @@ ApplicationWindow { SplitView { orientation: Qt.Horizontal - height: 300 + height: 250 TableView { id: stackTableView @@ -149,16 +150,15 @@ ApplicationWindow { } } } - statusBar: StatusBar { + toolBar: ToolBar { RowLayout { spacing: 5 - anchors.fill: parent Button { property var enabled: true id: debugStart onClicked: { - dbg.debug(txValue.text, txGas.text, txGasPrice.text, codeEditor.text) + dbg.debug(txValue.text, txGas.text, txGasPrice.text, codeEditor.text, rawDataField.text) } text: "Debug" } diff --git a/ethereal/assets/heart.png b/ethereal/assets/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..3c874ab7f36da5f25e7295ee5572738941dfe2e8 GIT binary patch literal 4277 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 literal 0 HcmV?d00001 diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml index 3063bb10d..5e0904a20 100644 --- a/ethereal/assets/qml/wallet.qml +++ b/ethereal/assets/qml/wallet.qml @@ -123,7 +123,7 @@ ApplicationWindow { } Image { - source: ui.assetPath("net.png") + source: ui.assetPath("heart.png") anchors.horizontalCenter: parent.horizontalCenter MouseArea { anchors.fill: parent @@ -284,27 +284,14 @@ ApplicationWindow { title: "Open QML Application" onAccepted: { //ui.open(openAppDialog.fileUrl.toString()) - //ui.openHtml(Qt.resolvedUrl(ui.assetPath("test.html"))) - ui.openHtml(openAppDialog.fileUrl.toString()) - + //ui.openHtml(Qt.resolvedUrl(ui.assetPath("test.html"))) + ui.openHtml(openAppDialog.fileUrl.toString()) } } statusBar: StatusBar { RowLayout { anchors.fill: parent - /* - Button { - property var enabled: true - id: connectButton - onClicked: { - if(this.enabled) { - ui.connect(this) - } - } - text: "Connect" - } - */ Button { property var enabled: true @@ -369,8 +356,8 @@ ApplicationWindow { Text { text: '<b>Hash:</b> ' + hash; color: "#F2F2F2"} Text { text: '<b>Block found at:</b> ' + prettyTime; color: "#F2F2F2"} } + } } - } ListView { model: singleBlock delegate: blockDetailsDelegate diff --git a/ethereal/ui/debugger.go b/ethereal/ui/debugger.go index 817c0b08f..8b27c2fe5 100644 --- a/ethereal/ui/debugger.go +++ b/ethereal/ui/debugger.go @@ -5,6 +5,8 @@ import ( "github.com/ethereum/eth-go/ethchain" "github.com/ethereum/eth-go/ethutil" "github.com/go-qml/qml" + "math/big" + "strings" ) type DebuggerWindow struct { @@ -39,11 +41,35 @@ func (self *DebuggerWindow) Show() { }() } -func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, data string) { +func formatData(data string) []byte { + if len(data) == 0 { + return nil + } + // Simple stupid + d := new(big.Int) + if data[0:1] == "\"" && data[len(data)-1:] == "\"" { + d.SetBytes([]byte(data[1 : len(data)-1])) + } else if data[:2] == "0x" { + d.SetBytes(ethutil.FromHex(data[2:])) + } else { + d.SetString(data, 0) + } + + return ethutil.BigToBytes(d, 256) +} + +func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, dataStr string) { if !self.Db.done { self.Db.Q <- true } + dataSlice := strings.Split(dataStr, "\n") + var data []byte + for _, dataItem := range dataSlice { + d := formatData(dataItem) + data = append(data, d...) + } + state := self.lib.eth.BlockChain().CurrentBlock.State() defer func() { @@ -52,7 +78,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, data string) { } }() - script, err := ethutil.Compile(data) + script, err := ethutil.Compile(scriptStr) if err != nil { ethutil.Config.Log.Debugln(err) @@ -72,7 +98,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, data string) { account := self.lib.eth.StateManager().TransState().GetAccount(keyPair.Address()) contract := ethchain.MakeContract(callerTx, state) - callerClosure := ethchain.NewClosure(account, contract, contract.Init(), state, ethutil.Big(gasStr), ethutil.Big(gasPriceStr)) + callerClosure := ethchain.NewClosure(account, contract, script, state, ethutil.Big(gasStr), ethutil.Big(gasPriceStr)) block := self.lib.eth.BlockChain().CurrentBlock vm := ethchain.NewVm(state, self.lib.eth.StateManager(), ethchain.RuntimeVars{ @@ -86,7 +112,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, data string) { self.Db.done = false go func() { - callerClosure.Call(vm, contract.Init(), self.Db.halting) + callerClosure.Call(vm, data, self.Db.halting) state.Reset() -- GitLab