aboutsummaryrefslogtreecommitdiffstats
path: root/ethereal/assets/debugger
diff options
context:
space:
mode:
Diffstat (limited to 'ethereal/assets/debugger')
-rw-r--r--ethereal/assets/debugger/debugger.qml442
1 files changed, 231 insertions, 211 deletions
diff --git a/ethereal/assets/debugger/debugger.qml b/ethereal/assets/debugger/debugger.qml
index 40b0b68b1..bff653fb8 100644
--- a/ethereal/assets/debugger/debugger.qml
+++ b/ethereal/assets/debugger/debugger.qml
@@ -7,12 +7,12 @@ import QtQuick.Controls.Styles 1.1
import Ethereum 1.0
ApplicationWindow {
- visible: false
- title: "IceCream"
- minimumWidth: 1280
- minimumHeight: 900
- width: 1290
- height: 900
+ visible: false
+ title: "IceCream"
+ minimumWidth: 1280
+ minimumHeight: 900
+ width: 1290
+ height: 900
property alias codeText: codeEditor.text
property alias dataText: rawDataField.text
@@ -32,209 +32,229 @@ ApplicationWindow {
onTriggered: dbg.next()
}
}
- }
-
- SplitView {
- anchors.fill: parent
- property var asmModel: ListModel {
- id: asmModel
- }
- TableView {
- id: asmTableView
- width: 200
- TableViewColumn{ role: "value" ; title: "" ; width: 100 }
- model: asmModel
- }
-
- Rectangle {
- color: "#00000000"
- anchors.left: asmTableView.right
- anchors.right: parent.right
- SplitView {
- orientation: Qt.Vertical
- anchors.fill: parent
-
- Rectangle {
- color: "#00000000"
- height: 500
- anchors.left: parent.left
- anchors.right: parent.right
-
- TextArea {
- id: codeEditor
- anchors.top: parent.top
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.right: settings.left
- }
-
- Column {
- id: settings
- spacing: 5
- width: 300
- height: parent.height
- anchors.right: parent.right
- anchors.top: parent.top
- anchors.bottom: parent.bottom
-
- Label {
- text: "Arbitrary data"
- }
- TextArea {
- id: rawDataField
- anchors.left: parent.left
- anchors.right: parent.right
- height: 150
- }
-
- Label {
- text: "Amount"
- }
- TextField {
- id: txValue
- width: 200
- placeholderText: "Amount"
- validator: RegExpValidator { regExp: /\d*/ }
- }
- Label {
- text: "Amount of gas"
- }
- TextField {
- id: txGas
- width: 200
- validator: RegExpValidator { regExp: /\d*/ }
- text: "10000"
- placeholderText: "Gas"
- }
- Label {
- text: "Gas price"
- }
- TextField {
- id: txGasPrice
- width: 200
- placeholderText: "Gas price"
- text: "1000000000000"
- validator: RegExpValidator { regExp: /\d*/ }
- }
- }
- }
-
- SplitView {
- orientation: Qt.Vertical
- id: inspectorPane
- height: 500
-
- SplitView {
- orientation: Qt.Horizontal
- height: 250
-
- TableView {
- id: stackTableView
- property var stackModel: ListModel {
- id: stackModel
- }
- height: parent.height
- width: 300
- TableViewColumn{ role: "value" ; title: "Stack" ; width: 200 }
- model: stackModel
- }
-
- TableView {
- id: memoryTableView
- property var memModel: ListModel {
- id: memModel
- }
- height: parent.height
- width: parent.width - stackTableView.width
- TableViewColumn{ id:mnumColmn ; role: "num" ; title: "#" ; width: 50}
- TableViewColumn{ role: "value" ; title: "Memory" ; width: 750}
- model: memModel
- }
- }
-
- SplitView {
- height: 300
- TableView {
- id: storageTableView
- property var memModel: ListModel {
- id: storageModel
- }
- height: parent.height
- width: parent.width - stackTableView.width
- TableViewColumn{ id: key ; role: "key" ; title: "#" ; width: storageTableView.width / 2}
- TableViewColumn{ role: "value" ; title: "value" ; width: storageTableView.width / 2}
- model: storageModel
- }
- }
- }
- }
- }
- }
-
- toolBar: ToolBar {
- RowLayout {
- spacing: 5
-
- Button {
- property var enabled: true
- id: debugStart
- onClicked: {
- debugCurrent()
- }
- text: "Debug"
- }
-
- Button {
- property var enabled: true
- id: debugNextButton
- onClicked: {
- dbg.next()
- }
- text: "Next"
- }
- }
- }
-
- function debugCurrent() {
- dbg.debug(txValue.text, txGas.text, txGasPrice.text, codeEditor.text, rawDataField.text)
- }
-
- function setAsm(asm) {
- asmModel.append({asm: asm})
- }
-
- function clearAsm() {
- asmModel.clear()
- }
-
- function setInstruction(num) {
- asmTableView.selection.clear()
- asmTableView.selection.select(num)
- }
-
- function setMem(mem) {
- memModel.append({num: mem.num, value: mem.value})
- }
- function clearMem(){
- memModel.clear()
- }
-
- function setStack(stack) {
- stackModel.append({value: stack})
- }
- function addDebugMessage(message){
- debuggerLog.append({value: message})
- }
-
- function clearStack() {
- stackModel.clear()
- }
-
- function clearStorage() {
- storageModel.clear()
- }
-
- function setStorage(storage) {
- storageModel.append({key: storage.key, value: storage.value})
- }
+ }
+
+ SplitView {
+ anchors.fill: parent
+ property var asmModel: ListModel {
+ id: asmModel
+ }
+ TableView {
+ id: asmTableView
+ width: 200
+ TableViewColumn{ role: "value" ; title: "" ; width: 100 }
+ model: asmModel
+ }
+
+ Rectangle {
+ color: "#00000000"
+ anchors.left: asmTableView.right
+ anchors.right: parent.right
+ SplitView {
+ orientation: Qt.Vertical
+ anchors.fill: parent
+
+ Rectangle {
+ color: "#00000000"
+ height: 500
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ TextArea {
+ id: codeEditor
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: settings.left
+ }
+
+ Column {
+ id: settings
+ spacing: 5
+ width: 300
+ height: parent.height
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+
+ Label {
+ text: "Arbitrary data"
+ }
+ TextArea {
+ id: rawDataField
+ anchors.left: parent.left
+ anchors.right: parent.right
+ height: 150
+ }
+
+ Label {
+ text: "Amount"
+ }
+ TextField {
+ id: txValue
+ width: 200
+ placeholderText: "Amount"
+ validator: RegExpValidator { regExp: /\d*/ }
+ }
+ Label {
+ text: "Amount of gas"
+ }
+ TextField {
+ id: txGas
+ width: 200
+ validator: RegExpValidator { regExp: /\d*/ }
+ text: "10000"
+ placeholderText: "Gas"
+ }
+ Label {
+ text: "Gas price"
+ }
+ TextField {
+ id: txGasPrice
+ width: 200
+ placeholderText: "Gas price"
+ text: "1000000000000"
+ validator: RegExpValidator { regExp: /\d*/ }
+ }
+ }
+ }
+
+ SplitView {
+ orientation: Qt.Vertical
+ id: inspectorPane
+ height: 500
+
+ SplitView {
+ orientation: Qt.Horizontal
+ height: 150
+
+ TableView {
+ id: stackTableView
+ property var stackModel: ListModel {
+ id: stackModel
+ }
+ height: parent.height
+ width: 300
+ TableViewColumn{ role: "value" ; title: "Stack" ; width: 200 }
+ model: stackModel
+ }
+
+ TableView {
+ id: memoryTableView
+ property var memModel: ListModel {
+ id: memModel
+ }
+ height: parent.height
+ width: parent.width - stackTableView.width
+ TableViewColumn{ id:mnumColmn ; role: "num" ; title: "#" ; width: 50}
+ TableViewColumn{ role: "value" ; title: "Memory" ; width: 750}
+ model: memModel
+ }
+ }
+
+ Rectangle {
+ height: 100
+ width: parent.width
+ TableView {
+ id: storageTableView
+ property var memModel: ListModel {
+ id: storageModel
+ }
+ height: parent.height
+ width: parent.width
+ TableViewColumn{ id: key ; role: "key" ; title: "#" ; width: storageTableView.width / 2}
+ TableViewColumn{ role: "value" ; title: "value" ; width: storageTableView.width / 2}
+ model: storageModel
+ }
+ }
+
+ Rectangle {
+ height: 200
+ width: parent.width
+ TableView {
+ id: logTableView
+ property var logModel: ListModel {
+ id: logModel
+ }
+ height: parent.height
+ width: parent.width
+ TableViewColumn{ id: message ; role: "message" ; title: "log" ; width: logTableView.width }
+ model: logModel
+ }
+ }
+ }
+ }
+ }
+ }
+
+ toolBar: ToolBar {
+ RowLayout {
+ spacing: 5
+
+ Button {
+ property var enabled: true
+ id: debugStart
+ onClicked: {
+ debugCurrent()
+ }
+ text: "Debug"
+ }
+
+ Button {
+ property var enabled: true
+ id: debugNextButton
+ onClicked: {
+ dbg.next()
+ }
+ text: "Next"
+ }
+ }
+ }
+
+ function debugCurrent() {
+ dbg.debug(txValue.text, txGas.text, txGasPrice.text, codeEditor.text, rawDataField.text)
+ }
+
+ function setAsm(asm) {
+ asmModel.append({asm: asm})
+ }
+
+ function clearAsm() {
+ asmModel.clear()
+ }
+
+ function setInstruction(num) {
+ asmTableView.selection.clear()
+ asmTableView.selection.select(num)
+ }
+
+ function setMem(mem) {
+ memModel.append({num: mem.num, value: mem.value})
+ }
+ function clearMem(){
+ memModel.clear()
+ }
+
+ function setStack(stack) {
+ stackModel.append({value: stack})
+ }
+ function addDebugMessage(message){
+ debuggerLog.append({value: message})
+ }
+
+ function clearStack() {
+ stackModel.clear()
+ }
+
+ function clearStorage() {
+ storageModel.clear()
+ }
+
+ function setStorage(storage) {
+ storageModel.append({key: storage.key, value: storage.value})
+ }
+
+ function setLog(msg) {
+ logModel.append({message: msg})
+ }
}