aboutsummaryrefslogtreecommitdiffstats
path: root/ethereal/ui/gui.go
diff options
context:
space:
mode:
Diffstat (limited to 'ethereal/ui/gui.go')
-rw-r--r--ethereal/ui/gui.go107
1 files changed, 83 insertions, 24 deletions
diff --git a/ethereal/ui/gui.go b/ethereal/ui/gui.go
index 46bfa0133..65c87c4c2 100644
--- a/ethereal/ui/gui.go
+++ b/ethereal/ui/gui.go
@@ -24,7 +24,8 @@ type Gui struct {
eth *eth.Ethereum
// The public Ethereum library
- lib *EthLib
+ lib *EthLib
+ uiLib *UiLib
txDb *ethdb.LDBDatabase
@@ -75,19 +76,55 @@ 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
+ /*
+ var err error
+ var component qml.Object
+ firstRun := len(data) == 0
+
+ if firstRun {
+ component, err = gui.engine.LoadFile(uiLib.AssetPath("qml/first_run.qml"))
+ } else {
+ component, err = gui.engine.LoadFile(uiLib.AssetPath("qml/wallet.qml"))
+ }
+ 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)
+ }
+
+ gui.win = component.CreateWindow(nil)
+ uiLib.win = gui.win
+ db := &Debugger{gui.win, make(chan bool)}
+ gui.lib.Db = db
+ uiLib.Db = db
+
+ // Add the ui as a log system so we can log directly to the UGI
+ ethutil.Config.Log.AddLogSystem(gui)
+
+ // Loads previous blocks
+ if firstRun == false {
+ go gui.setInitialBlockChain()
+ go gui.readPreviousTransactions()
+ go gui.update()
+ }
- if firstRun {
- component, err = gui.engine.LoadFile(uiLib.AssetPath("qml/first_run.qml"))
+ gui.win.Show()
+ gui.win.Wait()
+
+ gui.eth.Stop()
+ */
+
+ var win *qml.Window
+ var err error
+ if len(data) == 0 {
+ win, err = gui.showKeyImport(context)
} else {
- component, err = gui.engine.LoadFile(uiLib.AssetPath("qml/wallet.qml"))
+ 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'")
@@ -95,26 +132,48 @@ func (gui *Gui) Start(assetPath string) {
panic(err)
}
- gui.win = component.CreateWindow(nil)
- uiLib.win = gui.win
- db := &Debugger{gui.win, make(chan bool)}
- gui.lib.Db = db
- uiLib.Db = db
+ 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
+ }
- // Add the ui as a log system so we can log directly to the UGI
- ethutil.Config.Log.AddLogSystem(gui)
+ win := gui.createWindow(component)
- // Loads previous blocks
- if firstRun == false {
- go gui.setInitialBlockChain()
- go gui.readPreviousTransactions()
- go gui.update()
+ 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
}
- gui.win.Show()
- gui.win.Wait()
+ return gui.createWindow(component), nil
+}
- gui.eth.Stop()
+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() {