Files
2026-04-29 07:19:21 +03:00

193 lines
7.1 KiB
QML

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick
import HelperWidgets
import QtQuick.Layouts
import QtQuick.Controls as Controls
Column {
anchors.left: parent.left
anchors.right: parent.right
Section {
anchors.left: parent.left
anchors.right: parent.right
caption: qsTr("Surface")
SectionLayout {
PropertyLabel {
text: qsTr("Flip Grid")
tooltip: qsTr("Flip horizontal grid")
Layout.fillWidth: true
}
SecondColumnLayout {
CheckBox {
backendValue: backendValues.flipHorizontalGrid
Layout.fillWidth: true
}
}
PropertyLabel {
text: qsTr("Polar Coordinates")
tooltip: qsTr("Use polar coordinates")
Layout.fillWidth: true
}
SecondColumnLayout {
CheckBox {
id: polarCheckbox
backendValue: backendValues.polar
Layout.fillWidth: true
}
}
PropertyLabel {
text: qsTr("Label Offset")
tooltip: qsTr("Normalized horizontal radial label offset")
Layout.fillWidth: true
visible: polarCheckbox.checked
}
SecondColumnLayout {
visible: polarCheckbox.checked
SpinBox {
backendValue: backendValues.radialLabelOffset
minimumValue: 0.0
maximumValue: 1.0
stepSize: 0.01
decimals: 2
Layout.fillWidth: true
}
}
PropertyLabel {
text: qsTr("Selection Mode")
tooltip: qsTr("Surface point selection mode")
Layout.fillWidth: true
}
SecondColumnLayout {
id: selectionLayout
property bool isInModel: backendValue.isInModel;
property bool isInSubState: backendValue.isInSubState;
property bool selectionChangedFlag: selectionChanged
property variant backendValue: backendValues.selectionMode
property variant valueFromBackend: backendValue.value
property string enumScope: "Graphs3D.SelectionFlag"
property string enumSeparator: " | "
property int checkedCount: 0
property bool item: false
property bool row: false
property bool column: false
property bool slice: false
property bool multi: false
function checkValue(checkedVariable, variableText, expressionBase) {
var expressionStr = expressionBase
if (checkedVariable) {
if (expressionStr !== "") {
expressionStr += enumSeparator
}
expressionStr += enumScope
expressionStr += "."
expressionStr += variableText
checkedCount++
}
return expressionStr
}
function composeSelectionMode() {
var expressionStr = ""
checkedCount = 0
expressionStr = checkValue(item, "Item", expressionStr)
expressionStr = checkValue(row, "Row", expressionStr)
expressionStr = checkValue(column, "Column", expressionStr)
expressionStr = checkValue(slice, "Slice", expressionStr)
expressionStr = checkValue(multi, "MultiSeries", expressionStr)
if (checkedCount === 0)
backendValue.expression = enumScope + ".None"
else
backendValue.expression = expressionStr
}
function evaluate() {
if (backendValue.value === undefined)
return
item = (backendValue.expression.indexOf("Item") !== -1)
row = (backendValue.expression.indexOf("Row") !== -1)
column = (backendValue.expression.indexOf("Column") !== -1)
slice = (backendValue.expression.indexOf("Slice") !== -1)
multi = (backendValue.expression.indexOf("MultiSeries") !== -1)
itemBox.checked = item
rowBox.checked = row
columnBox.checked = column
sliceBox.checked = slice
multiSeriesBox.checked = multi
}
onSelectionChangedFlagChanged: evaluate()
onIsInModelChanged: evaluate()
onIsInSubStateChanged: evaluate()
onBackendValueChanged: evaluate()
onValueFromBackendChanged: evaluate()
ColumnLayout {
anchors.fill: parent
Controls.CheckBox {
id: itemBox
text: "Item"
Layout.fillWidth: true
onClicked: {
selectionLayout.item = checked
selectionLayout.composeSelectionMode()
}
}
Controls.CheckBox {
id: rowBox
text: "Row"
Layout.fillWidth: true
onClicked: {
selectionLayout.row = checked
selectionLayout.composeSelectionMode()
}
}
Controls.CheckBox {
id: columnBox
text: "Column"
Layout.fillWidth: true
onClicked: {
selectionLayout.column = checked
selectionLayout.composeSelectionMode()
}
}
Controls.CheckBox {
id: sliceBox
text: "Slice"
Layout.fillWidth: true
onClicked: {
selectionLayout.slice = checked
selectionLayout.composeSelectionMode()
}
}
Controls.CheckBox {
id: multiSeriesBox
text: "MultiSeries"
Layout.fillWidth: true
onClicked: {
selectionLayout.multi = checked
selectionLayout.composeSelectionMode()
}
}
}
}
}
}
GraphsSection {}
GraphsCameraSection {}
}