2013-09-16 16:55:07 +02:00
|
|
|
/****************************************************************************
|
|
|
|
|
**
|
2021-07-26 17:59:55 +02:00
|
|
|
** Copyright (C) 2021 The Qt Company Ltd.
|
2016-01-15 14:59:14 +01:00
|
|
|
** Contact: https://www.qt.io/licensing/
|
2013-09-16 16:55:07 +02:00
|
|
|
**
|
2015-09-18 11:34:48 +02:00
|
|
|
** This file is part of Qt Creator.
|
2013-09-16 16:55:07 +02:00
|
|
|
**
|
2015-09-18 11:34:48 +02:00
|
|
|
** 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
|
2016-01-15 14:59:14 +01:00
|
|
|
** 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.
|
2013-09-16 16:55:07 +02:00
|
|
|
**
|
2015-09-18 11:34:48 +02:00
|
|
|
** GNU General Public License Usage
|
|
|
|
|
** Alternatively, this file may be used under the terms of the GNU
|
2016-01-15 14:59:14 +01:00
|
|
|
** General Public License version 3 as published by the Free Software
|
|
|
|
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
|
|
|
|
** 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.
|
2013-09-16 16:55:07 +02:00
|
|
|
**
|
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
2021-06-21 16:48:19 +02:00
|
|
|
import QtQuick 2.15
|
|
|
|
|
import QtQuick.Layouts 1.15
|
2013-09-16 16:55:07 +02:00
|
|
|
import HelperWidgets 2.0
|
2021-06-21 16:48:19 +02:00
|
|
|
import StudioControls 1.0 as StudioControls
|
|
|
|
|
import StudioTheme 1.0 as StudioTheme
|
2013-09-16 16:55:07 +02:00
|
|
|
|
|
|
|
|
Section {
|
2021-06-29 15:55:44 +02:00
|
|
|
id: root
|
2021-07-02 10:36:07 +02:00
|
|
|
caption: qsTr("Geometry - 2D")
|
2013-09-16 16:55:07 +02:00
|
|
|
|
2014-06-24 10:51:08 +02:00
|
|
|
anchors.left: parent.left
|
|
|
|
|
anchors.right: parent.right
|
|
|
|
|
|
2021-06-29 15:55:44 +02:00
|
|
|
readonly property string disbaledTooltip: qsTr("This property is defined by an anchor or a layout.")
|
|
|
|
|
|
|
|
|
|
function positionDisabled() {
|
|
|
|
|
return anchorBackend.isFilled || anchorBackend.isInLayout
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function xDisabled() {
|
|
|
|
|
return anchorBackend.leftAnchored
|
|
|
|
|
|| anchorBackend.rightAnchored
|
|
|
|
|
|| anchorBackend.horizontalCentered
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function yDisabled() {
|
|
|
|
|
return anchorBackend.topAnchored
|
|
|
|
|
|| anchorBackend.bottomAnchored
|
|
|
|
|
|| anchorBackend.verticalCentered
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function sizeDisabled() {
|
|
|
|
|
return anchorBackend.isFilled
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function widthDisabled() {
|
|
|
|
|
return anchorBackend.leftAnchored && anchorBackend.rightAnchored
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function heightDisabled() {
|
|
|
|
|
return anchorBackend.topAnchored && anchorBackend.bottomAnchored
|
|
|
|
|
}
|
|
|
|
|
|
2013-09-16 16:55:07 +02:00
|
|
|
SectionLayout {
|
2021-07-13 18:36:25 +02:00
|
|
|
PropertyLabel {
|
|
|
|
|
text: qsTr("Position")
|
|
|
|
|
enabled: xSpinBox.enabled || ySpinBox.enabled
|
|
|
|
|
}
|
2013-09-16 16:55:07 +02:00
|
|
|
|
|
|
|
|
SecondColumnLayout {
|
|
|
|
|
SpinBox {
|
2021-06-29 15:55:44 +02:00
|
|
|
id: xSpinBox
|
2021-06-21 16:48:19 +02:00
|
|
|
implicitWidth: StudioTheme.Values.twoControlColumnWidth
|
|
|
|
|
+ StudioTheme.Values.actionIndicatorWidth
|
2013-09-16 16:55:07 +02:00
|
|
|
backendValue: backendValues.x
|
|
|
|
|
maximumValue: 0xffff
|
|
|
|
|
minimumValue: -0xffff
|
|
|
|
|
decimals: 0
|
2021-06-29 15:55:44 +02:00
|
|
|
enabled: !root.positionDisabled() && !root.xDisabled()
|
2013-09-16 16:55:07 +02:00
|
|
|
}
|
|
|
|
|
|
2021-06-21 16:48:19 +02:00
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
|
2013-10-23 13:34:48 +02:00
|
|
|
|
2021-06-29 15:55:44 +02:00
|
|
|
ControlLabel {
|
|
|
|
|
text: "X"
|
|
|
|
|
tooltip: xSpinBox.enabled ? "X" : root.disbaledTooltip
|
2021-07-13 18:36:25 +02:00
|
|
|
enabled: xSpinBox.enabled
|
2021-06-29 15:55:44 +02:00
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlGap }
|
2013-09-16 16:55:07 +02:00
|
|
|
|
|
|
|
|
SpinBox {
|
2021-06-29 15:55:44 +02:00
|
|
|
id: ySpinBox
|
2021-06-21 16:48:19 +02:00
|
|
|
implicitWidth: StudioTheme.Values.twoControlColumnWidth
|
|
|
|
|
+ StudioTheme.Values.actionIndicatorWidth
|
2013-09-16 16:55:07 +02:00
|
|
|
backendValue: backendValues.y
|
|
|
|
|
maximumValue: 0xffff
|
|
|
|
|
minimumValue: -0xffff
|
|
|
|
|
decimals: 0
|
2021-06-29 15:55:44 +02:00
|
|
|
enabled: !root.positionDisabled() && !root.yDisabled()
|
2013-09-16 16:55:07 +02:00
|
|
|
}
|
2013-10-23 10:19:22 +02:00
|
|
|
|
2021-06-21 16:48:19 +02:00
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
|
2013-09-16 16:55:07 +02:00
|
|
|
|
2021-06-29 15:55:44 +02:00
|
|
|
ControlLabel {
|
|
|
|
|
text: "Y"
|
|
|
|
|
tooltip: xSpinBox.enabled ? "Y" : root.disbaledTooltip
|
2021-07-13 18:36:25 +02:00
|
|
|
enabled: ySpinBox.enabled
|
2021-06-29 15:55:44 +02:00
|
|
|
}
|
2013-09-16 16:55:07 +02:00
|
|
|
|
2021-06-21 16:48:19 +02:00
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlGap }
|
|
|
|
|
|
|
|
|
|
LinkIndicator2D {}
|
|
|
|
|
|
|
|
|
|
ExpandingSpacer {}
|
|
|
|
|
}
|
2013-09-16 16:55:07 +02:00
|
|
|
|
2021-07-13 18:36:25 +02:00
|
|
|
PropertyLabel {
|
|
|
|
|
text: qsTr("Size")
|
|
|
|
|
enabled: widthSpinBox.enabled || heightSpinBox.enabled
|
|
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
SecondColumnLayout {
|
2013-09-16 16:55:07 +02:00
|
|
|
SpinBox {
|
2021-06-29 15:55:44 +02:00
|
|
|
id: widthSpinBox
|
2021-06-21 16:48:19 +02:00
|
|
|
implicitWidth: StudioTheme.Values.twoControlColumnWidth
|
|
|
|
|
+ StudioTheme.Values.actionIndicatorWidth
|
2013-09-16 16:55:07 +02:00
|
|
|
backendValue: backendValues.width
|
|
|
|
|
maximumValue: 0xffff
|
2014-04-14 11:37:49 +02:00
|
|
|
minimumValue: 0
|
2013-09-16 16:55:07 +02:00
|
|
|
decimals: 0
|
2021-06-29 15:55:44 +02:00
|
|
|
enabled: !root.sizeDisabled() && !root.widthDisabled()
|
2013-09-16 16:55:07 +02:00
|
|
|
}
|
|
|
|
|
|
2021-06-21 16:48:19 +02:00
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
|
2013-10-23 13:34:48 +02:00
|
|
|
|
2021-06-29 15:55:44 +02:00
|
|
|
ControlLabel {
|
2021-07-13 18:36:25 +02:00
|
|
|
//: The width of the object
|
|
|
|
|
text: qsTr("W", "width")
|
2021-06-29 15:55:44 +02:00
|
|
|
tooltip: widthSpinBox.enabled ? qsTr("Width") : root.disbaledTooltip
|
2021-07-13 18:36:25 +02:00
|
|
|
enabled: widthSpinBox.enabled
|
2021-06-29 15:55:44 +02:00
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlGap }
|
2013-09-16 16:55:07 +02:00
|
|
|
|
|
|
|
|
SpinBox {
|
2021-06-29 15:55:44 +02:00
|
|
|
id: heightSpinBox
|
2021-06-21 16:48:19 +02:00
|
|
|
implicitWidth: StudioTheme.Values.twoControlColumnWidth
|
|
|
|
|
+ StudioTheme.Values.actionIndicatorWidth
|
2013-09-16 16:55:07 +02:00
|
|
|
backendValue: backendValues.height
|
|
|
|
|
maximumValue: 0xffff
|
2014-04-14 11:37:49 +02:00
|
|
|
minimumValue: 0
|
2013-09-16 16:55:07 +02:00
|
|
|
decimals: 0
|
2021-06-29 15:55:44 +02:00
|
|
|
enabled: !root.sizeDisabled() && !root.heightDisabled()
|
2013-09-16 16:55:07 +02:00
|
|
|
}
|
2013-10-23 10:19:22 +02:00
|
|
|
|
2021-06-21 16:48:19 +02:00
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
|
|
|
|
|
|
2021-06-29 15:55:44 +02:00
|
|
|
ControlLabel {
|
2021-07-13 18:36:25 +02:00
|
|
|
//: The height of the object
|
|
|
|
|
text: qsTr("H", "height")
|
2021-06-29 15:55:44 +02:00
|
|
|
tooltip: heightSpinBox.enabled ? qsTr("Height") : root.disbaledTooltip
|
2021-07-13 18:36:25 +02:00
|
|
|
enabled: heightSpinBox.enabled
|
2021-06-29 15:55:44 +02:00
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlGap }
|
|
|
|
|
|
|
|
|
|
LinkIndicator2D {}
|
|
|
|
|
|
|
|
|
|
ExpandingSpacer {}
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-13 18:36:25 +02:00
|
|
|
PropertyLabel {
|
|
|
|
|
text: qsTr("Rotation")
|
|
|
|
|
blockedByTemplate: !backendValues.rotation.isAvailable
|
|
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
SecondColumnLayout {
|
|
|
|
|
SpinBox {
|
|
|
|
|
implicitWidth: StudioTheme.Values.twoControlColumnWidth
|
|
|
|
|
+ StudioTheme.Values.actionIndicatorWidth
|
|
|
|
|
backendValue: backendValues.rotation
|
|
|
|
|
decimals: 2
|
|
|
|
|
minimumValue: -360
|
|
|
|
|
maximumValue: 360
|
|
|
|
|
enabled: backendValues.rotation.isAvailable
|
2013-10-23 10:19:22 +02:00
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
|
|
|
|
|
|
2021-07-13 18:36:25 +02:00
|
|
|
ControlLabel {
|
|
|
|
|
text: "°"
|
|
|
|
|
enabled: backendValues.rotation.isAvailable
|
|
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlGap }
|
|
|
|
|
|
|
|
|
|
StudioControls.ButtonRow {
|
|
|
|
|
actionIndicatorVisible: true
|
|
|
|
|
|
|
|
|
|
StudioControls.ButtonGroup { id: mirrorGroup }
|
|
|
|
|
|
|
|
|
|
StudioControls.AbstractButton {
|
|
|
|
|
id: mirrorVertical
|
|
|
|
|
buttonIcon: StudioTheme.Constants.mirror
|
|
|
|
|
checkable: true
|
|
|
|
|
autoExclusive: true
|
|
|
|
|
StudioControls.ButtonGroup.group: mirrorGroup
|
|
|
|
|
checked: true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
StudioControls.AbstractButton {
|
|
|
|
|
id: mirrorHorizontal
|
|
|
|
|
buttonIcon: StudioTheme.Constants.mirror
|
|
|
|
|
checkable: true
|
|
|
|
|
autoExclusive: true
|
|
|
|
|
StudioControls.ButtonGroup.group: mirrorGroup
|
|
|
|
|
iconRotation: 90
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExpandingSpacer {}
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-13 18:36:25 +02:00
|
|
|
PropertyLabel {
|
|
|
|
|
text: qsTr("Scale")
|
|
|
|
|
blockedByTemplate: !backendValues.scale.isAvailable
|
|
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
SecondColumnLayout {
|
|
|
|
|
SpinBox {
|
|
|
|
|
implicitWidth: StudioTheme.Values.singleControlColumnWidth
|
|
|
|
|
+ StudioTheme.Values.actionIndicatorWidth
|
|
|
|
|
sliderIndicatorVisible: true
|
|
|
|
|
backendValue: backendValues.scale
|
|
|
|
|
decimals: 2
|
|
|
|
|
stepSize: 0.1
|
|
|
|
|
minimumValue: -10
|
|
|
|
|
maximumValue: 10
|
|
|
|
|
enabled: backendValues.scale.isAvailable
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
|
|
|
|
|
|
2021-07-13 18:36:25 +02:00
|
|
|
ControlLabel {
|
|
|
|
|
text: "%"
|
|
|
|
|
enabled: backendValues.scale.isAvailable
|
|
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
ExpandingSpacer {}
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-02 10:36:07 +02:00
|
|
|
PropertyLabel { text: qsTr("Z stack") }
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
SecondColumnLayout {
|
|
|
|
|
SpinBox {
|
|
|
|
|
implicitWidth: StudioTheme.Values.twoControlColumnWidth
|
|
|
|
|
+ StudioTheme.Values.actionIndicatorWidth
|
|
|
|
|
backendValue: backendValues.z
|
|
|
|
|
minimumValue: -100
|
|
|
|
|
maximumValue: 100
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExpandingSpacer {}
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-13 18:36:25 +02:00
|
|
|
PropertyLabel {
|
|
|
|
|
text: qsTr("Origin")
|
|
|
|
|
blockedByTemplate: !backendValues.transformOrigin.isAvailable
|
|
|
|
|
}
|
2021-06-21 16:48:19 +02:00
|
|
|
|
|
|
|
|
SecondColumnLayout {
|
|
|
|
|
OriginControl {
|
|
|
|
|
backendValue: backendValues.transformOrigin
|
|
|
|
|
enabled: backendValues.transformOrigin.isAvailable
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ExpandingSpacer {}
|
2013-09-16 16:55:07 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|