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.

140 lines
3.5 KiB

10 years ago
import QtQuick 2.0
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import org.ethereum.qml.QSolidityType 1.0
Column
10 years ago
{
id: root
property alias members: repeater.model //js array
property variant accounts
property var value: ({})
property int blockIndex
property int transactionIndex
property string context
Layout.fillWidth: true
spacing: 0
DebuggerPaneStyle {
id: dbgStyle
}
Repeater
10 years ago
{
id: repeater
visible: model.length > 0
10 years ago
Layout.fillWidth: true
RowLayout
10 years ago
{
id: row
height: 20 + (members[index].type.category === QSolidityType.Struct ? (20 * members[index].type.members.length) : 0)
Layout.fillWidth: true
DefaultLabel {
height: 20
id: typeLabel
text: modelData.type.name
anchors.verticalCenter: parent.verticalCenter
font.family: dbgStyle.general.basicFont
color: dbgStyle.general.basicColor
font.pointSize: dbgStyle.general.basicFontSize
}
10 years ago
DefaultLabel {
height: 20
id: nameLabel
text: modelData.name
anchors.verticalCenter: parent.verticalCenter
font.family: dbgStyle.general.basicFont
color: dbgStyle.general.basicColor
font.pointSize: dbgStyle.general.basicFontSize
}
10 years ago
DefaultLabel {
height: 20
id: equalLabel
text: "="
anchors.verticalCenter: parent.verticalCenter
font.family: dbgStyle.general.basicFont
color: dbgStyle.general.basicColor
font.pointSize: dbgStyle.general.basicFontSize
}
Loader
{
id: typeLoader
height: 20
anchors.verticalCenter: parent.verticalCenter
sourceComponent:
{
var t = modelData.type.category;
if (t === QSolidityType.SignedInteger || t === QSolidityType.UnsignedInteger)
return Qt.createComponent("qrc:/qml/QIntTypeView.qml");
else if (t === QSolidityType.Bool)
return Qt.createComponent("qrc:/qml/QBoolTypeView.qml");
else if (t === QSolidityType.Bytes)
return Qt.createComponent("qrc:/qml/QStringTypeView.qml");
else if (t === QSolidityType.Hash)
return Qt.createComponent("qrc:/qml/QHashTypeView.qml");
else if (t === QSolidityType.Struct)
return Qt.createComponent("qrc:/qml/StructView.qml");
else if (t === QSolidityType.Address)
return Qt.createComponent("qrc:/qml/QAddressView.qml");
else
return undefined;
10 years ago
}
onLoaded:
10 years ago
{
var ptype = members[index].type;
var pname = members[index].name;
var vals = value;
item.readOnly = context === "variable";
if (ptype.category === QSolidityType.Address)
{
item.accounts = accounts
item.value = getValue();
if (context === "parameter")
{
var dec = modelData.type.name.split(" ");
item.subType = dec[0];
item.load();
}
item.init();
}
else if (ptype.category === QSolidityType.Struct && !item.members)
{
item.value = getValue();
item.members = ptype.members;
10 years ago
}
else
item.value = getValue();
10 years ago
10 years ago
if (ptype.category === QSolidityType.Bool)
item.init();
item.onValueChanged.connect(function() {
vals[pname] = item.value;
valueChanged();
});
var newWidth = nameLabel.width + typeLabel.width + item.width + 108;
if (root.width < newWidth)
root.width = newWidth;
}
10 years ago
function getValue()
{
var r = "";
if (value && value[modelData.name] !== undefined)
r = value[modelData.name];
else if (modelData.type.category === QSolidityType.Struct)
r = {};
if (Array.isArray(r))
r = r.join(", ");
return r;
10 years ago
}
}
}
}
}