diff options
author | obscuren <geffobscura@gmail.com> | 2015-01-22 07:24:20 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-01-22 07:24:20 +0800 |
commit | 465b0a79d8fa2550e6104d0d86e357b123f74a39 (patch) | |
tree | c048ce8180f3bfad6115b24992a24a8c271dee5a | |
parent | 87f50659db7a4bf194769b05f541d2ccf02f4fc8 (diff) | |
download | dexon-465b0a79d8fa2550e6104d0d86e357b123f74a39.tar dexon-465b0a79d8fa2550e6104d0d86e357b123f74a39.tar.gz dexon-465b0a79d8fa2550e6104d0d86e357b123f74a39.tar.bz2 dexon-465b0a79d8fa2550e6104d0d86e357b123f74a39.tar.lz dexon-465b0a79d8fa2550e6104d0d86e357b123f74a39.tar.xz dexon-465b0a79d8fa2550e6104d0d86e357b123f74a39.tar.zst dexon-465b0a79d8fa2550e6104d0d86e357b123f74a39.zip |
Updated browser & pass view to callback function
-rw-r--r-- | cmd/mist/assets/qml/browser.qml | 471 | ||||
-rw-r--r-- | cmd/mist/ui_lib.go | 5 |
2 files changed, 245 insertions, 231 deletions
diff --git a/cmd/mist/assets/qml/browser.qml b/cmd/mist/assets/qml/browser.qml index a89c3c97d..c8f291e22 100644 --- a/cmd/mist/assets/qml/browser.qml +++ b/cmd/mist/assets/qml/browser.qml @@ -9,9 +9,9 @@ import Ethereum 1.0 Rectangle { id: window - objectName: "browserView" - anchors.fill: parent - color: "#00000000" + objectName: "browserView" + anchors.fill: parent + color: "#00000000" property var title: "Browser" property var iconSource: "../browser.png" @@ -139,311 +139,324 @@ Rectangle { } } - // Border - Rectangle { - id: divider - anchors { - left: parent.left - right: parent.right - top: navBar.bottom - } - z: -1 - height: 1 - color: "#CCCCCC" - } + // Border + Rectangle { + id: divider + anchors { + left: parent.left + right: parent.right + top: navBar.bottom + } + z: -1 + height: 1 + color: "#CCCCCC" + } - WebView { - objectName: "webView" - id: webview + ScrollView { anchors { left: parent.left right: parent.right bottom: parent.bottom top: divider.bottom } + WebView { + objectName: "webView" + id: webview + anchors.fill: parent - function injectJs(js) { - webview.experimental.navigatorQtObjectEnabled = true; - webview.experimental.evaluateJavaScript(js) - webview.experimental.javascriptEnabled = true; - } + function injectJs(js) { + webview.experimental.navigatorQtObjectEnabled = true; + webview.experimental.evaluateJavaScript(js) + webview.experimental.javascriptEnabled = true; + } - function sendMessage(data) { - webview.experimental.postMessage(JSON.stringify(data)) - } + function sendMessage(data) { + webview.experimental.postMessage(JSON.stringify(data)) + } + Component.onCompleted: { + for (var i in experimental.preferences) { + console.log(i) + } + } - experimental.preferences.javascriptEnabled: true - experimental.preferences.webGLEnabled: true - experimental.itemSelector: MouseArea { - // To avoid conflicting with ListView.model when inside Initiator context. - property QtObject selectorModel: model - anchors.fill: parent - onClicked: selectorModel.reject() - - Menu { - visible: true - id: itemSelector - - Instantiator { - model: selectorModel.items - delegate: MenuItem { - text: model.text - onTriggered: { - selectorModel.accept(index) + experimental.preferences.javascriptEnabled: true + experimental.preferences.webAudioEnabled: true + experimental.preferences.pluginsEnabled: true + experimental.preferences.navigatorQtObjectEnabled: true + experimental.preferences.developerExtrasEnabled: true + experimental.preferences.webGLEnabled: true + experimental.preferences.notificationsEnabled: true + experimental.preferences.localStorageEnabled: true + experimental.userAgent:"Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Mist/0.1 Safari/537.36" + + experimental.itemSelector: MouseArea { + // To avoid conflicting with ListView.model when inside Initiator context. + property QtObject selectorModel: model + anchors.fill: parent + onClicked: selectorModel.reject() + + Menu { + visible: true + id: itemSelector + + Instantiator { + model: selectorModel.items + delegate: MenuItem { + text: model.text + onTriggered: { + selectorModel.accept(index) + } } + onObjectAdded: itemSelector.insertItem(index, object) + onObjectRemoved: itemSelector.removeItem(object) } - onObjectAdded: itemSelector.insertItem(index, object) - onObjectRemoved: itemSelector.removeItem(object) } - } - Component.onCompleted: { - itemSelector.popup() + Component.onCompleted: { + itemSelector.popup() + } } - } - experimental.preferences.webAudioEnabled: true - experimental.preferences.navigatorQtObjectEnabled: true - experimental.preferences.developerExtrasEnabled: true - experimental.userScripts: ["../ext/q.js", "../ext/ethereum.js/lib/web3.js", "../ext/ethereum.js/lib/qt.js", "../ext/setup.js"] - experimental.onMessageReceived: { - console.log("[onMessageReceived]: ", message.data) - // TODO move to messaging.js - var data = JSON.parse(message.data) + experimental.userScripts: ["../ext/q.js", "../ext/ethereum.js/lib/web3.js", "../ext/ethereum.js/lib/qt.js", "../ext/setup.js"] + experimental.onMessageReceived: { + console.log("[onMessageReceived]: ", message.data) + // TODO move to messaging.js + var data = JSON.parse(message.data) - try { - switch(data.call) { - case "eth_compile": - postData(data._id, eth.compile(data.args[0])) - break + try { + switch(data.call) { + case "eth_compile": + postData(data._id, eth.compile(data.args[0])) + break - case "eth_coinbase": - postData(data._id, eth.coinBase()) + case "eth_coinbase": + postData(data._id, eth.coinBase()) - case "eth_account": - postData(data._id, eth.key().address); + case "eth_account": + postData(data._id, eth.key().address); - case "eth_istening": - postData(data._id, eth.isListening()) + case "eth_istening": + postData(data._id, eth.isListening()) - break + break - case "eth_mining": - postData(data._id, eth.isMining()) + case "eth_mining": + postData(data._id, eth.isMining()) - break + break - case "eth_peerCount": - postData(data._id, eth.peerCount()) + case "eth_peerCount": + postData(data._id, eth.peerCount()) - break + break - case "eth_countAt": - require(1) - postData(data._id, eth.txCountAt(data.args[0])) + case "eth_countAt": + require(1) + postData(data._id, eth.txCountAt(data.args[0])) - break + break - case "eth_codeAt": - require(1) - var code = eth.codeAt(data.args[0]) - postData(data._id, code); + case "eth_codeAt": + require(1) + var code = eth.codeAt(data.args[0]) + postData(data._id, code); - break + break - case "eth_blockByNumber": - require(1) - var block = eth.blockByNumber(data.args[0]) - postData(data._id, block) - break + case "eth_blockByNumber": + require(1) + var block = eth.blockByNumber(data.args[0]) + postData(data._id, block) + break - case "eth_blockByHash": - require(1) - var block = eth.blockByHash(data.args[0]) - postData(data._id, block) - break + case "eth_blockByHash": + require(1) + var block = eth.blockByHash(data.args[0]) + postData(data._id, block) + break - require(2) - var block = eth.blockByHash(data.args[0]) - postData(data._id, block.transactions[data.args[1]]) - break + require(2) + var block = eth.blockByHash(data.args[0]) + postData(data._id, block.transactions[data.args[1]]) + break - case "eth_transactionByHash": - case "eth_transactionByNumber": - require(2) + case "eth_transactionByHash": + case "eth_transactionByNumber": + require(2) - var block; - if (data.call === "transactionByHash") - block = eth.blockByHash(data.args[0]) - else - block = eth.blockByNumber(data.args[0]) + var block; + if (data.call === "transactionByHash") + block = eth.blockByHash(data.args[0]) + else + block = eth.blockByNumber(data.args[0]) - var tx = block.transactions.get(data.args[1]) + var tx = block.transactions.get(data.args[1]) - postData(data._id, tx) - break + postData(data._id, tx) + break - case "eth_uncleByHash": - case "eth_uncleByNumber": - require(2) + case "eth_uncleByHash": + case "eth_uncleByNumber": + require(2) - var block; - if (data.call === "uncleByHash") - block = eth.blockByHash(data.args[0]) - else - block = eth.blockByNumber(data.args[0]) + var block; + if (data.call === "uncleByHash") + block = eth.blockByHash(data.args[0]) + else + block = eth.blockByNumber(data.args[0]) - var uncle = block.uncles.get(data.args[1]) + var uncle = block.uncles.get(data.args[1]) - postData(data._id, uncle) + postData(data._id, uncle) - break + break - case "transact": - require(5) + case "transact": + require(5) - var tx = eth.transact(data.args) - postData(data._id, tx) + var tx = eth.transact(data.args) + postData(data._id, tx) - break + break - case "eth_stateAt": - require(2); + case "eth_stateAt": + require(2); - var storage = eth.storageAt(data.args[0], data.args[1]); - postData(data._id, storage) + var storage = eth.storageAt(data.args[0], data.args[1]); + postData(data._id, storage) - break + break - case "eth_call": - require(1); - var ret = eth.call(data.args) - postData(data._id, ret) - break + case "eth_call": + require(1); + var ret = eth.call(data.args) + postData(data._id, ret) + break - case "eth_balanceAt": - require(1); + case "eth_balanceAt": + require(1); - postData(data._id, eth.balanceAt(data.args[0])); - break + postData(data._id, eth.balanceAt(data.args[0])); + break - case "eth_watch": - require(2) - eth.watch(data.args[0], data.args[1]) + case "eth_watch": + require(2) + eth.watch(data.args[0], data.args[1]) - case "eth_disconnect": - require(1) - postData(data._id, null) - break; + case "eth_disconnect": + require(1) + postData(data._id, null) + break; - case "eth_newFilterString": - require(1) - var id = eth.newFilterString(data.args[0]) - postData(data._id, id); - break; + case "eth_newFilterString": + require(1) + var id = eth.newFilterString(data.args[0]) + postData(data._id, id); + break; - case "eth_newFilter": - require(1) - var id = eth.newFilter(data.args[0]) + case "eth_newFilter": + require(1) + var id = eth.newFilter(data.args[0]) - postData(data._id, id); - break; + postData(data._id, id); + break; - case "eth_filterLogs": - require(1); + case "eth_filterLogs": + require(1); - var messages = eth.messages(data.args[0]); - var m = JSON.parse(JSON.parse(JSON.stringify(messages))) - postData(data._id, m); + var messages = eth.messages(data.args[0]); + var m = JSON.parse(JSON.parse(JSON.stringify(messages))) + postData(data._id, m); - break; + break; - case "eth_deleteFilter": - require(1); - eth.uninstallFilter(data.args[0]) - break; + case "eth_deleteFilter": + require(1); + eth.uninstallFilter(data.args[0]) + break; - case "shh_newFilter": - require(1); - var id = shh.watch(data.args[0], window); - postData(data._id, id); - break; + case "shh_newFilter": + require(1); + var id = shh.watch(data.args[0], window); + postData(data._id, id); + break; - case "shh_newIdentity": - var id = shh.newIdentity() - postData(data._id, id) + case "shh_newIdentity": + var id = shh.newIdentity() + postData(data._id, id) - break + break - case "shh_post": - require(1); + case "shh_post": + require(1); - var params = data.args[0]; - var fields = ["payload", "to", "from"]; - for(var i = 0; i < fields.length; i++) { - params[fields[i]] = params[fields[i]] || ""; - } - if(typeof params.payload !== "object") { params.payload = [params.payload]; } //params.payload = params.payload.join(""); } - params.topics = params.topics || []; - params.priority = params.priority || 1000; - params.ttl = params.ttl || 100; + var params = data.args[0]; + var fields = ["payload", "to", "from"]; + for(var i = 0; i < fields.length; i++) { + params[fields[i]] = params[fields[i]] || ""; + } + if(typeof params.payload !== "object") { params.payload = [params.payload]; } //params.payload = params.payload.join(""); } + params.topics = params.topics || []; + params.priority = params.priority || 1000; + params.ttl = params.ttl || 100; - shh.post(params.payload, params.to, params.from, params.topics, params.priority, params.ttl); + shh.post(params.payload, params.to, params.from, params.topics, params.priority, params.ttl); - break; + break; - case "shh_getMessages": - require(1); + case "shh_getMessages": + require(1); - var m = shh.messages(data.args[0]); - var messages = JSON.parse(JSON.parse(JSON.stringify(m))); - postData(data._id, messages); + var m = shh.messages(data.args[0]); + var messages = JSON.parse(JSON.parse(JSON.stringify(m))); + postData(data._id, messages); - break; + break; - case "ssh_newGroup": - postData(data._id, ""); - break; - } - } catch(e) { - console.log(data.call + ": " + e) + case "ssh_newGroup": + postData(data._id, ""); + break; + } + } catch(e) { + console.log(data.call + ": " + e) - postData(data._id, null); + postData(data._id, null); + } } - } - function post(seed, data) { - postData(data._id, data) - } + function post(seed, data) { + postData(data._id, data) + } - function require(args, num) { - if(args.length < num) { - throw("required argument count of "+num+" got "+args.length); + function require(args, num) { + if(args.length < num) { + throw("required argument count of "+num+" got "+args.length); + } + } + function postData(seed, data) { + webview.experimental.postMessage(JSON.stringify({data: data, _id: seed})) + } + function postEvent(event, id, data) { + webview.experimental.postMessage(JSON.stringify({data: data, _id: id, _event: event})) } - } - function postData(seed, data) { - webview.experimental.postMessage(JSON.stringify({data: data, _id: seed})) - } - function postEvent(event, id, data) { - webview.experimental.postMessage(JSON.stringify({data: data, _id: id, _event: event})) - } - function onWatchedCb(data, id) { - var messages = JSON.parse(data) - postEvent("watched:"+id, messages) - } + function onWatchedCb(data, id) { + var messages = JSON.parse(data) + postEvent("watched:"+id, messages) + } - function onNewBlockCb(block) { - postEvent("block:new", block) - } - function onObjectChangeCb(stateObject) { - postEvent("object:"+stateObject.address(), stateObject) - } - function onStorageChangeCb(storageObject) { - var ev = ["storage", storageObject.stateAddress, storageObject.address].join(":"); - postEvent(ev, [storageObject.address, storageObject.value]) + function onNewBlockCb(block) { + postEvent("block:new", block) + } + function onObjectChangeCb(stateObject) { + postEvent("object:"+stateObject.address(), stateObject) + } + function onStorageChangeCb(storageObject) { + var ev = ["storage", storageObject.stateAddress, storageObject.address].join(":"); + postEvent(ev, [storageObject.address, storageObject.value]) + } } } diff --git a/cmd/mist/ui_lib.go b/cmd/mist/ui_lib.go index c88c4dab6..596f8442a 100644 --- a/cmd/mist/ui_lib.go +++ b/cmd/mist/ui_lib.go @@ -312,10 +312,11 @@ func (self *UiLib) ToAscii(data string) string { } /// Ethereum filter methods -func (self *UiLib) NewFilter(object map[string]interface{}) (id int) { +func (self *UiLib) NewFilter(object map[string]interface{}, view *qml.Common) (id int) { filter := qt.NewFilterFromMap(object, self.eth) filter.MessageCallback = func(messages state.Messages) { - self.win.Root().Call("invokeFilterCallback", xeth.ToJSMessages(messages), id) + view.Call("messages", xeth.ToJSMessages(messages), id) + //self.win.Root().Call("invokeFilterCallback", xeth.ToJSMessages(messages), id) } id = self.filterManager.InstallFilter(filter) return id |