aboutsummaryrefslogblamecommitdiffstats
path: root/cmd/mist/qml_container.go
blob: b0f4f6127d2413711733d5eaf5446ae1ca20126d (plain) (tree)
1
2
3
4
5
6
7
8
9
10
            

        


                 



                                                  
                         














                                                                    


                                                                                                                                                           
                                                            



                                                   
                       
                                  














                                                            
                                                                                                                


                                            



                                                                         






                                                 

                                                      
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) {}