From a0f73c2703aacab189c5cf26a5c95e156039eb9e Mon Sep 17 00:00:00 2001 From: obscuren 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 bf69b4254d..9ea131d7d6 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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 zZHash: ' + hash; color: "#F2F2F2"} Text { text: 'Block found at: ' + prettyTime; color: "#F2F2F2"} } + } } - } ListView { model: singleBlock delegate: blockDetailsDelegate diff --git a/ethereal/ui/debugger.go b/ethereal/ui/debugger.go index 817c0b08f6..8b27c2fe53 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()