From 20741a96ac6dc824bcc7d67e7c966fa65cbb2faf Mon Sep 17 00:00:00 2001 From: obscuren Date: Mon, 9 Mar 2015 13:50:05 +0100 Subject: [PATCH] Updated xeth instances to take extra param for ui.Interface Please be aware that if any of the instances on xeth.frontend are called the program will crash due to the default, temporarily, frontend interface. --- cmd/ethereum/js.go | 4 +- cmd/mist/ext_app.go | 117 -------------------------------------------- cmd/mist/gui.go | 2 +- cmd/mist/ui_lib.go | 20 +------- cmd/utils/cmd.go | 2 +- rpc/api.go | 13 ----- 6 files changed, 5 insertions(+), 153 deletions(-) delete mode 100644 cmd/mist/ext_app.go diff --git a/cmd/ethereum/js.go b/cmd/ethereum/js.go index d5cf62146..e3165d3f5 100644 --- a/cmd/ethereum/js.go +++ b/cmd/ethereum/js.go @@ -46,7 +46,7 @@ func execJsFile(ethereum *eth.Ethereum, filename string) { if err != nil { utils.Fatalf("%v", err) } - re := javascript.NewJSRE(xeth.New(ethereum)) + re := javascript.NewJSRE(xeth.New(ethereum, nil)) if _, err := re.Run(string(content)); err != nil { utils.Fatalf("Javascript Error: %v", err) } @@ -61,7 +61,7 @@ type repl struct { } func runREPL(ethereum *eth.Ethereum) { - xeth := xeth.New(ethereum) + xeth := xeth.New(ethereum, nil) repl := &repl{ re: javascript.NewJSRE(xeth), xeth: xeth, diff --git a/cmd/mist/ext_app.go b/cmd/mist/ext_app.go deleted file mode 100644 index 84041a553..000000000 --- a/cmd/mist/ext_app.go +++ /dev/null @@ -1,117 +0,0 @@ -/* - This file is part of go-ethereum - - go-ethereum is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - go-ethereum is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with go-ethereum. If not, see . -*/ -/** - * @authors - * Jeffrey Wilcke - */ -package main - -import ( - "github.com/ethereum/go-ethereum/core" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/xeth" - "github.com/obscuren/qml" -) - -type AppContainer interface { - Create() error - Destroy() - - Window() *qml.Window - Engine() *qml.Engine - - NewBlock(*types.Block) - NewWatcher(chan bool) - Post(string, int) -} - -type ExtApplication struct { - *xeth.XEth - eth core.Backend - - events event.Subscription - watcherQuitChan chan bool - - filters map[string]*core.Filter - - container AppContainer - lib *UiLib -} - -func NewExtApplication(container AppContainer, lib *UiLib) *ExtApplication { - return &ExtApplication{ - XEth: xeth.New(lib.eth), - eth: lib.eth, - watcherQuitChan: make(chan bool), - filters: make(map[string]*core.Filter), - container: container, - lib: lib, - } -} - -func (app *ExtApplication) run() { - // Set the "eth" api on to the containers context - context := app.container.Engine().Context() - context.SetVar("eth", app) - context.SetVar("ui", app.lib) - - err := app.container.Create() - if err != nil { - guilogger.Errorln(err) - return - } - - // Call the main loop - go app.mainLoop() - - app.container.NewWatcher(app.watcherQuitChan) - - win := app.container.Window() - win.Show() - win.Wait() - - app.stop() -} - -func (app *ExtApplication) stop() { - app.events.Unsubscribe() - - // Kill the main loop - app.watcherQuitChan <- true - - app.container.Destroy() -} - -func (app *ExtApplication) mainLoop() { - for ev := range app.events.Chan() { - switch ev := ev.(type) { - case core.NewBlockEvent: - app.container.NewBlock(ev.Block) - - /* TODO remove - case state.Messages: - for id, filter := range app.filters { - msgs := filter.FilterMessages(ev) - if len(msgs) > 0 { - app.container.Messages(msgs, id) - } - } - */ - } - } -} diff --git a/cmd/mist/gui.go b/cmd/mist/gui.go index 869b689dd..53ca35574 100644 --- a/cmd/mist/gui.go +++ b/cmd/mist/gui.go @@ -88,7 +88,7 @@ func NewWindow(ethereum *eth.Ethereum, config *ethutil.ConfigManager, session st panic(err) } - xeth := xeth.New(ethereum) + xeth := xeth.New(ethereum, nil) gui := &Gui{eth: ethereum, txDb: db, xeth: xeth, diff --git a/cmd/mist/ui_lib.go b/cmd/mist/ui_lib.go index 098e8fca5..187d5b2d6 100644 --- a/cmd/mist/ui_lib.go +++ b/cmd/mist/ui_lib.go @@ -58,7 +58,7 @@ type UiLib struct { } func NewUiLib(engine *qml.Engine, eth *eth.Ethereum, assetPath string) *UiLib { - x := xeth.New(eth) + x := xeth.New(eth, nil) lib := &UiLib{XEth: x, engine: engine, eth: eth, assetPath: assetPath, jsEngine: javascript.NewJSRE(x), filterCallbacks: make(map[int][]int)} //, filters: make(map[int]*xeth.JSFilter)} lib.filterManager = filter.NewFilterManager(eth.EventMux()) go lib.filterManager.Start() @@ -91,24 +91,6 @@ func (self *UiLib) EvalJavascriptString(str string) string { return fmt.Sprintf("%v", value) } -func (ui *UiLib) OpenQml(path string) { - container := NewQmlApplication(path[7:], ui) - app := NewExtApplication(container, ui) - - go app.run() -} - -func (ui *UiLib) OpenHtml(path string) { - container := NewHtmlApplication(path, ui) - app := NewExtApplication(container, ui) - - go app.run() -} - -func (ui *UiLib) OpenBrowser() { - ui.OpenHtml("file://" + ui.AssetPath("ext/home.html")) -} - func (ui *UiLib) Muted(content string) { component, err := ui.engine.LoadFile(ui.AssetPath("qml/muted.qml")) if err != nil { diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index 99e60ff9e..a77c6ad4d 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -167,7 +167,7 @@ func KeyTasks(keyManager *crypto.KeyManager, KeyRing string, GenAddr bool, Secre func StartRpc(ethereum *eth.Ethereum, RpcListenAddress string, RpcPort int) { var err error - ethereum.RpcServer, err = rpchttp.NewRpcHttpServer(xeth.New(ethereum), RpcListenAddress, RpcPort) + ethereum.RpcServer, err = rpchttp.NewRpcHttpServer(xeth.New(ethereum, nil), RpcListenAddress, RpcPort) if err != nil { clilogger.Errorf("Could not start RPC interface (port %v): %v", RpcPort, err) } else { diff --git a/rpc/api.go b/rpc/api.go index ae1e1504f..70a8cf9b4 100644 --- a/rpc/api.go +++ b/rpc/api.go @@ -9,7 +9,6 @@ For each request type, define the following: package rpc import ( - "fmt" "math/big" "strings" "sync" @@ -23,7 +22,6 @@ import ( "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/event/filter" "github.com/ethereum/go-ethereum/state" - "github.com/ethereum/go-ethereum/ui" "github.com/ethereum/go-ethereum/xeth" ) @@ -721,14 +719,3 @@ func (self *EthereumApi) useState(statedb *state.StateDB) { self.eth = self.eth.UseState(statedb) } - -func t(f ui.Frontend) { - // Call the password dialog - ret, err := f.Call("PasswordDialog") - if err != nil { - fmt.Println(err) - } - // Get the first argument - t, _ := ret.Get(0) - fmt.Println("return:", t) -}