forked from cerc-io/plugeth
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.
This commit is contained in:
parent
738d6e20f2
commit
20741a96ac
@ -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,
|
||||
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/**
|
||||
* @authors
|
||||
* Jeffrey Wilcke <i@jev.io>
|
||||
*/
|
||||
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)
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
@ -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,
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
13
rpc/api.go
13
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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user