| /**************************************************************************** |
| ** |
| ** Copyright (C) 2016 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the Qt Data Visualization module of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:GPL$ |
| ** Commercial License Usage |
| ** Licensees holding valid commercial Qt licenses may use this file in |
| ** accordance with the commercial license agreement provided with the |
| ** Software or, alternatively, in accordance with the terms contained in |
| ** a written agreement between you and The Qt Company. For licensing terms |
| ** and conditions see https://www.qt.io/terms-conditions. For further |
| ** information use the contact form at https://www.qt.io/contact-us. |
| ** |
| ** GNU General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU |
| ** General Public License version 3 or (at your option) any later version |
| ** approved by the KDE Free Qt Foundation. The licenses are as published by |
| ** the Free Software Foundation and appearing in the file LICENSE.GPL3 |
| ** included in the packaging of this file. Please review the following |
| ** information to ensure the GNU General Public License requirements will |
| ** be met: https://www.gnu.org/licenses/gpl-3.0.html. |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| import QtQuick 2.0 |
| import HelperWidgets 2.0 |
| import QtQuick.Layouts 1.0 |
| import QtQuick.Controls 1.1 as Controls |
| |
| Column { |
| anchors.left: parent.left |
| anchors.right: parent.right |
| |
| Section { |
| anchors.left: parent.left |
| anchors.right: parent.right |
| caption: qsTr("Bars3D") |
| |
| SectionLayout { |
| Label { |
| text: qsTr("multiSeriesUniform") |
| tooltip: qsTr("Multiseries Uniform") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| CheckBox { |
| backendValue: backendValues.multiSeriesUniform |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("barThickness") |
| tooltip: qsTr("Bar Thickness Ratio") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| SpinBox { |
| backendValue: backendValues.barThickness |
| minimumValue: 0.01 |
| maximumValue: 100.0 |
| stepSize: 0.01 |
| decimals: 2 |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("barSpacing") |
| tooltip: qsTr("Bar Spacing") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| SpinBox { |
| prefix: "col: " |
| backendValue: backendValues.barSpacing_width |
| minimumValue: 0.0 |
| maximumValue: 10.0 |
| stepSize: 0.01 |
| decimals: 2 |
| Layout.fillWidth: true |
| } |
| SpinBox { |
| prefix: "row: " |
| backendValue: backendValues.barSpacing_height |
| minimumValue: 0.0 |
| maximumValue: 10.0 |
| stepSize: 0.01 |
| decimals: 2 |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("barSpacingRelative") |
| tooltip: qsTr("Bar Spacing Relative") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| CheckBox { |
| backendValue: backendValues.barSpacingRelative |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("renderingMode") |
| tooltip: qsTr("Rendering Mode") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| ComboBox { |
| backendValue: backendValues.renderingMode |
| model: ["RenderIndirect", "RenderDirectToBackground", |
| "RenderDirectToBackground_NoClear"] |
| Layout.fillWidth: true |
| scope: "AbstractGraph3D" |
| } |
| } |
| Label { |
| text: qsTr("msaaSamples") |
| tooltip: qsTr("MSAA Sample Count") |
| Layout.fillWidth: true |
| } |
| SpinBox { |
| suffix: " x MSAA" |
| backendValue: backendValues.msaaSamples |
| minimumValue: 0 |
| maximumValue: 16 |
| Layout.fillWidth: true |
| } |
| Label { |
| text: qsTr("shadowQuality") |
| tooltip: qsTr("Shadow Quality") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| ComboBox { |
| backendValue: backendValues.shadowQuality |
| model: ["ShadowQualityNone", "ShadowQualityLow", "ShadowQualityMedium", |
| "ShadowQualityHigh", "ShadowQualitySoftLow", "ShadowQualitySoftMedium", |
| "ShadowQualitySoftHigh"] |
| Layout.fillWidth: true |
| scope: "AbstractGraph3D" |
| } |
| } |
| Label { |
| text: qsTr("selectionMode") |
| tooltip: qsTr("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: "AbstractGraph3D" |
| property string enumSeparator: " | " |
| property int checkedCount: 0 |
| property bool selectionItem: false |
| property bool selectionRow: false |
| property bool selectionColumn: false |
| property bool selectionSlice: false |
| property bool selectionMulti: 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(selectionItem, "SelectionItem", expressionStr) |
| expressionStr = checkValue(selectionRow, "SelectionRow", expressionStr) |
| expressionStr = checkValue(selectionColumn, "SelectionColumn", expressionStr) |
| expressionStr = checkValue(selectionSlice, "SelectionSlice", expressionStr) |
| expressionStr = checkValue(selectionMulti, "SelectionMultiSeries", expressionStr) |
| |
| if (checkedCount === 0) |
| backendValue.expression = enumScope + ".SelectionNone" |
| else |
| backendValue.expression = expressionStr |
| } |
| |
| function evaluate() { |
| if (backendValue.value === undefined) |
| return |
| |
| selectionItem = (backendValue.expression.indexOf("SelectionItem") !== -1) |
| selectionRow = (backendValue.expression.indexOf("SelectionRow") !== -1) |
| selectionColumn = (backendValue.expression.indexOf("SelectionColumn") !== -1) |
| selectionSlice = (backendValue.expression.indexOf("SelectionSlice") !== -1) |
| selectionMulti = (backendValue.expression.indexOf("SelectionMultiSeries") !== -1) |
| |
| selectionItemBox.checked = selectionItem |
| selectionRowBox.checked = selectionRow |
| selectionColumnBox.checked = selectionColumn |
| selectionSliceBox.checked = selectionSlice |
| selectionMultiSeriesBox.checked = selectionMulti |
| } |
| |
| onSelectionChangedFlagChanged: evaluate() |
| |
| onIsInModelChanged: evaluate() |
| |
| onIsInSubStateChanged: evaluate() |
| |
| onBackendValueChanged: evaluate() |
| |
| onValueFromBackendChanged: evaluate() |
| |
| ColumnLayout { |
| anchors.fill: parent |
| |
| Controls.CheckBox { |
| id: selectionItemBox |
| style: checkBox.style |
| text: "SelectionItem" |
| Layout.fillWidth: true |
| onClicked: { |
| selectionLayout.selectionItem = checked |
| selectionLayout.composeSelectionMode() |
| } |
| } |
| Controls.CheckBox { |
| id: selectionRowBox |
| style: checkBox.style |
| text: "SelectionRow" |
| Layout.fillWidth: true |
| onClicked: { |
| selectionLayout.selectionRow = checked |
| selectionLayout.composeSelectionMode() |
| } |
| } |
| Controls.CheckBox { |
| id: selectionColumnBox |
| style: checkBox.style |
| text: "SelectionColumn" |
| Layout.fillWidth: true |
| onClicked: { |
| selectionLayout.selectionColumn = checked |
| selectionLayout.composeSelectionMode() |
| } |
| } |
| Controls.CheckBox { |
| id: selectionSliceBox |
| style: checkBox.style |
| text: "SelectionSlice" |
| Layout.fillWidth: true |
| onClicked: { |
| selectionLayout.selectionSlice = checked |
| selectionLayout.composeSelectionMode() |
| } |
| } |
| Controls.CheckBox { |
| id: selectionMultiSeriesBox |
| style: checkBox.style |
| text: "SelectionMultiSeries" |
| Layout.fillWidth: true |
| onClicked: { |
| selectionLayout.selectionMulti = checked |
| selectionLayout.composeSelectionMode() |
| } |
| } |
| } |
| } |
| Label { |
| text: qsTr("measureFps") |
| tooltip: qsTr("Measure Frames Per Second") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| CheckBox { |
| backendValue: backendValues.measureFps |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("orthoProjection") |
| tooltip: qsTr("Use Orthographic Projection") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| CheckBox { |
| backendValue: backendValues.orthoProjection |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("aspectRatio") |
| tooltip: qsTr("Aspect Ratio") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| SpinBox { |
| backendValue: backendValues.aspectRatio |
| minimumValue: 0.01 |
| maximumValue: 100.0 |
| stepSize: 0.01 |
| decimals: 2 |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("floorLevel") |
| tooltip: qsTr("Floor Level") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| LineEdit { |
| backendValue: backendValues.floorLevel |
| inputMethodHints: Qt.ImhFormattedNumbersOnly |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("horizontalAspectRatio") |
| tooltip: qsTr("Horizontal Aspect Ratio") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| SpinBox { |
| backendValue: backendValues.horizontalAspectRatio |
| minimumValue: 0.0 |
| maximumValue: 100.0 |
| stepSize: 0.01 |
| decimals: 2 |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("reflection") |
| tooltip: qsTr("Reflection") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| CheckBox { |
| id: reflectionCheckbox |
| backendValue: backendValues.reflection |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("reflectivity") |
| tooltip: qsTr("Reflectivity") |
| Layout.fillWidth: true |
| visible: reflectionCheckbox.checked |
| } |
| SecondColumnLayout { |
| visible: reflectionCheckbox.checked |
| SpinBox { |
| backendValue: backendValues.reflectivity |
| minimumValue: 0.0 |
| maximumValue: 1.0 |
| stepSize: 0.01 |
| decimals: 1 |
| Layout.fillWidth: true |
| } |
| } |
| Label { |
| text: qsTr("margin") |
| tooltip: qsTr("Graph Margin") |
| Layout.fillWidth: true |
| } |
| SecondColumnLayout { |
| SpinBox { |
| backendValue: backendValues.margin |
| minimumValue: -1.0 |
| maximumValue: 100.0 |
| stepSize: 0.1 |
| decimals: 1 |
| Layout.fillWidth: true |
| } |
| } |
| |
| // Kept for debugging |
| Label { } |
| SecondColumnLayout { |
| TextEdit { |
| id: debugLabel |
| Layout.fillWidth: true |
| wrapMode: TextEdit.WordWrap |
| textFormat: TextEdit.RichText |
| width: 400 |
| visible: false |
| } |
| } |
| Controls.CheckBox { |
| property color textColor: colorLogic.textColor |
| id: checkBox |
| style: CustomCheckBoxStyle {} |
| visible: false |
| ColorLogic { |
| id: colorLogic |
| backendValue: backendValues.selectionMode |
| } |
| } |
| } |
| } |
| } |