Revision control
++
++ // 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")
++ }]
++ }
++ }
++ }
++ }