diff options
author | zelig <viktor.tron@gmail.com> | 2014-07-15 01:32:54 +0800 |
---|---|---|
committer | zelig <viktor.tron@gmail.com> | 2014-07-15 01:32:54 +0800 |
commit | 353ecbb7d78d9669c42545f152f291f869b39c02 (patch) | |
tree | f3cbb4ad253708b55001d658737578d9713dca52 /ethereal | |
parent | 6b296d907b848e2a3dbc78ea5c04c3c3d719d9bd (diff) | |
parent | e53acdc2ac45fa8953afc3392ed81653d6f26326 (diff) | |
download | go-tangerine-353ecbb7d78d9669c42545f152f291f869b39c02.tar go-tangerine-353ecbb7d78d9669c42545f152f291f869b39c02.tar.gz go-tangerine-353ecbb7d78d9669c42545f152f291f869b39c02.tar.bz2 go-tangerine-353ecbb7d78d9669c42545f152f291f869b39c02.tar.lz go-tangerine-353ecbb7d78d9669c42545f152f291f869b39c02.tar.xz go-tangerine-353ecbb7d78d9669c42545f152f291f869b39c02.tar.zst go-tangerine-353ecbb7d78d9669c42545f152f291f869b39c02.zip |
Merge branch 'develop' of github.com:ethereum/go-ethereum into feature/ethutil-refactor
Diffstat (limited to 'ethereal')
-rw-r--r-- | ethereal/assets/debugger/debugger.qml | 6 | ||||
-rw-r--r-- | ethereal/assets/qml/wallet.qml | 12 | ||||
-rw-r--r-- | ethereal/assets/qml/webapp.qml | 5 | ||||
-rw-r--r-- | ethereal/debugger.go | 13 | ||||
-rw-r--r-- | ethereal/ext_app.go | 9 | ||||
-rw-r--r-- | ethereal/flags.go | 4 | ||||
-rw-r--r-- | ethereal/gui.go | 107 | ||||
-rw-r--r-- | ethereal/html_container.go | 7 | ||||
-rw-r--r-- | ethereal/qml_container.go | 10 |
9 files changed, 94 insertions, 79 deletions
diff --git a/ethereal/assets/debugger/debugger.qml b/ethereal/assets/debugger/debugger.qml index f204647c8..fa56737a2 100644 --- a/ethereal/assets/debugger/debugger.qml +++ b/ethereal/assets/debugger/debugger.qml @@ -19,7 +19,7 @@ ApplicationWindow { property alias dataText: rawDataField.text onClosing: { - compileTimer.stop() + //compileTimer.stop() } MenuBar { @@ -112,13 +112,15 @@ ApplicationWindow { anchors.right: settings.left focus: true + /* Timer { id: compileTimer interval: 500 ; running: true ; repeat: true onTriggered: { - dbg.compile(codeEditor.text) + dbg.autoComp(codeEditor.text) } } + */ } Column { diff --git a/ethereal/assets/qml/wallet.qml b/ethereal/assets/qml/wallet.qml index 4b252f200..c783cde83 100644 --- a/ethereal/assets/qml/wallet.qml +++ b/ethereal/assets/qml/wallet.qml @@ -100,7 +100,7 @@ ApplicationWindow { anchors.right: parent.right height: 200 Image { - source: ui.assetPath("tx.png") + source: "../tx.png" anchors.horizontalCenter: parent.horizontalCenter MouseArea { anchors.fill: parent @@ -110,7 +110,7 @@ ApplicationWindow { } } Image { - source: ui.assetPath("new.png") + source: "../new.png" anchors.horizontalCenter: parent.horizontalCenter MouseArea { anchors.fill: parent @@ -120,7 +120,7 @@ ApplicationWindow { } } Image { - source: ui.assetPath("net.png") + source: "../net.png" anchors.horizontalCenter: parent.horizontalCenter MouseArea { anchors.fill: parent @@ -131,7 +131,7 @@ ApplicationWindow { } Image { - source: ui.assetPath("heart.png") + source: "../heart.png" anchors.horizontalCenter: parent.horizontalCenter MouseArea { anchors.fill: parent @@ -436,7 +436,7 @@ ApplicationWindow { onDoubleClicked: peerWindow.visible = true anchors.fill: parent } - source: ui.assetPath("network.png") + source: "../network.png" } } @@ -624,7 +624,7 @@ ApplicationWindow { width: 150 fillMode: Image.PreserveAspectFit smooth: true - source: ui.assetPath("facet.png") + source: "../facet.png" x: 10 y: 10 } diff --git a/ethereal/assets/qml/webapp.qml b/ethereal/assets/qml/webapp.qml index 63927f0eb..5e4c035d8 100644 --- a/ethereal/assets/qml/webapp.qml +++ b/ethereal/assets/qml/webapp.qml @@ -38,7 +38,7 @@ ApplicationWindow { experimental.preferences.javascriptEnabled: true experimental.preferences.navigatorQtObjectEnabled: true experimental.preferences.developerExtrasEnabled: true - experimental.userScripts: [ui.assetPath("ext/pre.js"), ui.assetPath("ext/big.js"), ui.assetPath("ext/string.js"), ui.assetPath("ext/ethereum.js")] + experimental.userScripts: ["../ext/pre.js", "../ext/big.js", "../ext/string.js", "../ext/ethereum.js"] experimental.onMessageReceived: { console.log("[onMessageReceived]: ", message.data) // TODO move to messaging.js @@ -191,6 +191,7 @@ ApplicationWindow { inspector.visible = false }else{ inspector.visible = true + inspector.url = webview.experimental.remoteInspectorUrl } } onDoubleClicked: { @@ -224,7 +225,6 @@ ApplicationWindow { WebView { id: inspector visible: false - url: webview.experimental.remoteInspectorUrl anchors { left: root.left right: root.right @@ -238,7 +238,6 @@ ApplicationWindow { name: "inspectorShown" PropertyChanges { target: inspector - url: webview.experimental.remoteInspectorUrl } } ] diff --git a/ethereal/debugger.go b/ethereal/debugger.go index 64ca316f8..997c2e8dd 100644 --- a/ethereal/debugger.go +++ b/ethereal/debugger.go @@ -74,6 +74,13 @@ func (self *DebuggerWindow) Compile(code string) { } } +// Used by QML +func (self *DebuggerWindow) AutoComp(code string) { + if self.Db.done { + self.Compile(code) + } +} + func (self *DebuggerWindow) ClearLog() { self.win.Root().Call("clearLog") } @@ -110,8 +117,6 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data return } - self.SetAsm(script) - var ( gas = ethutil.Big(gasStr) gasPrice = ethutil.Big(gasPriceStr) @@ -257,6 +262,10 @@ func (self *Debugger) StepHook(pc int, op ethchain.OpCode, mem *ethchain.Memory, return self.halting(pc, op, mem, stack, stateObject) } +func (self *Debugger) SetCode(byteCode []byte) { + self.main.SetAsm(byteCode) +} + func (self *Debugger) BreakPoints() []int64 { return self.breakPoints } diff --git a/ethereal/ext_app.go b/ethereal/ext_app.go index c02f5ccb3..17c342a1b 100644 --- a/ethereal/ext_app.go +++ b/ethereal/ext_app.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/ethereum/eth-go/ethchain" "github.com/ethereum/eth-go/ethpub" - "github.com/ethereum/eth-go/ethreact" "github.com/ethereum/eth-go/ethutil" "github.com/go-qml/qml" ) @@ -25,8 +24,8 @@ type AppContainer interface { type ExtApplication struct { *ethpub.PEthereum - blockChan chan ethreact.Event - changeChan chan ethreact.Event + blockChan chan ethutil.React + changeChan chan ethutil.React quitChan chan bool watcherQuitChan chan bool @@ -38,8 +37,8 @@ type ExtApplication struct { func NewExtApplication(container AppContainer, lib *UiLib) *ExtApplication { app := &ExtApplication{ ethpub.NewPEthereum(lib.eth), - make(chan ethreact.Event), - make(chan ethreact.Event), + make(chan ethutil.React, 1), + make(chan ethutil.React, 1), make(chan bool), make(chan bool), container, diff --git a/ethereal/flags.go b/ethereal/flags.go index 2c9b3af5f..d5ca9f336 100644 --- a/ethereal/flags.go +++ b/ethereal/flags.go @@ -52,8 +52,8 @@ func defaultAssetPath() string { assetPath = filepath.Join(exedir, "../Resources") case "linux": assetPath = "/usr/share/ethereal" - case "window": - fallthrough + case "windows": + assetPath = "./assets" default: assetPath = "." } diff --git a/ethereal/gui.go b/ethereal/gui.go index 2bad90361..9f28045f8 100644 --- a/ethereal/gui.go +++ b/ethereal/gui.go @@ -8,7 +8,6 @@ import ( "github.com/ethereum/eth-go/ethdb" "github.com/ethereum/eth-go/ethlog" "github.com/ethereum/eth-go/ethpub" - "github.com/ethereum/eth-go/ethreact" "github.com/ethereum/eth-go/ethutil" "github.com/ethereum/eth-go/ethwire" "github.com/ethereum/go-ethereum/utils" @@ -144,7 +143,7 @@ func (gui *Gui) showWallet(context *qml.Context) (*qml.Window, error) { gui.readPreviousTransactions() gui.setPeerInfo() - gui.update() + go gui.update() return win, nil } @@ -267,10 +266,20 @@ func (gui *Gui) setWalletValue(amount, unconfirmedFunds *big.Int) { func (gui *Gui) update() { reactor := gui.eth.Reactor() - blockChan := make(chan ethreact.Event) - txChan := make(chan ethreact.Event) - objectChan := make(chan ethreact.Event) - peerChan := make(chan ethreact.Event) + blockChan := make(chan ethutil.React, 1) + txChan := make(chan ethutil.React, 1) + objectChan := make(chan ethutil.React, 1) + peerChan := make(chan ethutil.React, 1) + + reactor.Subscribe("newBlock", blockChan) + reactor.Subscribe("newTx:pre", txChan) + reactor.Subscribe("newTx:post", txChan) + + nameReg := ethpub.EthereumConfig(gui.eth.StateManager()).NameReg() + if nameReg != nil { + reactor.Subscribe("object:"+string(nameReg.Address()), objectChan) + } + reactor.Subscribe("peerList", peerChan) ticker := time.NewTicker(5 * time.Second) @@ -279,66 +288,54 @@ func (gui *Gui) update() { unconfirmedFunds := new(big.Int) gui.win.Root().Call("setWalletValue", fmt.Sprintf("%v", ethutil.CurrencyToString(state.GetAccount(gui.address()).Amount))) - go func() { - for { - select { - case b := <-blockChan: - block := b.Resource.(*ethchain.Block) - gui.processBlock(block, false) - if bytes.Compare(block.Coinbase, gui.address()) == 0 { - gui.setWalletValue(gui.eth.StateManager().CurrentState().GetAccount(gui.address()).Amount, nil) - } + for { + select { + case b := <-blockChan: + block := b.Resource.(*ethchain.Block) + gui.processBlock(block, false) + if bytes.Compare(block.Coinbase, gui.address()) == 0 { + gui.setWalletValue(gui.eth.StateManager().CurrentState().GetAccount(gui.address()).Amount, nil) + } - case txMsg := <-txChan: - tx := txMsg.Resource.(*ethchain.Transaction) + case txMsg := <-txChan: + tx := txMsg.Resource.(*ethchain.Transaction) - if txMsg.Name == "newTx:pre" { - object := state.GetAccount(gui.address()) + if txMsg.Event == "newTx:pre" { + object := state.GetAccount(gui.address()) - if bytes.Compare(tx.Sender(), gui.address()) == 0 { - gui.win.Root().Call("addTx", ethpub.NewPTx(tx), "send") - gui.txDb.Put(tx.Hash(), tx.RlpEncode()) + if bytes.Compare(tx.Sender(), gui.address()) == 0 { + gui.win.Root().Call("addTx", ethpub.NewPTx(tx), "send") + gui.txDb.Put(tx.Hash(), tx.RlpEncode()) - unconfirmedFunds.Sub(unconfirmedFunds, tx.Value) - } else if bytes.Compare(tx.Recipient, gui.address()) == 0 { - gui.win.Root().Call("addTx", ethpub.NewPTx(tx), "recv") - gui.txDb.Put(tx.Hash(), tx.RlpEncode()) + unconfirmedFunds.Sub(unconfirmedFunds, tx.Value) + } else if bytes.Compare(tx.Recipient, gui.address()) == 0 { + gui.win.Root().Call("addTx", ethpub.NewPTx(tx), "recv") + gui.txDb.Put(tx.Hash(), tx.RlpEncode()) - unconfirmedFunds.Add(unconfirmedFunds, tx.Value) - } + unconfirmedFunds.Add(unconfirmedFunds, tx.Value) + } - gui.setWalletValue(object.Amount, unconfirmedFunds) - } else { - object := state.GetAccount(gui.address()) - if bytes.Compare(tx.Sender(), gui.address()) == 0 { - object.SubAmount(tx.Value) - } else if bytes.Compare(tx.Recipient, gui.address()) == 0 { - object.AddAmount(tx.Value) - } + gui.setWalletValue(object.Amount, unconfirmedFunds) + } else { + object := state.GetAccount(gui.address()) + if bytes.Compare(tx.Sender(), gui.address()) == 0 { + object.SubAmount(tx.Value) + } else if bytes.Compare(tx.Recipient, gui.address()) == 0 { + object.AddAmount(tx.Value) + } - gui.setWalletValue(object.Amount, nil) + gui.setWalletValue(object.Amount, nil) - state.UpdateStateObject(object) - } - case <-objectChan: - gui.loadAddressBook() - case <-peerChan: - gui.setPeerInfo() - case <-ticker.C: - gui.setPeerInfo() + state.UpdateStateObject(object) } + case <-objectChan: + gui.loadAddressBook() + case <-peerChan: + gui.setPeerInfo() + case <-ticker.C: + gui.setPeerInfo() } - }() - reactor.Subscribe("newBlock", blockChan) - reactor.Subscribe("newTx:pre", txChan) - reactor.Subscribe("newTx:post", txChan) - - nameReg := ethpub.EthereumConfig(gui.eth.StateManager()).NameReg() - if nameReg != nil { - reactor.Subscribe("object:"+string(nameReg.Address()), objectChan) } - reactor.Subscribe("peerList", peerChan) - } func (gui *Gui) setPeerInfo() { diff --git a/ethereal/html_container.go b/ethereal/html_container.go index 1e835eebc..04136f801 100644 --- a/ethereal/html_container.go +++ b/ethereal/html_container.go @@ -8,7 +8,6 @@ import ( "github.com/go-qml/qml" "github.com/howeyc/fsnotify" "io/ioutil" - "log" "net/url" "os" "path" @@ -59,7 +58,7 @@ func (app *HtmlApplication) RootFolder() string { if err != nil { return "" } - return path.Dir(folder.RequestURI()) + return path.Dir(ethutil.WindonizePath(folder.RequestURI())) } func (app *HtmlApplication) RecursiveFolders() []os.FileInfo { files, _ := ioutil.ReadDir(app.RootFolder()) @@ -77,11 +76,13 @@ func (app *HtmlApplication) NewWatcher(quitChan chan bool) { app.watcher, err = fsnotify.NewWatcher() if err != nil { + logger.Infoln("Could not create new auto-reload watcher:", err) return } err = app.watcher.Watch(app.RootFolder()) if err != nil { - log.Fatal(err) + logger.Infoln("Could not start auto-reload watcher:", err) + return } for _, folder := range app.RecursiveFolders() { fullPath := app.RootFolder() + "/" + folder.Name() diff --git a/ethereal/qml_container.go b/ethereal/qml_container.go index a8ce1cb75..cb43a99bd 100644 --- a/ethereal/qml_container.go +++ b/ethereal/qml_container.go @@ -5,6 +5,7 @@ import ( "github.com/ethereum/eth-go/ethpub" "github.com/ethereum/eth-go/ethutil" "github.com/go-qml/qml" + "runtime" ) type QmlApplication struct { @@ -20,7 +21,14 @@ func NewQmlApplication(path string, lib *UiLib) *QmlApplication { } func (app *QmlApplication) Create() error { - component, err := app.engine.LoadFile(app.path) + path := string(app.path) + + // For some reason for windows we get /c:/path/to/something, windows doesn't like the first slash but is fine with the others so we are removing it + if string(app.path[0]) == "/" && runtime.GOOS == "windows" { + path = app.path[1:] + } + + component, err := app.engine.LoadFile(path) if err != nil { logger.Warnln(err) } |