diff options
author | obscuren <geffobscura@gmail.com> | 2014-08-22 18:12:41 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-08-22 18:12:41 +0800 |
commit | 09c7d158d1180dc9ec042b67f8c1ecb1015a142e (patch) | |
tree | 55b6e96f3e7ff3a2ab0037eda1ce56282e508f46 | |
parent | 9131a7c65eca0951f25c7ea12865244c60090b92 (diff) | |
download | dexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.tar.gz dexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.tar.zst dexon-09c7d158d1180dc9ec042b67f8c1ecb1015a142e.zip |
Error window
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | ethereal/errors.go | 36 | ||||
-rw-r--r-- | ethereal/main.go | 20 | ||||
-rw-r--r-- | ethereum/main.go | 2 | ||||
-rw-r--r-- | utils/cmd.go | 11 |
5 files changed, 67 insertions, 4 deletions
@@ -7,7 +7,7 @@ Status](http://cpt-obvious.ethercasts.com:8010/buildstatusimage?builder=go-ether Ethereum Go Client © 2014 Jeffrey Wilcke. -Current state: Proof of Concept 0.6.4. +Current state: Proof of Concept 0.6.5. For the development package please see the [eth-go package](https://github.com/ethereum/eth-go). diff --git a/ethereal/errors.go b/ethereal/errors.go new file mode 100644 index 000000000..409b7a281 --- /dev/null +++ b/ethereal/errors.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" + "os" + + "gopkg.in/qml.v1" +) + +func ErrorWindow(err error) { + engine := qml.NewEngine() + component, e := engine.LoadString("local", qmlErr) + if e != nil { + fmt.Println("err:", err) + os.Exit(1) + } + + win := component.CreateWindow(nil) + win.Root().ObjectByName("label").Set("text", err.Error()) + win.Show() + win.Wait() +} + +const qmlErr = ` +import QtQuick 2.0; import QtQuick.Controls 1.0; +ApplicationWindow { + width: 600; height: 150; + flags: Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowCloseButtonHint + title: "Error" + Text { + x: parent.width / 2 - this.width / 2; + y: parent.height / 2 - this.height / 2; + objectName: "label"; + } +} +` diff --git a/ethereal/main.go b/ethereal/main.go index 4cb8630e8..3729dbdaf 100644 --- a/ethereal/main.go +++ b/ethereal/main.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "os" "runtime" @@ -12,7 +13,7 @@ import ( const ( ClientIdentifier = "Ethereal" - Version = "0.6.4" + Version = "0.6.5" ) var ethereum *eth.Ethereum @@ -28,6 +29,23 @@ func run() error { utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile) db := utils.NewDatabase() + err := utils.DBSanityCheck(db) + if err != nil { + engine := qml.NewEngine() + component, e := engine.LoadString("local", qmlErr) + if e != nil { + fmt.Println("err:", err) + os.Exit(1) + } + + win := component.CreateWindow(nil) + win.Root().ObjectByName("label").Set("text", err.Error()) + win.Show() + win.Wait() + + ErrorWindow(err) + os.Exit(1) + } keyManager := utils.NewKeyManager(KeyStore, Datadir, db) diff --git a/ethereum/main.go b/ethereum/main.go index b7c8ea1e7..937a2b399 100644 --- a/ethereum/main.go +++ b/ethereum/main.go @@ -13,7 +13,7 @@ import ( const ( ClientIdentifier = "Ethereum(G)" - Version = "0.6.4" + Version = "0.6.5" ) var logger = ethlog.NewLogger("CLI") diff --git a/utils/cmd.go b/utils/cmd.go index cda735c27..3f3948d60 100644 --- a/utils/cmd.go +++ b/utils/cmd.go @@ -80,6 +80,16 @@ func confirm(message string) bool { return r == "y" } +func DBSanityCheck(db ethutil.Database) error { + d, _ := db.Get([]byte("ProtocolVersion")) + protov := ethutil.NewValue(d).Uint() + if protov != eth.ProtocolVersion && protov != 0 { + return fmt.Errorf("Database version mismatch. Protocol(%d / %d). `rm -rf %s`", protov, eth.ProtocolVersion, ethutil.Config.ExecPath+"/database") + } + + return nil +} + func InitDataDir(Datadir string) { _, err := os.Stat(Datadir) if err != nil { @@ -112,7 +122,6 @@ func InitConfig(ConfigFile string, Datadir string, EnvPrefix string) *ethutil.Co func exit(err error) { status := 0 if err != nil { - fmt.Println(err) logger.Errorln("Fatal: ", err) status = 1 } |