func main() { runtime.GOMAXPROCS(runtime.NumCPU()) // This is a bit of a cheat, but ey! os.Setenv("QTWEBKIT_INSPECTOR_SERVER", "127.0.0.1:99999") var interrupted = false utils.RegisterInterrupt(func(os.Signal) { interrupted = true }) utils.HandleInterrupt() if err := app.Run(os.Args); err != nil { fmt.Fprintln(os.Stderr, "Error: ", err) } // we need to run the interrupt callbacks in case gui is closed // this skips if we got here by actual interrupt stopping the GUI if !interrupted { utils.RunInterruptCallbacks(os.Interrupt) } logger.Flush() }
func run(ctx *cli.Context) { tstart := time.Now() // TODO: show qml popup instead of exiting if initialization fails. cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx) cfg.Shh = true ethereum, err := eth.New(cfg) if err != nil { utils.Fatalf("%v", err) } utils.StartRPC(ethereum, ctx) go utils.StartEthereum(ethereum) fmt.Println("initializing eth stack took", time.Since(tstart)) // Open the window qml.Run(func() error { webengine.Initialize() gui := NewWindow(ethereum) utils.RegisterInterrupt(func(os.Signal) { gui.Stop() }) // gui blocks the main thread gui.Start(ctx.GlobalString(assetPathFlag.Name), ctx.GlobalString(utils.JSpathFlag.Name)) return nil }) }