mirror of https://github.com/ethereum/go-ethereum
parent
6d5d539a85
commit
aec3e26ea0
@ -0,0 +1,48 @@ |
||||
// Helper function for generating pseudo callbacks and sending data to the QML part of the application
|
||||
function postData(data, cb) { |
||||
data._seed = Math.floor(Math.random() * 1000000) |
||||
if(cb) { |
||||
eth._callbacks[data._seed] = cb; |
||||
} |
||||
|
||||
navigator.qt.postMessage(JSON.stringify(data)); |
||||
} |
||||
|
||||
// Main Ethereum library
|
||||
window.eth = { |
||||
prototype: Object(), |
||||
|
||||
send: function(cb) { |
||||
document.getElementById("out").innerHTML = "clicked"; |
||||
postData({message: "Hello world"}, cb); |
||||
} |
||||
} |
||||
window.eth._callbacks = {} |
||||
|
||||
function debug(/**/) { |
||||
var args = arguments; |
||||
var msg = "" |
||||
for(var i=0; i<args.length; i++){ |
||||
if(typeof args[i] == "object") { |
||||
msg += " " + JSON.stringify(args[i]) |
||||
} else { |
||||
msg += args[i] |
||||
} |
||||
} |
||||
|
||||
document.getElementById("debug").innerHTML += "<br>" + msg |
||||
} |
||||
|
||||
navigator.qt.onmessage = function(ev) { |
||||
var data = JSON.parse(ev.data) |
||||
|
||||
if(data._seed) { |
||||
var cb = eth._callbacks[data._seed]; |
||||
if(cb) { |
||||
// Call the callback
|
||||
cb(data.data); |
||||
// Remove the "trigger" callback
|
||||
delete eth._callbacks[ev._seed]; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,85 @@ |
||||
import QtQuick 2.0 |
||||
import QtWebKit 3.0 |
||||
import QtWebKit.experimental 1.0 |
||||
import QtQuick.Controls 1.0; |
||||
import QtQuick.Layouts 1.0; |
||||
import QtQuick.Window 2.1; |
||||
import Ethereum 1.0 |
||||
|
||||
ApplicationWindow { |
||||
id: window |
||||
title: "Webapp" |
||||
width: 900 |
||||
height: 600 |
||||
minimumHeight: 300 |
||||
property alias url: webview.url |
||||
|
||||
Item { |
||||
id: root |
||||
anchors.fill: parent |
||||
state: "inspectorShown" |
||||
|
||||
WebView { |
||||
id: webview |
||||
anchors { |
||||
left: parent.left |
||||
right: parent.right |
||||
bottom: sizeGrip.top |
||||
top: parent.top |
||||
} |
||||
onTitleChanged: { window.title = title } |
||||
experimental.preferences.javascriptEnabled: true |
||||
experimental.preferences.navigatorQtObjectEnabled: true |
||||
experimental.preferences.developerExtrasEnabled: true |
||||
experimental.userScripts: [ui.assetPath("ethereum.js")] |
||||
experimental.onMessageReceived: { |
||||
console.log("[onMessageReceived]: ", message.data) |
||||
var data = JSON.parse(message.data) |
||||
|
||||
webview.experimental.postMessage(JSON.stringify({data: {message: data.message}, _seed: data._seed})) |
||||
} |
||||
} |
||||
|
||||
Rectangle { |
||||
id: sizeGrip |
||||
color: "gray" |
||||
visible: true |
||||
height: 10 |
||||
anchors { |
||||
left: root.left |
||||
right: root.right |
||||
} |
||||
y: Math.round(root.height * 2 / 3) |
||||
|
||||
MouseArea { |
||||
anchors.fill: parent |
||||
drag.target: sizeGrip |
||||
drag.minimumY: 0 |
||||
drag.maximumY: root.height |
||||
drag.axis: Drag.YAxis |
||||
} |
||||
} |
||||
|
||||
WebView { |
||||
id: inspector |
||||
visible: true |
||||
url: webview.experimental.remoteInspectorUrl |
||||
anchors { |
||||
left: root.left |
||||
right: root.right |
||||
top: sizeGrip.bottom |
||||
bottom: root.bottom |
||||
} |
||||
} |
||||
|
||||
states: [ |
||||
State { |
||||
name: "inspectorShown" |
||||
PropertyChanges { |
||||
target: inspector |
||||
url: webview.experimental.remoteInspectorUrl |
||||
} |
||||
} |
||||
] |
||||
} |
||||
} |
@ -0,0 +1,27 @@ |
||||
<html> |
||||
<head> |
||||
<title>Epic Works (TM)</title> |
||||
<body> |
||||
<h1>It just works!</h1> |
||||
|
||||
<p>Play with me...</p> |
||||
|
||||
<button onclick="test();">test</button> |
||||
<div id="out"></div> |
||||
<div id="in"></div> |
||||
<div id="debug"></div> |
||||
|
||||
<script type="text/javascript"> |
||||
function test() { |
||||
eth.send(function(data) { |
||||
debug(data) |
||||
document.getElementById("in").innerHTML ="and the other way around " + data.message; |
||||
}) |
||||
} |
||||
|
||||
|
||||
</script> |
||||
|
||||
</body> |
||||
</html> |
||||
|
Loading…
Reference in new issue