diff options
Diffstat (limited to 'ethereal/ui/ui_lib.go')
-rw-r--r-- | ethereal/ui/ui_lib.go | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/ethereal/ui/ui_lib.go b/ethereal/ui/ui_lib.go new file mode 100644 index 000000000..892c1f065 --- /dev/null +++ b/ethereal/ui/ui_lib.go @@ -0,0 +1,100 @@ +package ethui + +import ( + "github.com/ethereum/eth-go" + "github.com/ethereum/eth-go/ethutil" + "github.com/go-qml/qml" + "path" +) + +type memAddr struct { + Num string + Value string +} + +// UI Library that has some basic functionality exposed +type UiLib struct { + engine *qml.Engine + eth *eth.Ethereum + connected bool + assetPath string + // The main application window + win *qml.Window + Db *Debugger + DbWindow *DebuggerWindow +} + +func NewUiLib(engine *qml.Engine, eth *eth.Ethereum, assetPath string) *UiLib { + return &UiLib{engine: engine, eth: eth, assetPath: assetPath} +} + +func (ui *UiLib) OpenQml(path string) { + container := NewQmlApplication(path[7:], ui) + app := NewExtApplication(container, ui) + + go app.run() +} + +func (ui *UiLib) OpenHtml(path string) { + container := NewHtmlApplication(path, ui) + app := NewExtApplication(container, ui) + + go app.run() +} + +func (ui *UiLib) Muted(content string) { + component, err := ui.engine.LoadFile(ui.AssetPath("qml/muted.qml")) + if err != nil { + logger.Debugln(err) + + return + } + win := component.CreateWindow(nil) + go func() { + path := "file://" + ui.AssetPath("muted/index.html") + win.Set("url", path) + + win.Show() + win.Wait() + }() +} + +func (ui *UiLib) Connect(button qml.Object) { + if !ui.connected { + ui.eth.Start(true) + 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 path.Join(ui.assetPath, p) +} + +func (self *UiLib) StartDbWithContractAndData(contractHash, data string) { + dbWindow := NewDebuggerWindow(self) + object := self.eth.StateManager().CurrentState().GetStateObject(ethutil.Hex2Bytes(contractHash)) + if len(object.Script()) > 0 { + dbWindow.SetCode("0x" + ethutil.Bytes2Hex(object.Script())) + } + dbWindow.SetData("0x" + data) + + dbWindow.Show() +} + +func (self *UiLib) StartDbWithCode(code string) { + dbWindow := NewDebuggerWindow(self) + dbWindow.SetCode("0x" + code) + dbWindow.Show() +} + +func (self *UiLib) StartDebugger() { + dbWindow := NewDebuggerWindow(self) + //self.DbWindow = dbWindow + + dbWindow.Show() +} |