// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioControls 1.0 as StudioControls
import StudioTheme 1.0 as StudioTheme
Section {
id: root
anchors.left: parent.left
anchors.right: parent.right
caption: qsTr("Text Extras")
property bool showElide: false
property bool showWrapMode: false
property bool showFormatProperty: false
property bool showFontSizeMode: false
property bool showLineHeight: false
function isBackendValueAvailable(name) {
if (backendValues[name] !== undefined)
return backendValues[name].isAvailable
return false
}
SectionLayout {
id: sectionLayout
PropertyLabel {
visible: root.showWrapMode
text: qsTr("Wrap mode")
tooltip: qsTr("Sets how overflowing text is handled.")
blockedByTemplate: !root.isBackendValueAvailable("wrapMode")
}
SecondColumnLayout {
visible: root.showWrapMode
ComboBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
backendValue: backendValues.wrapMode
scope: "Text"
model: ["NoWrap", "WordWrap", "WrapAnywhere", "Wrap"]
enabled: root.isBackendValueAvailable("wrapMode")
}
ExpandingSpacer {}
}
PropertyLabel {
visible: root.showElide
text: qsTr("Elide")
tooltip: qsTr("Sets how to indicate that more text is available.")
blockedByTemplate: !root.isBackendValueAvailable("elide")
}
SecondColumnLayout {
visible: root.showElide
ComboBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
backendValue: backendValues.elide
scope: "Text"
model: ["ElideNone", "ElideLeft", "ElideMiddle", "ElideRight"]
enabled: root.isBackendValueAvailable("elide")
}
ExpandingSpacer {}
}
PropertyLabel {
visible: root.showFormatProperty
text: qsTr("Format")
tooltip: qsTr("Sets the formatting method of the text.")
blockedByTemplate: !root.isBackendValueAvailable("textFormat")
}
SecondColumnLayout {
visible: root.showFormatProperty
ComboBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
scope: "Text"
model: ["PlainText", "RichText", "AutoText", "StyledText", "MarkdownText"]
backendValue: backendValues.textFormat
enabled: root.isBackendValueAvailable("textFormat")
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Render type")
tooltip: qsTr("Sets the rendering type for this component.")
blockedByTemplate: !root.isBackendValueAvailable("renderType")
}
SecondColumnLayout {
ComboBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
scope: "Text"
model: ["QtRendering", "NativeRendering"]
backendValue: backendValues.renderType
enabled: root.isBackendValueAvailable("renderType")
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Render type quality")
tooltip: qsTr("Sets the quality of the render. This only has an effect when Render type is set to QtRendering.")
blockedByTemplate: !root.isBackendValueAvailable("renderTypeQuality")
enabled: root.isBackendValueAvailable("renderTypeQuality")
&& (backendValues.renderType.value === "QtRendering"
|| backendValues.renderType.enumeration === "QtRendering")
}
SecondColumnLayout {
ComboBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
scope: "Text"
model: ["DefaultRenderTypeQuality", "LowRenderTypeQuality", "NormalRenderTypeQuality",
"HighRenderTypeQuality", "VeryHighRenderTypeQuality"]
backendValue: backendValues.renderTypeQuality
enabled: root.isBackendValueAvailable("renderTypeQuality")
&& (backendValues.renderType.value === "QtRendering"
|| backendValues.renderType.enumeration === "QtRendering")
}
ExpandingSpacer {}
}
PropertyLabel {
visible: root.showLineHeight
text: qsTr("Line height mode")
tooltip: qsTr("Sets how to calculate the line height based on the Line height value.")
blockedByTemplate: !root.isBackendValueAvailable("lineHeightMode")
}
SecondColumnLayout {
visible: root.showLineHeight
ComboBox {
scope: "Text"
model: ["ProportionalHeight", "FixedHeight"]
backendValue: backendValues.lineHeightMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
enabled: root.isBackendValueAvailable("lineHeightMode")
}
ExpandingSpacer {}
}
PropertyLabel {
visible: root.showFontSizeMode
text: qsTr("Size mode")
tooltip: qsTr("Sets how the font size is determined.")
blockedByTemplate: !root.isBackendValueAvailable("fontSizeMode")
}
SecondColumnLayout {
visible: root.showFontSizeMode
ComboBox {
id: fontSizeMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
width: implicitWidth
scope: "Text"
model: ["FixedSize", "HorizontalFit", "VerticalFit", "Fit"]
backendValue: backendValues.fontSizeMode
enabled: root.isBackendValueAvailable("fontSizeMode")
}
ExpandingSpacer {}
}
PropertyLabel {
visible: root.showFontSizeMode
text: qsTr("Min size")
tooltip: qsTr("Sets the minimum font size to use. This has no effect when Size mode is set to Fixed.")
blockedByTemplate: !root.isBackendValueAvailable("minimumPixelSize")
&& !root.isBackendValueAvailable("minimumPointSize")
}
SecondColumnLayout {
visible: root.showFontSizeMode
SpinBox {
enabled: (fontSizeMode.currentIndex !== 0)
|| root.isBackendValueAvailable("minimumPixelSize")
minimumValue: 0
maximumValue: 500
decimals: 0
backendValue: backendValues.minimumPixelSize
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "px"
tooltip: qsTr("Minimum font pixel size of scaled text.")
enabled: root.isBackendValueAvailable("minimumPixelSize")
}
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
enabled: (fontSizeMode.currentIndex !== 0)
|| root.isBackendValueAvailable("minimumPointSize")
minimumValue: 0
maximumValue: 500
decimals: 0
backendValue: backendValues.minimumPointSize
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "pt"
tooltip: qsTr("Minimum font point size of scaled text.")
enabled: root.isBackendValueAvailable("minimumPointSize")
}
ExpandingSpacer {}
}
PropertyLabel {
visible: root.showElide
text: qsTr("Max line count")
tooltip: qsTr("Sets the max number of lines that the text component shows.")
blockedByTemplate: !root.isBackendValueAvailable("maximumLineCount")
}
SecondColumnLayout {
visible: root.showElide
SpinBox {
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
backendValue: backendValues.maximumLineCount
minimumValue: 0
maximumValue: 10000
decimals: 0
enabled: root.isBackendValueAvailable("maximumLineCount")
}
ExpandingSpacer {}
}
}
}