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