Revision control

Copy as Markdown

// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick3D
import QtQuick3D.Helpers
Pane {
id: panel
required property CapsuleGeometry target
ColumnLayout {
width: panel.width
Label {
text: "Capsule Settings"
}
RowLayout {
Layout.fillWidth: true
CheckBox {
Layout.fillWidth: true
checked: panel.target.enableNormals
text: qsTr("enableNormals")
onCheckedChanged: panel.target.enableNormals = checked
}
}
RowLayout {
Layout.fillWidth: true
CheckBox {
Layout.fillWidth: true
checked: panel.target.enableUV
text: qsTr("enableUV")
onCheckedChanged: panel.target.enableUV = checked
}
}
RowLayout {
Layout.fillWidth: true
Label {
text: "longitudes"
}
Slider {
Layout.fillWidth: true
from: 1
to: 100
stepSize: 1
value: panel.target.longitudes
onValueChanged: panel.target.longitudes = value
}
Label {
text: panel.target.longitudes
Layout.minimumWidth: 50
}
}
RowLayout {
Layout.fillWidth: true
Label {
text: "latitudes"
}
Slider {
Layout.fillWidth: true
from: 1
to: 100
stepSize: 1
value: panel.target.latitudes
onValueChanged: panel.target.latitudes = value
}
Label {
text: panel.target.latitudes
Layout.minimumWidth: 50
}
}
RowLayout {
Layout.fillWidth: true
Label {
text: "rings"
}
Slider {
Layout.fillWidth: true
from: 1
to: 100
stepSize: 1
value: panel.target.rings
onValueChanged: panel.target.rings = value
}
Label {
text: panel.target.rings
Layout.minimumWidth: 50
}
}
RowLayout {
Layout.fillWidth: true
Label {
text: "height"
}
Slider {
Layout.fillWidth: true
from: 0
to: 100
value: panel.target.height
onValueChanged: panel.target.height = value
}
Label {
text: panel.target.height.toFixed(2)
Layout.minimumWidth: 50
}
}
RowLayout {
Layout.fillWidth: true
Label {
text: "diameter"
}
Slider {
Layout.fillWidth: true
from: 0
to: 100
value: panel.target.diameter
onValueChanged: panel.target.diameter = value
}
Label {
text: panel.target.diameter.toFixed(2)
Layout.minimumWidth: 50
}
}
RowLayout {
Layout.fillWidth: true
Label {
text: "uvProfile"
}
ComboBox {
textRole: "text"
valueRole: "value"
// When an item is selected, update the backend.
onActivated: panel.target.uvProfile = currentValue
// Set the initial currentIndex to the value stored in the backend.
Component.onCompleted: currentIndex = indexOfValue(panel.target.uvProfile)
model: [{
"value": CapsuleGeometry.Fixed,
"text": qsTr("Fixed")
}, {
"value": CapsuleGeometry.Aspect,
"text": qsTr("Aspect")
}, {
"value": CapsuleGeometry.Uniform,
"text": qsTr("Uniform")
}]
}
}
}
}