You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
2.8 KiB
155 lines
2.8 KiB
import QtQuick 2.3
|
|
import QtQuick.Controls 1.2
|
|
import QtQuick.Dialogs 1.2
|
|
import QtQuick.Layouts 1.1
|
|
import QtQuick.Window 2.0
|
|
|
|
Dialog {
|
|
modality: Qt.WindowModal
|
|
standardButtons: StandardButton.Ok | StandardButton.Cancel
|
|
|
|
width:640
|
|
height:480
|
|
|
|
property alias focus : titleField.focus
|
|
property alias transactionTitle : titleField.text
|
|
property int transactionId
|
|
property int transactionParams;
|
|
|
|
function reset(id, model) {
|
|
var item = model.getItem(id);
|
|
transactionId = id;
|
|
transactionTitle = item.title;
|
|
}
|
|
|
|
GridLayout {
|
|
columns: 2
|
|
anchors.fill: parent
|
|
anchors.margins: 10
|
|
rowSpacing: 10
|
|
columnSpacing: 10
|
|
|
|
Label {
|
|
text: qsTr("Title")
|
|
}
|
|
TextField {
|
|
id: titleField
|
|
focus: true
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Label {
|
|
text: qsTr("Function")
|
|
}
|
|
TextField {
|
|
id: functionField
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Label {
|
|
text: qsTr("Value")
|
|
}
|
|
TextField {
|
|
id: valueField
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Label {
|
|
text: qsTr("Gas")
|
|
}
|
|
TextField {
|
|
id: gasField
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Label {
|
|
text: qsTr("Gas price")
|
|
}
|
|
TextField {
|
|
id: gasPriceField
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
Label {
|
|
text: qsTr("Parameters")
|
|
}
|
|
TableView {
|
|
model: paramsModel
|
|
Layout.fillWidth: true
|
|
|
|
TableViewColumn {
|
|
role: "name"
|
|
title: "Name"
|
|
width: 120
|
|
}
|
|
TableViewColumn {
|
|
role: "type"
|
|
title: "Type"
|
|
width: 120
|
|
}
|
|
TableViewColumn {
|
|
role: "value"
|
|
title: "Value"
|
|
width: 120
|
|
}
|
|
|
|
itemDelegate: {
|
|
return editableDelegate;
|
|
}
|
|
}
|
|
|
|
}
|
|
ListModel {
|
|
id: paramsModel
|
|
Component.onCompleted: {
|
|
for (var i=0 ; i < 3 ; ++i)
|
|
paramsModel.append({"name":"Param " + i , "Type": "int", "value": i})
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: editableDelegate
|
|
Item {
|
|
|
|
Text {
|
|
width: parent.width
|
|
anchors.margins: 4
|
|
anchors.left: parent.left
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
elide: styleData.elideMode
|
|
text: styleData.value !== undefined ? styleData.value : ""
|
|
color: styleData.textColor
|
|
visible: !styleData.selected
|
|
}
|
|
Loader {
|
|
id: loaderEditor
|
|
anchors.fill: parent
|
|
anchors.margins: 4
|
|
Connections {
|
|
target: loaderEditor.item
|
|
onAccepted: {
|
|
//if (typeof styleData.value === 'number')
|
|
// paramsModel.setProperty(styleData.row, styleData.role, Number(parseFloat(loaderEditor.item.text).toFixed(0)))
|
|
//else
|
|
// paramsModel.setProperty(styleData.row, styleData.role, loaderEditor.item.text)
|
|
}
|
|
}
|
|
sourceComponent: styleData.selected ? editor : null
|
|
Component {
|
|
id: editor
|
|
TextInput {
|
|
id: textinput
|
|
color: styleData.textColor
|
|
text: styleData.value
|
|
MouseArea {
|
|
id: mouseArea
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
onClicked: textinput.forceActiveFocus()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|