First upload, 18 controller version
This commit is contained in:
@@ -0,0 +1,387 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,183 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
||||
|
||||
import QtQuick 2.0
|
||||
import HelperWidgets 2.0
|
||||
import QtQuick.Layouts 1.0
|
||||
|
||||
Column {
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
Section {
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
caption: qsTr("Scatter3D")
|
||||
|
||||
SectionLayout {
|
||||
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 {
|
||||
ComboBox {
|
||||
backendValue: backendValues.selectionMode
|
||||
model: ["SelectionNone", "SelectionItem"]
|
||||
Layout.fillWidth: true
|
||||
scope: "AbstractGraph3D"
|
||||
}
|
||||
}
|
||||
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("Horizontal to Vertical Aspect Ratio")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
SecondColumnLayout {
|
||||
SpinBox {
|
||||
backendValue: backendValues.aspectRatio
|
||||
minimumValue: 0.1
|
||||
maximumValue: 10.0
|
||||
stepSize: 0.1
|
||||
decimals: 1
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
Label {
|
||||
text: qsTr("optimizationHints")
|
||||
tooltip: qsTr("Optimization Hints")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
SecondColumnLayout {
|
||||
ComboBox {
|
||||
backendValue: backendValues.optimizationHints
|
||||
model: ["OptimizationDefault", "OptimizationStatic"]
|
||||
Layout.fillWidth: true
|
||||
scope: "AbstractGraph3D"
|
||||
}
|
||||
}
|
||||
Label {
|
||||
text: qsTr("polar")
|
||||
tooltip: qsTr("Use Polar Coordinates")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
SecondColumnLayout {
|
||||
CheckBox {
|
||||
id: polarCheckbox
|
||||
backendValue: backendValues.polar
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
Label {
|
||||
text: qsTr("radialLabelOffset")
|
||||
tooltip: qsTr("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
|
||||
}
|
||||
}
|
||||
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("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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,324 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
||||
|
||||
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("Surface3D")
|
||||
|
||||
SectionLayout {
|
||||
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("Horizontal to Vertical Aspect Ratio")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
SecondColumnLayout {
|
||||
SpinBox {
|
||||
backendValue: backendValues.aspectRatio
|
||||
minimumValue: 0.1
|
||||
maximumValue: 10.0
|
||||
stepSize: 0.1
|
||||
decimals: 1
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
Label {
|
||||
text: qsTr("flipHorizontalGrid")
|
||||
tooltip: qsTr("Flip Horizontal Grid")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
SecondColumnLayout {
|
||||
CheckBox {
|
||||
backendValue: backendValues.flipHorizontalGrid
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
Label {
|
||||
text: qsTr("polar")
|
||||
tooltip: qsTr("Use Polar Coordinates")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
SecondColumnLayout {
|
||||
CheckBox {
|
||||
id: polarCheckbox
|
||||
backendValue: backendValues.polar
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
Label {
|
||||
text: qsTr("radialLabelOffset")
|
||||
tooltip: qsTr("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
|
||||
}
|
||||
}
|
||||
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("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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
||||
|
||||
import QtQuick 2.0
|
||||
import QtDataVisualization 1.2
|
||||
|
||||
Bars3D {
|
||||
width: 300
|
||||
height: 300
|
||||
Bar3DSeries {
|
||||
ItemModelBarDataProxy {
|
||||
itemModel: ListModel {
|
||||
ListElement{ row: "row 1"; column: "column 1"; value: "1"; }
|
||||
ListElement{ row: "row 1"; column: "column 2"; value: "2"; }
|
||||
ListElement{ row: "row 1"; column: "column 3"; value: "3"; }
|
||||
}
|
||||
|
||||
rowRole: "row"
|
||||
columnRole: "column"
|
||||
valueRole: "value"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
||||
|
||||
import QtQuick 2.0
|
||||
import QtDataVisualization 1.2
|
||||
|
||||
Scatter3D {
|
||||
width: 300
|
||||
height: 300
|
||||
Scatter3DSeries {
|
||||
ItemModelScatterDataProxy {
|
||||
itemModel: ListModel {
|
||||
ListElement{ x: "1"; y: "2"; z: "3"; }
|
||||
ListElement{ x: "2"; y: "3"; z: "4"; }
|
||||
ListElement{ x: "3"; y: "4"; z: "1"; }
|
||||
}
|
||||
|
||||
xPosRole: "x"
|
||||
yPosRole: "y"
|
||||
zPosRole: "z"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
|
||||
|
||||
import QtQuick 2.0
|
||||
import QtDataVisualization 1.2
|
||||
|
||||
Surface3D {
|
||||
width: 300
|
||||
height: 300
|
||||
Surface3DSeries {
|
||||
ItemModelSurfaceDataProxy {
|
||||
itemModel: ListModel {
|
||||
ListElement{ row: "1"; column: "1"; y: "1"; }
|
||||
ListElement{ row: "1"; column: "2"; y: "2"; }
|
||||
ListElement{ row: "2"; column: "1"; y: "3"; }
|
||||
ListElement{ row: "2"; column: "2"; y: "4"; }
|
||||
}
|
||||
|
||||
rowRole: "row"
|
||||
columnRole: "column"
|
||||
yPosRole: "y"
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,44 @@
|
||||
MetaInfo {
|
||||
Type {
|
||||
name: "QtDataVisualization.Bars3D"
|
||||
icon: "images/bars3d-icon16.png"
|
||||
|
||||
ItemLibraryEntry {
|
||||
name: "Bars3D"
|
||||
category: "Qt Data Visualization"
|
||||
libraryIcon: "images/bars3d-icon.png"
|
||||
version: "1.0"
|
||||
requiredImport: "QtDataVisualization"
|
||||
|
||||
QmlSource { source: "default/Bars3D.qml" }
|
||||
}
|
||||
}
|
||||
Type {
|
||||
name: "QtDataVisualization.Scatter3D"
|
||||
icon: "images/scatter3d-icon16.png"
|
||||
|
||||
ItemLibraryEntry {
|
||||
name: "Scatter3D"
|
||||
category: "Qt Data Visualization"
|
||||
libraryIcon: "images/scatter3d-icon.png"
|
||||
version: "1.0"
|
||||
requiredImport: "QtDataVisualization"
|
||||
|
||||
QmlSource { source: "default/Scatter3D.qml" }
|
||||
}
|
||||
}
|
||||
Type {
|
||||
name: "QtDataVisualization.Surface3D"
|
||||
icon: "images/surface3d-icon16.png"
|
||||
|
||||
ItemLibraryEntry {
|
||||
name: "Surface3D"
|
||||
category: "Qt Data Visualization"
|
||||
libraryIcon: "images/surface3d-icon.png"
|
||||
version: "1.0"
|
||||
requiredImport: "QtDataVisualization"
|
||||
|
||||
QmlSource { source: "default/Surface3D.qml" }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user