diff --git a/mix/qml/Debugger.qml b/mix/qml/Debugger.qml
index 202d27a0c..9ab2f03a4 100644
--- a/mix/qml/Debugger.qml
+++ b/mix/qml/Debugger.qml
@@ -220,31 +220,31 @@ Rectangle {
id: jumpButtons
spacing: 3
- StepActionImage
- {
- id: playAction
- enabledStateImg: "qrc:/qml/img/play_button.png"
- disableStateImg: "qrc:/qml/img/play_button.png"
- onClicked: console.log("play");
- width: 30
- height: 30
- buttonShortcut: "Ctrl+Shift+F8"
- buttonTooltip: qsTr("Play")
- visible: true
- }
-
- StepActionImage
- {
- id: pauseAction
- enabledStateImg: "qrc:/qml/img/pause_button.png"
- disableStateImg: "qrc:/qml/img/pause_button.png"
- onClicked: console.log("pause");
- width: 30
- height: 30
- buttonShortcut: "Ctrl+Shift+F9"
- buttonTooltip: qsTr("Pause")
- visible: true
- }
+ StepActionImage
+ {
+ id: playAction
+ enabledStateImg: "qrc:/qml/img/play_button.png"
+ disableStateImg: "qrc:/qml/img/play_button.png"
+ onClicked: console.log("play");
+ width: 30
+ height: 30
+ buttonShortcut: "Ctrl+Shift+F8"
+ buttonTooltip: qsTr("Play")
+ visible: true
+ }
+
+ StepActionImage
+ {
+ id: pauseAction
+ enabledStateImg: "qrc:/qml/img/pause_button.png"
+ disableStateImg: "qrc:/qml/img/pause_button.png"
+ onClicked: console.log("pause");
+ width: 30
+ height: 30
+ buttonShortcut: "Ctrl+Shift+F9"
+ buttonTooltip: qsTr("Pause")
+ visible: true
+ }
StepActionImage
{
diff --git a/mix/qml/StatesComboBox.qml b/mix/qml/StatesComboBox.qml
index 246b3e93b..34567d083 100644
--- a/mix/qml/StatesComboBox.qml
+++ b/mix/qml/StatesComboBox.qml
@@ -1,18 +1,18 @@
/*
- This file is part of cpp-ethereum.
+ This file is part of cpp-ethereum.
- cpp-ethereum is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
+ cpp-ethereum is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
- cpp-ethereum is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ cpp-ethereum is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with cpp-ethereum. If not, see .
+ You should have received a copy of the GNU General Public License
+ along with cpp-ethereum. If not, see .
*/
/** @file StatesComboBox.qml
* @author Ali Mashatan ali@ethdev.com
@@ -26,220 +26,220 @@ import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
Rectangle {
- id: statesComboBox
-
- width: 200
- height: 20
-
- Component.onCompleted: {
- var top = dropDownList
- while (top.parent) {
- top = top.parent
- if (top.objectName == "debugPanel")
- break
- }
- var coordinates = dropDownList.mapToItem(top, 0, 0)
- //the order is important
- dropDownShowdowList.parent = top
- dropDownList.parent = top
-
- dropDownShowdowList.x = coordinates.x
- dropDownShowdowList.y = coordinates.y
-
- dropDownList.x = coordinates.x
- dropDownList.y = coordinates.y
- }
-
- signal selectItem(real item)
- signal editItem(real item)
- signal selectCreate
- property variant rowHeight: 25
- property variant items
- property alias selectedItem: chosenItemText.text
- property alias selectedIndex: listView.currentRow
- function setSelectedIndex(index) {
- listView.currentRow = index
- chosenItemText.text = statesComboBox.items.get(index).title
- }
-
- signal comboClicked
-
- property variant colorItem
- property variant colorSelect
-
- smooth: true
- Rectangle {
- id: chosenItem
- width: parent.width
- height: statesComboBox.height
- color: statesComboBox.color
- smooth: true
- Text {
- id: chosenItemText
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.margins: 2
- color: statesComboBox.colorItem
- text: ""
- smooth: true
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: {
- statesComboBox.state = statesComboBox.state === "dropDown" ? "" : "dropDown"
- }
- }
- }
-
- Rectangle {
- id: dropDownShowdowList
- width: statesComboBox.width
- opacity: 0.3
- height: 0
- clip: true
- radius: 4
- anchors.top: chosenItem.top
- anchors.margins: 2
- color: "gray"
- }
- //ToDo: We need scrollbar for items
- Rectangle {
- id: dropDownList
- width: statesComboBox.width
- height: 0
- clip: true
- radius: 4
- anchors.top: chosenItem.top
- anchors.margins: 2
- color: statesComboBox.color
-
- ColumnLayout {
- spacing: 2
- TableView {
- id: listView
- height: 20
- implicitHeight: 0
- width: statesComboBox.width
- model: statesComboBox.items
- horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
- currentRow: -1
- headerVisible: false
- backgroundVisible: false
- alternatingRowColors: false
- frameVisible: false
-
- TableViewColumn {
- role: "title"
- title: ""
- width: statesComboBox.width
- delegate: mainItemDelegate
- }
- rowDelegate: Rectangle {
- width: statesComboBox.width
- height: statesComboBox.rowHeight
- }
- Component {
- id: mainItemDelegate
- Rectangle {
- id: itemDelegate
- width: statesComboBox.width
- height: statesComboBox.height
- Text {
- id: textItemid
- text: styleData.value
- color: statesComboBox.colorItem
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.margins: 5
- }
- Image {
- id: imageItemid
- height: 20
- width: 20
- anchors.right: parent.right
- anchors.top: parent.top
- anchors.margins: 5
- visible: false
- fillMode: Image.PreserveAspectFit
- source: "img/edit_combox.png"
- }
-
- MouseArea {
- anchors.fill: parent
- hoverEnabled: true
-
- onEntered: {
- imageItemid.visible = true
- textItemid.color = statesComboBox.colorSelect
- }
- onExited: {
- imageItemid.visible = false
- textItemid.color = statesComboBox.colorItem
- }
- onClicked: {
- if (mouseX > imageItemid.x
- && mouseX < imageItemid.x + imageItemid.width
- && mouseY > imageItemid.y
- && mouseY < imageItemid.y + imageItemid.height)
- statesComboBox.editItem(styleData.row)
- else {
- statesComboBox.state = ""
- var prevSelection = chosenItemText.text
- chosenItemText.text = styleData.value
- listView.currentRow = styleData.row
- statesComboBox.selectItem(styleData.row)
- }
- }
- }
- } //Item
- } //Component
- } //Table View
-
- RowLayout {
- Rectangle {
- width: 1
- }
- Text {
- id: createStateText
- width: statesComboBox.width
- height: statesComboBox.height
- font.bold: true
- text: qsTr("Create State ...")
- MouseArea {
- anchors.fill: parent
- hoverEnabled: true
-
- onEntered: {
- createStateText.color = statesComboBox.colorSelect
- }
- onExited: {
- createStateText.color = statesComboBox.colorItem
- }
- onClicked: {
- statesComboBox.state = ""
- statesComboBox.selectCreate()
- }
- }
- }
- }
- }
- }
- states: State {
- name: "dropDown"
- PropertyChanges {
- target: dropDownList
- height: (statesComboBox.rowHeight * (statesComboBox.items.count + 1))
- }
- PropertyChanges {
- target: dropDownShowdowList
- width: statesComboBox.width + 3
- height: (statesComboBox.rowHeight * (statesComboBox.items.count + 1)) + 3
- }
- PropertyChanges {
- target: listView
- height: 20
- implicitHeight: (statesComboBox.rowHeight * (statesComboBox.items.count))
- }
- }
+ id: statesComboBox
+
+ width: 200
+ height: 20
+
+ Component.onCompleted: {
+ var top = dropDownList
+ while (top.parent) {
+ top = top.parent
+ if (top.objectName == "debugPanel")
+ break
+ }
+ var coordinates = dropDownList.mapToItem(top, 0, 0)
+ //the order is important
+ dropDownShowdowList.parent = top
+ dropDownList.parent = top
+
+ dropDownShowdowList.x = coordinates.x
+ dropDownShowdowList.y = coordinates.y
+
+ dropDownList.x = coordinates.x
+ dropDownList.y = coordinates.y
+ }
+
+ signal selectItem(real item)
+ signal editItem(real item)
+ signal selectCreate
+ property variant rowHeight: 25
+ property variant items
+ property alias selectedItem: chosenItemText.text
+ property alias selectedIndex: listView.currentRow
+ function setSelectedIndex(index) {
+ listView.currentRow = index
+ chosenItemText.text = statesComboBox.items.get(index).title
+ }
+
+ signal comboClicked
+
+ property variant colorItem
+ property variant colorSelect
+
+ smooth: true
+ Rectangle {
+ id: chosenItem
+ width: parent.width
+ height: statesComboBox.height
+ color: statesComboBox.color
+ smooth: true
+ Text {
+ id: chosenItemText
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.margins: 2
+ color: statesComboBox.colorItem
+ text: ""
+ smooth: true
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ statesComboBox.state = statesComboBox.state === "dropDown" ? "" : "dropDown"
+ }
+ }
+ }
+
+ Rectangle {
+ id: dropDownShowdowList
+ width: statesComboBox.width
+ opacity: 0.3
+ height: 0
+ clip: true
+ radius: 4
+ anchors.top: chosenItem.top
+ anchors.margins: 2
+ color: "gray"
+ }
+ //ToDo: We need scrollbar for items
+ Rectangle {
+ id: dropDownList
+ width: statesComboBox.width
+ height: 0
+ clip: true
+ radius: 4
+ anchors.top: chosenItem.top
+ anchors.margins: 2
+ color: statesComboBox.color
+
+ ColumnLayout {
+ spacing: 2
+ TableView {
+ id: listView
+ height: 20
+ implicitHeight: 0
+ width: statesComboBox.width
+ model: statesComboBox.items
+ horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
+ currentRow: -1
+ headerVisible: false
+ backgroundVisible: false
+ alternatingRowColors: false
+ frameVisible: false
+
+ TableViewColumn {
+ role: "title"
+ title: ""
+ width: statesComboBox.width
+ delegate: mainItemDelegate
+ }
+ rowDelegate: Rectangle {
+ width: statesComboBox.width
+ height: statesComboBox.rowHeight
+ }
+ Component {
+ id: mainItemDelegate
+ Rectangle {
+ id: itemDelegate
+ width: statesComboBox.width
+ height: statesComboBox.height
+ Text {
+ id: textItemid
+ text: styleData.value
+ color: statesComboBox.colorItem
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.margins: 5
+ }
+ Image {
+ id: imageItemid
+ height: 20
+ width: 20
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.margins: 5
+ visible: false
+ fillMode: Image.PreserveAspectFit
+ source: "img/edit_combox.png"
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+
+ onEntered: {
+ imageItemid.visible = true
+ textItemid.color = statesComboBox.colorSelect
+ }
+ onExited: {
+ imageItemid.visible = false
+ textItemid.color = statesComboBox.colorItem
+ }
+ onClicked: {
+ if (mouseX > imageItemid.x
+ && mouseX < imageItemid.x + imageItemid.width
+ && mouseY > imageItemid.y
+ && mouseY < imageItemid.y + imageItemid.height)
+ statesComboBox.editItem(styleData.row)
+ else {
+ statesComboBox.state = ""
+ var prevSelection = chosenItemText.text
+ chosenItemText.text = styleData.value
+ listView.currentRow = styleData.row
+ statesComboBox.selectItem(styleData.row)
+ }
+ }
+ }
+ } //Item
+ } //Component
+ } //Table View
+
+ RowLayout {
+ Rectangle {
+ width: 1
+ }
+ Text {
+ id: createStateText
+ width: statesComboBox.width
+ height: statesComboBox.height
+ font.bold: true
+ text: qsTr("Create State ...")
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+
+ onEntered: {
+ createStateText.color = statesComboBox.colorSelect
+ }
+ onExited: {
+ createStateText.color = statesComboBox.colorItem
+ }
+ onClicked: {
+ statesComboBox.state = ""
+ statesComboBox.selectCreate()
+ }
+ }
+ }
+ }
+ }
+ }
+ states: State {
+ name: "dropDown"
+ PropertyChanges {
+ target: dropDownList
+ height: (statesComboBox.rowHeight * (statesComboBox.items.count + 1))
+ }
+ PropertyChanges {
+ target: dropDownShowdowList
+ width: statesComboBox.width + 3
+ height: (statesComboBox.rowHeight * (statesComboBox.items.count + 1)) + 3
+ }
+ PropertyChanges {
+ target: listView
+ height: 20
+ implicitHeight: (statesComboBox.rowHeight * (statesComboBox.items.count))
+ }
+ }
}
diff --git a/mix/qml/TransactionLog.qml b/mix/qml/TransactionLog.qml
index 1772c7f18..3bcc6c270 100644
--- a/mix/qml/TransactionLog.qml
+++ b/mix/qml/TransactionLog.qml
@@ -6,157 +6,157 @@ import QtQuick.Layouts 1.1
import org.ethereum.qml.RecordLogEntry 1.0
Item {
- property ListModel fullModel: ListModel{}
- property ListModel transactionModel: ListModel{}
- property ListModel callModel: ListModel{}
+ property ListModel fullModel: ListModel{}
+ property ListModel transactionModel: ListModel{}
+ property ListModel callModel: ListModel{}
- ColumnLayout {
- anchors.fill: parent
- RowLayout {
- anchors.right: parent.right
- anchors.left: parent.left
- Connections
- {
- id: compilationStatus
- target: codeModel
- property bool compilationComplete: false
- onCompilationComplete: compilationComplete = true
- onCompilationError: compilationComplete = false
- }
+ ColumnLayout {
+ anchors.fill: parent
+ RowLayout {
+ anchors.right: parent.right
+ anchors.left: parent.left
+ Connections
+ {
+ id: compilationStatus
+ target: codeModel
+ property bool compilationComplete: false
+ onCompilationComplete: compilationComplete = true
+ onCompilationError: compilationComplete = false
+ }
- Connections
- {
- target: projectModel
- onProjectSaved:
- {
- if (projectModel.appIsClosing || projectModel.projectIsClosing)
- return;
- if (compilationStatus.compilationComplete && codeModel.hasContract && !clientModel.running)
- projectModel.stateListModel.debugDefaultState();
- }
- onProjectClosed:
- {
- fullModel.clear();
- transactionModel.clear();
- callModel.clear();
- }
- onContractSaved: {
- if (compilationStatus.compilationComplete && codeModel.hasContract && !clientModel.running)
- projectModel.stateListModel.debugDefaultState();
- }
- }
- StatesComboBox
- {
- id: statesCombo
- items: projectModel.stateListModel
- onSelectCreate: projectModel.stateListModel.addState();
- onEditItem: projectModel.stateListModel.editState(item)
- colorItem: "black"
- colorSelect: "blue"
- color: "white"
- Connections {
- target: projectModel.stateListModel
- onStateRun: {
- if (statesCombo.selectedIndex !== index)
- statesCombo.setSelectedIndex( index );
- }
- }
- }
- Button
- {
- anchors.rightMargin: 9
- anchors.verticalCenter: parent.verticalCenter
- action: mineAction
- }
+ Connections
+ {
+ target: projectModel
+ onProjectSaved:
+ {
+ if (projectModel.appIsClosing || projectModel.projectIsClosing)
+ return;
+ if (compilationStatus.compilationComplete && codeModel.hasContract && !clientModel.running)
+ projectModel.stateListModel.debugDefaultState();
+ }
+ onProjectClosed:
+ {
+ fullModel.clear();
+ transactionModel.clear();
+ callModel.clear();
+ }
+ onContractSaved: {
+ if (compilationStatus.compilationComplete && codeModel.hasContract && !clientModel.running)
+ projectModel.stateListModel.debugDefaultState();
+ }
+ }
+ StatesComboBox
+ {
+ id: statesCombo
+ items: projectModel.stateListModel
+ onSelectCreate: projectModel.stateListModel.addState();
+ onEditItem: projectModel.stateListModel.editState(item)
+ colorItem: "black"
+ colorSelect: "blue"
+ color: "white"
+ Connections {
+ target: projectModel.stateListModel
+ onStateRun: {
+ if (statesCombo.selectedIndex !== index)
+ statesCombo.setSelectedIndex( index );
+ }
+ }
+ }
+ Button
+ {
+ anchors.rightMargin: 9
+ anchors.verticalCenter: parent.verticalCenter
+ action: mineAction
+ }
- ComboBox {
- id: itemFilter
+ ComboBox {
+ id: itemFilter
- function getCurrentModel()
- {
- return currentIndex === 0 ? fullModel : currentIndex === 1 ? transactionModel : currentIndex === 2 ? callModel : fullModel;
- }
+ function getCurrentModel()
+ {
+ return currentIndex === 0 ? fullModel : currentIndex === 1 ? transactionModel : currentIndex === 2 ? callModel : fullModel;
+ }
- model: ListModel {
- ListElement { text: qsTr("Calls and Transactions"); value: 0; }
- ListElement { text: qsTr("Only Transactions"); value: 1; }
- ListElement { text: qsTr("Only Calls"); value: 2; }
- }
+ model: ListModel {
+ ListElement { text: qsTr("Calls and Transactions"); value: 0; }
+ ListElement { text: qsTr("Only Transactions"); value: 1; }
+ ListElement { text: qsTr("Only Calls"); value: 2; }
+ }
- onCurrentIndexChanged:
- {
- logTable.model = itemFilter.getCurrentModel();
- }
- }
- }
- TableView {
- id: logTable
- Layout.fillWidth: true
- Layout.fillHeight: true
- model: fullModel
+ onCurrentIndexChanged:
+ {
+ logTable.model = itemFilter.getCurrentModel();
+ }
+ }
+ }
+ TableView {
+ id: logTable
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ model: fullModel
- TableViewColumn {
- role: "transactionIndex"
- title: qsTr("#")
- width: 40
- }
- TableViewColumn {
- role: "contract"
- title: qsTr("Contract")
- width: 100
- }
- TableViewColumn {
- role: "function"
- title: qsTr("Function")
- width: 120
- }
- TableViewColumn {
- role: "value"
- title: qsTr("Value")
- width: 60
- }
- TableViewColumn {
- role: "address"
- title: qsTr("Destination")
- width: 130
- }
- TableViewColumn {
- role: "returned"
- title: qsTr("Returned")
- width: 120
- }
- onActivated: {
- var item = logTable.model.get(row);
- if (item.type === RecordLogEntry.Transaction)
- clientModel.debugRecord(item.recordIndex);
- else
- clientModel.emptyRecord();
- }
- Keys.onPressed: {
- if ((event.modifiers & Qt.ControlModifier) && event.key === Qt.Key_C && currentRow >=0 && currentRow < logTable.model.count) {
- var item = logTable.model.get(currentRow);
- appContext.toClipboard(item.returned);
- }
- }
- }
- }
- Connections {
- target: clientModel
- onStateCleared: {
- fullModel.clear();
- transactionModel.clear();
- callModel.clear();
- }
- onNewRecord: {
- fullModel.append(_r);
- if (!_r.call)
- transactionModel.append(_r);
- else
- callModel.append(_r);
- }
- onMiningComplete: {
- fullModel.append(clientModel.lastBlock);
- transactionModel.append(clientModel.lastBlock);
- }
- }
+ TableViewColumn {
+ role: "transactionIndex"
+ title: qsTr("#")
+ width: 40
+ }
+ TableViewColumn {
+ role: "contract"
+ title: qsTr("Contract")
+ width: 100
+ }
+ TableViewColumn {
+ role: "function"
+ title: qsTr("Function")
+ width: 120
+ }
+ TableViewColumn {
+ role: "value"
+ title: qsTr("Value")
+ width: 60
+ }
+ TableViewColumn {
+ role: "address"
+ title: qsTr("Destination")
+ width: 130
+ }
+ TableViewColumn {
+ role: "returned"
+ title: qsTr("Returned")
+ width: 120
+ }
+ onActivated: {
+ var item = logTable.model.get(row);
+ if (item.type === RecordLogEntry.Transaction)
+ clientModel.debugRecord(item.recordIndex);
+ else
+ clientModel.emptyRecord();
+ }
+ Keys.onPressed: {
+ if ((event.modifiers & Qt.ControlModifier) && event.key === Qt.Key_C && currentRow >=0 && currentRow < logTable.model.count) {
+ var item = logTable.model.get(currentRow);
+ appContext.toClipboard(item.returned);
+ }
+ }
+ }
+ }
+ Connections {
+ target: clientModel
+ onStateCleared: {
+ fullModel.clear();
+ transactionModel.clear();
+ callModel.clear();
+ }
+ onNewRecord: {
+ fullModel.append(_r);
+ if (!_r.call)
+ transactionModel.append(_r);
+ else
+ callModel.append(_r);
+ }
+ onMiningComplete: {
+ fullModel.append(clientModel.lastBlock);
+ transactionModel.append(clientModel.lastBlock);
+ }
+ }
}