aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/mist/qml_container.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mist/qml_container.go')
-rw-r--r--cmd/mist/qml_container.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/cmd/mist/qml_container.go b/cmd/mist/qml_container.go
new file mode 100644
index 000000000..b0f4f6127
--- /dev/null
+++ b/cmd/mist/qml_container.go
@@ -0,0 +1,68 @@
+package main
+
+import (
+ "fmt"
+ "runtime"
+
+ "github.com/ethereum/go-ethereum/ethchain"
+ "github.com/ethereum/go-ethereum/ethpipe"
+ "github.com/ethereum/go-ethereum/ethstate"
+ "github.com/ethereum/go-ethereum/ethutil"
+ "gopkg.in/qml.v1"
+)
+
+type QmlApplication struct {
+ win *qml.Window
+ engine *qml.Engine
+ lib *UiLib
+ path string
+}
+
+func NewQmlApplication(path string, lib *UiLib) *QmlApplication {
+ engine := qml.NewEngine()
+ return &QmlApplication{engine: engine, path: path, lib: lib}
+}
+
+func (app *QmlApplication) Create() error {
+ path := string(app.path)
+
+ // For some reason for windows we get /c:/path/to/something, windows doesn't like the first slash but is fine with the others so we are removing it
+ if app.path[0] == '/' && runtime.GOOS == "windows" {
+ path = app.path[1:]
+ }
+
+ component, err := app.engine.LoadFile(path)
+ if err != nil {
+ logger.Warnln(err)
+ }
+ app.win = component.CreateWindow(nil)
+
+ return nil
+}
+
+func (app *QmlApplication) Destroy() {
+ app.engine.Destroy()
+}
+
+func (app *QmlApplication) NewWatcher(quitChan chan bool) {
+}
+
+// Events
+func (app *QmlApplication) NewBlock(block *ethchain.Block) {
+ pblock := &ethpipe.JSBlock{Number: int(block.BlockInfo().Number), Hash: ethutil.Bytes2Hex(block.Hash())}
+ app.win.Call("onNewBlockCb", pblock)
+}
+
+func (self *QmlApplication) Messages(msgs ethstate.Messages, id string) {
+ fmt.Println("IMPLEMENT QML APPLICATION MESSAGES METHOD")
+}
+
+// Getters
+func (app *QmlApplication) Engine() *qml.Engine {
+ return app.engine
+}
+func (app *QmlApplication) Window() *qml.Window {
+ return app.win
+}
+
+func (app *QmlApplication) Post(data string, s int) {}