func (gui *Gui) Start(assetPath string) { defer gui.txDb.Close() // Register ethereum functions qml.RegisterTypes("Ethereum", 1, 0, []qml.TypeSpec{{ Init: func(p *ethpub.PBlock, obj qml.Object) { p.Number = 0; p.Hash = "" }, }, { Init: func(p *ethpub.PTx, obj qml.Object) { p.Value = ""; p.Hash = ""; p.Address = "" }, }, { Init: func(p *ethpub.KeyVal, obj qml.Object) { p.Key = ""; p.Value = "" }, }}) // Create a new QML engine gui.engine = qml.NewEngine() context := gui.engine.Context() // Expose the eth library and the ui library to QML context.SetVar("eth", gui) context.SetVar("pub", gui.pub) 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 win *qml.Window var err error var addlog = false if len(data) == 0 { win, err = gui.showKeyImport(context) } else { win, err = gui.showWallet(context) addlog = true } if err != nil { logger.Errorln("asset not found: you can set an alternative asset path on the command line using option 'asset_path'", err) panic(err) } logger.Infoln("Starting GUI") gui.open = true win.Show() // only add the gui logger after window is shown otherwise slider wont be shown if addlog { ethlog.AddLogSystem(gui) } win.Wait() // need to silence gui logger after window closed otherwise logsystem hangs (but do not save loglevel) gui.logLevel = ethlog.Silence gui.open = false }
func NewDebuggerWindow(lib *UiLib) *DebuggerWindow { engine := qml.NewEngine() component, err := engine.LoadFile(lib.AssetPath("debugger/debugger.qml")) if err != nil { fmt.Println(err) return nil } win := component.CreateWindow(nil) w := &DebuggerWindow{engine: engine, win: win, lib: lib, vm: ðchain.Vm{}} w.Db = NewDebugger(w) return w }
func NewQmlApplication(path string, lib *UiLib) *QmlApplication { engine := qml.NewEngine() return &QmlApplication{engine: engine, path: path, lib: lib} }
func NewHtmlApplication(path string, lib *UiLib) *HtmlApplication { engine := qml.NewEngine() return &HtmlApplication{engine: engine, lib: lib, path: path} }