aboutsummaryrefslogtreecommitdiffstats
path: root/ethereal/ui/ui_lib.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-07-01 19:45:39 +0800
committerobscuren <geffobscura@gmail.com>2014-07-01 19:45:39 +0800
commit253c23240b8cec56e2bb21072291e2f7ef1a49e9 (patch)
tree64503d09f1120ef2327a8184e46d5ee8bc7090bd /ethereal/ui/ui_lib.go
parent0ce9003ba77c0552c9058caa55d2fea6711ac18c (diff)
parent098f7f23ce62d3f0c60d30d325576de93795cc4b (diff)
downloadgo-tangerine-253c23240b8cec56e2bb21072291e2f7ef1a49e9.tar
go-tangerine-253c23240b8cec56e2bb21072291e2f7ef1a49e9.tar.gz
go-tangerine-253c23240b8cec56e2bb21072291e2f7ef1a49e9.tar.bz2
go-tangerine-253c23240b8cec56e2bb21072291e2f7ef1a49e9.tar.lz
go-tangerine-253c23240b8cec56e2bb21072291e2f7ef1a49e9.tar.xz
go-tangerine-253c23240b8cec56e2bb21072291e2f7ef1a49e9.tar.zst
go-tangerine-253c23240b8cec56e2bb21072291e2f7ef1a49e9.zip
Merge branch 'feature/keys' of https://github.com/ethersphere/go-ethereum into ethersphere-feature/keys
Conflicts: .gitignore README.md
Diffstat (limited to 'ethereal/ui/ui_lib.go')
-rw-r--r--ethereal/ui/ui_lib.go100
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()
+}