|
|
|
@ -25,6 +25,7 @@ type Gui struct { |
|
|
|
|
|
|
|
|
|
// The public Ethereum library
|
|
|
|
|
lib *EthLib |
|
|
|
|
uiLib *UiLib |
|
|
|
|
|
|
|
|
|
txDb *ethdb.LDBDatabase |
|
|
|
|
|
|
|
|
@ -75,11 +76,12 @@ func (gui *Gui) Start(assetPath string) { |
|
|
|
|
|
|
|
|
|
// Expose the eth library and the ui library to QML
|
|
|
|
|
context.SetVar("eth", gui) |
|
|
|
|
uiLib := NewUiLib(gui.engine, gui.eth, assetPath) |
|
|
|
|
context.SetVar("ui", uiLib) |
|
|
|
|
gui.uiLib = NewUiLib(gui.engine, gui.eth, assetPath) |
|
|
|
|
context.SetVar("ui", gui.uiLib) |
|
|
|
|
|
|
|
|
|
// Load the main QML interface
|
|
|
|
|
data, _ := ethutil.Config.Db.Get([]byte("KeyRing")) |
|
|
|
|
/* |
|
|
|
|
var err error |
|
|
|
|
var component qml.Object |
|
|
|
|
firstRun := len(data) == 0 |
|
|
|
@ -115,6 +117,63 @@ func (gui *Gui) Start(assetPath string) { |
|
|
|
|
gui.win.Wait() |
|
|
|
|
|
|
|
|
|
gui.eth.Stop() |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
var win *qml.Window |
|
|
|
|
var err error |
|
|
|
|
if len(data) == 0 { |
|
|
|
|
win, err = gui.showKeyImport(context) |
|
|
|
|
} else { |
|
|
|
|
win, err = gui.showWallet(context) |
|
|
|
|
} |
|
|
|
|
if err != nil { |
|
|
|
|
ethutil.Config.Log.Infoln("FATAL: asset not found: you can set an alternative asset path on on the command line using option 'asset_path'") |
|
|
|
|
|
|
|
|
|
panic(err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
win.Show() |
|
|
|
|
win.Wait() |
|
|
|
|
|
|
|
|
|
gui.eth.Stop() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (gui *Gui) showWallet(context *qml.Context) (*qml.Window, error) { |
|
|
|
|
component, err := gui.engine.LoadFile(gui.uiLib.AssetPath("qml/wallet.qml")) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
win := gui.createWindow(component) |
|
|
|
|
|
|
|
|
|
go gui.setInitialBlockChain() |
|
|
|
|
go gui.readPreviousTransactions() |
|
|
|
|
go gui.update() |
|
|
|
|
|
|
|
|
|
return win, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (gui *Gui) showKeyImport(context *qml.Context) (*qml.Window, error) { |
|
|
|
|
context.SetVar("lib", gui.lib) |
|
|
|
|
component, err := gui.engine.LoadFile(gui.uiLib.AssetPath("qml/first_run.qml")) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return gui.createWindow(component), nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (gui *Gui) createWindow(comp qml.Object) *qml.Window { |
|
|
|
|
win := comp.CreateWindow(nil) |
|
|
|
|
|
|
|
|
|
gui.win = win |
|
|
|
|
gui.uiLib.win = win |
|
|
|
|
|
|
|
|
|
db := &Debugger{gui.win, make(chan bool)} |
|
|
|
|
gui.lib.Db = db |
|
|
|
|
gui.uiLib.Db = db |
|
|
|
|
|
|
|
|
|
return gui.win |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (gui *Gui) setInitialBlockChain() { |
|
|
|
|