17 changed files with 210 additions and 40 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,76 @@ |
|||||
|
<!doctype> |
||||
|
<html> |
||||
|
|
||||
|
<head> |
||||
|
<script type="text/javascript" src="js/bignumber.js/bignumber.min.js"></script> |
||||
|
<script type="text/javascript" src="../dist/ethereum.js"></script> |
||||
|
<script type="text/javascript"> |
||||
|
|
||||
|
var web3 = require('web3'); |
||||
|
web3.setProvider(new web3.providers.HttpSyncProvider()); |
||||
|
|
||||
|
// solidity source code |
||||
|
var source = "" + |
||||
|
"contract test {\n" + |
||||
|
" function multiply(uint[] a) returns(uint d) {\n" + |
||||
|
" return a[0] + a[1];\n" + |
||||
|
" }\n" + |
||||
|
"}\n"; |
||||
|
|
||||
|
// contract description, this will be autogenerated somehow |
||||
|
var desc = [{ |
||||
|
"name": "multiply(uint256[])", |
||||
|
"type": "function", |
||||
|
"inputs": [ |
||||
|
{ |
||||
|
"name": "a", |
||||
|
"type": "uint256[]" |
||||
|
} |
||||
|
], |
||||
|
"outputs": [ |
||||
|
{ |
||||
|
"name": "d", |
||||
|
"type": "uint256" |
||||
|
} |
||||
|
] |
||||
|
}]; |
||||
|
|
||||
|
var contract; |
||||
|
|
||||
|
function createExampleContract() { |
||||
|
// hide create button |
||||
|
document.getElementById('create').style.visibility = 'hidden'; |
||||
|
document.getElementById('source').innerText = source; |
||||
|
|
||||
|
// create contract |
||||
|
var address = web3.eth.transact({code: web3.eth.solidity(source)}); |
||||
|
contract = web3.eth.contract(address, desc); |
||||
|
document.getElementById('call').style.visibility = 'visible'; |
||||
|
} |
||||
|
|
||||
|
function callExampleContract() { |
||||
|
// this should be generated by ethereum |
||||
|
var param = parseInt(document.getElementById('value').value); |
||||
|
var param2 = parseInt(document.getElementById('value2').value); |
||||
|
|
||||
|
// call the contract |
||||
|
var res = contract.call().multiply([param, param2]); |
||||
|
document.getElementById('result').innerText = res.toString(10); |
||||
|
} |
||||
|
|
||||
|
</script> |
||||
|
</head> |
||||
|
<body> |
||||
|
<h1>contract</h1> |
||||
|
<div id="source"></div> |
||||
|
<div id='create'> |
||||
|
<button type="button" onClick="createExampleContract();">create example contract</button> |
||||
|
</div> |
||||
|
<div id='call' style='visibility: hidden;'> |
||||
|
<input type="number" id="value" onkeyup='callExampleContract()'></input> |
||||
|
<input type="number" id="value2" onkeyup='callExampleContract()'></input> |
||||
|
</div> |
||||
|
<div id="result"></div> |
||||
|
</body> |
||||
|
</html> |
||||
|
|
@ -0,0 +1,31 @@ |
|||||
|
import QtQuick 2.2 |
||||
|
import QtQuick.Controls.Styles 1.1 |
||||
|
import QtQuick.Controls 1.1 |
||||
|
import QtQuick.Layouts 1.1 |
||||
|
|
||||
|
Item { |
||||
|
property alias model: callTable.model |
||||
|
signal frameActivated(int index) |
||||
|
ColumnLayout { |
||||
|
anchors.fill: parent |
||||
|
Text { |
||||
|
text: qsTr("Call Stack") |
||||
|
Layout.fillWidth: true |
||||
|
} |
||||
|
TableView { |
||||
|
id: callTable |
||||
|
Layout.fillWidth: true |
||||
|
Layout.fillHeight: true |
||||
|
headerDelegate: null |
||||
|
|
||||
|
TableViewColumn { |
||||
|
role: "modelData" |
||||
|
title: qsTr("Address") |
||||
|
width: parent.width |
||||
|
} |
||||
|
onActivated: { |
||||
|
frameActivated(row); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue