diff options
Diffstat (limited to 'ethereal/ui')
-rw-r--r-- | ethereal/ui/debugger.go | 46 | ||||
-rw-r--r-- | ethereal/ui/gui.go | 2 |
2 files changed, 19 insertions, 29 deletions
diff --git a/ethereal/ui/debugger.go b/ethereal/ui/debugger.go index 342e3a7d0..9bca7e4fe 100644 --- a/ethereal/ui/debugger.go +++ b/ethereal/ui/debugger.go @@ -5,27 +5,9 @@ import ( "github.com/ethereum/eth-go/ethchain" "github.com/ethereum/eth-go/ethutil" "github.com/go-qml/qml" - "math/big" "strings" ) -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) -} - type DebuggerWindow struct { win *qml.Window engine *qml.Engine @@ -77,17 +59,10 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data self.Db.Q <- true } - defer func() { - if r := recover(); r != nil { - fmt.Println(r) - self.Db.done = true - } - }() - data := ethutil.StringToByteFunc(dataStr, func(s string) (ret []byte) { slice := strings.Split(dataStr, "\n") for _, dataItem := range slice { - d := formatData(dataItem) + d := ethutil.FormatData(dataItem) ret = append(ret, d...) } return @@ -100,7 +75,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data }) if err != nil { - ethutil.Config.Log.Debugln(err) + self.Logln(err) return } @@ -130,11 +105,17 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data Coinbase: block.Coinbase, Time: block.Time, Diff: block.Difficulty, + Value: ethutil.Big(valueStr), }) self.Db.done = false go func() { - callerClosure.Call(vm, data, self.Db.halting) + ret, _, err := callerClosure.Call(vm, data, self.Db.halting) + if err != nil { + self.Logln("exited with errors:", err) + } else { + self.Logf("exited: %v", ret) + } state.Reset() @@ -142,6 +123,15 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data }() } +func (self *DebuggerWindow) Logf(format string, v ...interface{}) { + self.win.Root().Call("setLog", fmt.Sprintf(format, v...)) +} + +func (self *DebuggerWindow) Logln(v ...interface{}) { + str := fmt.Sprintln(v...) + self.Logf("%s", str[:len(str)-1]) +} + func (self *DebuggerWindow) Next() { self.Db.Next() } diff --git a/ethereal/ui/gui.go b/ethereal/ui/gui.go index 63ab028ab..6a1c4f110 100644 --- a/ethereal/ui/gui.go +++ b/ethereal/ui/gui.go @@ -269,5 +269,5 @@ func (gui *Gui) Transact(recipient, value, gas, gasPrice, data string) (*ethpub. func (gui *Gui) Create(recipient, value, gas, gasPrice, data string) (*ethpub.PReceipt, error) { keyPair := ethutil.GetKeyRing().Get(0) - return gui.pub.Create(ethutil.Hex(keyPair.PrivateKey), value, gas, gasPrice, data) + return gui.pub.Transact(ethutil.Hex(keyPair.PrivateKey), recipient, value, gas, gasPrice, data) } |