diff options
author | obscuren <geffobscura@gmail.com> | 2014-03-22 08:02:24 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-03-22 08:02:24 +0800 |
commit | 1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c (patch) | |
tree | d8be2c7b97a86f2b9949c4b4dc14ab2c2a34dc2e /ethereal/ui/ui_lib.go | |
parent | 22b4e9b6173437b28045d69e8fd0b468e526e559 (diff) | |
download | dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.gz dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.bz2 dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.lz dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.xz dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.tar.zst dexon-1f2547b8a7cfe100f64428d20f4bcf95eb9ecc5c.zip |
Major re-organisation.
The Ethereum node and Gui are now separated.
Diffstat (limited to 'ethereal/ui/ui_lib.go')
-rw-r--r-- | ethereal/ui/ui_lib.go | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/ethereal/ui/ui_lib.go b/ethereal/ui/ui_lib.go new file mode 100644 index 000000000..3997191fa --- /dev/null +++ b/ethereal/ui/ui_lib.go @@ -0,0 +1,76 @@ +package ethui + +import ( + "bitbucket.org/kardianos/osext" + "github.com/ethereum/eth-go" + "github.com/ethereum/eth-go/ethutil" + "github.com/niemeyer/qml" + "os" + "path" + "path/filepath" + "runtime" +) + +// UI Library that has some basic functionality exposed +type UiLib struct { + engine *qml.Engine + eth *eth.Ethereum + connected bool +} + +// Opens a QML file (external application) +func (ui *UiLib) Open(path string) { + component, err := ui.engine.LoadFile(path[7:]) + if err != nil { + ethutil.Config.Log.Debugln(err) + } + win := component.CreateWindow(nil) + + go func() { + win.Show() + win.Wait() + }() +} + +func (ui *UiLib) Connect(button qml.Object) { + if !ui.connected { + ui.eth.Start() + ui.connected = true + button.Set("enabled", false) + } +} + +func (ui *UiLib) ConnectToPeer(addr string) { + ui.eth.ConnectToPeer(addr) +} + +func (ui *UiLib) AssetPath(p string) string { + return AssetPath(p) +} + +func AssetPath(p string) string { + var base string + + // If the current working directory is the go-ethereum dir + // assume a debug build and use the source directory as + // asset directory. + pwd, _ := os.Getwd() + if pwd == path.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "ethereal") { + base = path.Join(pwd, "assets") + } else { + switch runtime.GOOS { + case "darwin": + // Get Binary Directory + exedir, _ := osext.ExecutableFolder() + base = filepath.Join(exedir, "../Resources") + case "linux": + base = "/usr/share/ethereal" + case "window": + fallthrough + default: + base = "." + } + } + + return path.Join(base, p) +} |