From e85d5dd428c71dd45060082a9af28a40a68a25e4 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Wed, 30 Apr 2014 01:44:12 +0200
Subject: API changes

---
 ethereal/assets/qml/webapp.qml | 286 ++++++++++++++++++++++-------------------
 1 file changed, 155 insertions(+), 131 deletions(-)

(limited to 'ethereal/assets/qml/webapp.qml')

diff --git a/ethereal/assets/qml/webapp.qml b/ethereal/assets/qml/webapp.qml
index 3afc0def0..eebe8921f 100644
--- a/ethereal/assets/qml/webapp.qml
+++ b/ethereal/assets/qml/webapp.qml
@@ -7,135 +7,159 @@ import QtQuick.Window 2.1;
 import Ethereum 1.0
 
 ApplicationWindow {
-    id: window
-    title: "Ethereum"
-    width: 900
-    height: 600
-    minimumHeight: 300
-
-    property alias url: webview.url
-    property alias webView: webview
-
-    Item {
-        objectName: "root"
-        id: root
-        anchors.fill: parent
-        state: "inspectorShown"
-
-        WebView {
-            objectName: "webView"
-            id: webview
-            anchors.fill: parent
-            /*
-             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)
-
-                switch(data.call) {
-                    case "getBlockByNumber":
-                        var block = eth.getBlock("b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06")	
-                        postData(data._seed, block)
-                        break
-                    case "getBlockByHash":
-                        var block = eth.getBlock("b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06")	
-                        postData(data._seed, block)
-                        break
-                    case "createTx":
-                        if(data.args.length < 5) {
-                            postData(data._seed, null)
-                        } else {
-                            var tx = eth.createTx(data.args[0], data.args[1],data.args[2],data.args[3],data.args[4])
-                            postData(data._seed, tx)
-                        }
-                        break
-                    case "getStorage":
-                        if(data.args.length < 2) {
-                            postData(data._seed, null)
-                        } else {
-                            var stateObject = eth.getStateObject(data.args[0])
-                            var storage = stateObject.getStorage(data.args[1])
-                            postData(data._seed, storage)
-                        }
-                        break
-                    case "getKey":
-                        var keys = eth.getKey()
-                        postData(data._seed, keys)
-                        break
-                    case "watch":
-                        if(data.args.length > 0) {
-                            eth.watch(data.args[0]);
-                        }
-                        break
-                }
-            }
-            function postData(seed, data) {
-                webview.experimental.postMessage(JSON.stringify({data: data, _seed: seed}))
-            }
-            function postEvent(event, data) {
-                webview.experimental.postMessage(JSON.stringify({data: data, _event: event}))
-            }
-
-            function onNewBlockCb(block) {
-                postEvent("block:new", block)
-            }
-            function onObjectChangeCb(stateObject) {
-                postEvent("object:change", stateObject)
-            }
-        }
-
-        Rectangle {
-            id: sizeGrip
-            color: "gray"
-            visible: false
-            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: false
-            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
-                }
-            }
-        ]
-    }
+	id: window
+	title: "Ethereum"
+	width: 900
+	height: 600
+	minimumHeight: 300
+
+	property alias url: webview.url
+	property alias webView: webview
+
+	Item {
+		objectName: "root"
+		id: root
+		anchors.fill: parent
+		state: "inspectorShown"
+
+		WebView {
+			objectName: "webView"
+			id: webview
+			anchors.fill: parent
+			/*
+			 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)
+				// TODO move to messaging.js
+				var data = JSON.parse(message.data)
+
+				try {
+					switch(data.call) {
+					case "getBlockByNumber":
+						var block = eth.getBlock("b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06")	
+						postData(data._seed, block)
+						break
+					case "getBlockByHash":
+						var block = eth.getBlock("b9b56cf6f907fbee21db0cd7cbc0e6fea2fe29503a3943e275c5e467d649cb06")	
+						postData(data._seed, block)
+						break
+					case "transact":
+						require(5)
+
+						// TODO this will change to 6 soon with sec being teh  first argument
+						var tx = eth.transact(data.args[0], data.args[1],data.args[2],data.args[3],data.args[4])
+						postData(data._seed, tx)
+						break
+					case "create":
+						postData(data._seed, null)
+
+						break
+					case "getStorage":
+						require(2);
+
+						var stateObject = eth.getStateObject(data.args[0])
+						var storage = stateObject.getStorage(data.args[1])
+						postData(data._seed, storage)
+
+						break
+					case "getBalance":
+						require(1);
+
+						postData(data._seed, eth.getStateObject(data.args[0]).Value());					
+
+						break
+					case "getKey":
+						var keys = eth.getKey()
+						postData(data._seed, keys)
+						break
+					case "watch":
+						require(1)
+						eth.watch(data.args[0], data.args[1]);
+						break
+					case "disconnect":
+						require(1)
+						postData(data._seed, null)
+						break;
+					}
+				} catch(e) {
+					console.log(data.call + ": " + e)
+
+					postData(data._seed, null);
+				}
+			}
+
+			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, _seed: seed}))
+			}
+			function postEvent(event, data) {
+				webview.experimental.postMessage(JSON.stringify({data: data, _event: event}))
+			}
+
+			function onNewBlockCb(block) {
+				postEvent("block:new", block)
+			}
+			function onObjectChangeCb(stateObject) {
+				postEvent("object:change", stateObject)
+			}
+		}
+
+		Rectangle {
+			id: sizeGrip
+			color: "gray"
+			visible: false
+			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: false
+			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
+				}
+			}
+		]
+	}
 }
-- 
cgit v1.2.3