Merge remote-tracking branch 'origin/master' into 4.13

Change-Id: I85e235f2fabf0a98f61f259b7c8820979714fff9
This commit is contained in:
Eike Ziller
2020-07-01 09:18:26 +02:00
6 changed files with 346 additions and 324 deletions

View File

@@ -305,6 +305,8 @@
The \uicontrol Outline view shows an overview of defined types and other
symbols, as well as their properties and hierarchy in a source file.
You can move the code for types and symbols around in the source file
by dragging and dropping them in the outline.
\list
\li To see a complete list of all bindings, select

View File

@@ -0,0 +1,338 @@
/****************************************************************************
**
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** 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 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.
**
****************************************************************************/
import QtQuick 2.0
import HelperWidgets 2.0
import QtQuick.Layouts 1.0
import StudioControls 1.0 as StudioControls
import StudioTheme 1.0 as StudioTheme
Section {
anchors.left: parent.left
anchors.right: parent.right
caption: qsTr("Align")
ColumnLayout {
width: parent.width
enabled: alignDistribute.multiSelection &&
!alignDistribute.selectionHasAnchors &&
alignDistribute.selectionExclusivlyItems &&
!alignDistribute.selectionContainsRootItem
AlignDistribute {
id: alignDistribute
modelNodeBackendProperty: modelNodeBackend
}
Label {
text: qsTr("Align objects")
width: 120
}
RowLayout {
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.alignLeft
tooltip: qsTr("Align left edges.")
onClicked: alignDistribute.alignObjects(AlignDistribute.Left,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.alignCenterHorizontal
tooltip: qsTr("Align horizontal centers.")
onClicked: alignDistribute.alignObjects(AlignDistribute.CenterH,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.alignRight
tooltip: qsTr("Align right edges.")
onClicked: alignDistribute.alignObjects(AlignDistribute.Right,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
}
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.alignTop
tooltip: qsTr("Align top edges.")
onClicked: alignDistribute.alignObjects(AlignDistribute.Top,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.alignCenterVertical
tooltip: qsTr("Align vertical centers.")
onClicked: alignDistribute.alignObjects(AlignDistribute.CenterV,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.alignBottom
tooltip: qsTr("Align bottom edges.")
onClicked: alignDistribute.alignObjects(AlignDistribute.Bottom,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
}
}
Label {
text: qsTr("Distribute objects")
width: 120
}
RowLayout {
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeLeft
tooltip: qsTr("Distribute left edges.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.Left,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeCenterHorizontal
tooltip: qsTr("Distribute horizontal centers.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.CenterH,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeRight
tooltip: qsTr("Distribute right edges.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.Right,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
}
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeTop
tooltip: qsTr("Distribute top edges.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.Top,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeCenterVertical
tooltip: qsTr("Distribute vertical centers.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.CenterV,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeBottom
tooltip: qsTr("Distribute bottom edges.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.Bottom,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
}
}
Label {
text: qsTr("Distribute spacing")
width: 120
}
RowLayout {
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeSpacingHorizontal
tooltip: qsTr("Distribute spacing horizontally.")
onClicked: alignDistribute.distributeSpacing(AlignDistribute.X,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText,
distanceSpinBox.realValue,
buttonRow.getDistributeDirection())
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeSpacingVertical
tooltip: qsTr("Distribute spacing vertically.")
onClicked: alignDistribute.distributeSpacing(AlignDistribute.Y,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText,
distanceSpinBox.realValue,
buttonRow.getDistributeDirection())
}
}
StudioControls.ButtonRow {
id: buttonRow
actionIndicatorVisible: false
StudioControls.ButtonGroup {
id: group
}
function getDistributeDirection()
{
if (buttonLeftToRight.checked)
return AlignDistribute.TopLeft
else if (buttonCenter.checked)
return AlignDistribute.Center
else if (buttonRightToLeft.checked)
return AlignDistribute.BottomRight
else
return AlignDistribute.None
}
AbstractButton {
id: buttonNone
checked: true // default state
buttonIcon: StudioTheme.Constants.distributeOriginNone
checkable: true
StudioControls.ButtonGroup.group: group
}
AbstractButton {
id: buttonLeftToRight
buttonIcon: StudioTheme.Constants.distributeOriginTopLeft
checkable: true
StudioControls.ButtonGroup.group: group
}
AbstractButton {
id: buttonCenter
buttonIcon: StudioTheme.Constants.distributeOriginCenter
checkable: true
StudioControls.ButtonGroup.group: group
}
AbstractButton {
id: buttonRightToLeft
buttonIcon: StudioTheme.Constants.distributeOriginBottomRight
checkable: true
StudioControls.ButtonGroup.group: group
}
StudioControls.RealSpinBox {
id: distanceSpinBox
width: 64
actionIndicatorVisible: false
realFrom: -1000
realTo: 1000
enabled: !buttonNone.checked
}
}
}
SectionLayout {
columns: 2
ItemFilterModel {
id: itemFilterModel
modelNodeBackendProperty: modelNodeBackend
selectionOnly: true
}
Label {
text: qsTr("Align to")
}
ComboBox {
id: alignToComboBox
Layout.fillWidth: true
property int currentEnum: alignTargets.get(alignToComboBox.currentIndex).value
textRole: "text"
model: ListModel {
id: alignTargets
ListElement { text: "Selection"; value: AlignDistribute.Selection }
ListElement { text: "Root"; value: AlignDistribute.Root }
ListElement { text: "Key object"; value: AlignDistribute.KeyObject }
}
}
Label {
text: qsTr("Key object")
}
ComboBox {
id: keyObjectComboBox
enabled: alignToComboBox.currentIndex === 2
model: itemFilterModel.itemModel
Layout.fillWidth: true
property string lastSelectedItem: ""
onCompressedActivated: lastSelectedItem = keyObjectComboBox.currentText
onModelChanged: {
var idx = model.indexOf(keyObjectComboBox.lastSelectedItem)
if (idx !== -1)
keyObjectComboBox.currentIndex = idx
else
lastSelectedItem = "" // TODO
}
}
}
SectionLayout {
columns: 1
Layout.topMargin: 30
visible: alignDistribute.multiSelection &&
(alignDistribute.selectionHasAnchors ||
!alignDistribute.selectionExclusivlyItems ||
alignDistribute.selectionContainsRootItem)
Text {
id: warningTitle
font.family: StudioTheme.Constants.font.family
font.pixelSize: StudioTheme.Values.myFontSize
font.weight: Font.Bold
color: StudioTheme.Values.themeTextColor
text: qsTr("Warning")
}
Text {
id: warningRoot
visible: alignDistribute.selectionContainsRootItem
Layout.fillWidth: true
font.family: StudioTheme.Constants.font.family
font.pixelSize: StudioTheme.Values.myFontSize
color: StudioTheme.Values.themeTextColor
wrapMode: Text.WordWrap
text: qsTr("- The selection contains the root item.")
}
Text {
id: warningNonVisual
visible: !alignDistribute.selectionExclusivlyItems
Layout.fillWidth: true
font.family: StudioTheme.Constants.font.family
font.pixelSize: StudioTheme.Values.myFontSize
color: StudioTheme.Values.themeTextColor
wrapMode: Text.WordWrap
text: qsTr("- The selection contains a non visual item.")
}
Text {
id: warningAnchors
visible: alignDistribute.selectionHasAnchors
Layout.fillWidth: true
font.family: StudioTheme.Constants.font.family
font.pixelSize: StudioTheme.Values.myFontSize
color: StudioTheme.Values.themeTextColor
wrapMode: Text.WordWrap
text: qsTr("- An item in the selection uses anchors.")
}
}
}
}

View File

@@ -325,12 +325,10 @@ Rectangle {
frameVisible: false
id: tabView
height: Math.max(layoutSectionHeight, specficsHeight, advancedHeight) + extraHeight
property int advancedHeight: 0
property int layoutSectionHeight: 0
property int specficsHeight: 0
height: currentHeight + extraHeight
property int currentHeight: getTab(currentIndex).item.implicitHeight
property int extraHeight: 40
Tab {
@@ -340,8 +338,6 @@ Rectangle {
anchors.left: parent.left
anchors.right: parent.right
onImplicitHeightChanged: tabView.specficsHeight = implicitHeight
Loader {
anchors.left: parent.left
anchors.right: parent.right
@@ -366,11 +362,6 @@ Rectangle {
source: specificsUrl;
property int loaderHeight: specificsOne.item.height + tabView.extraHeight
onLoaderHeightChanged: tabView.specficsOneHeight = loaderHeight
onLoaded: {
tabView.specficsOneHeight = loaderHeight
}
}
}
}
@@ -381,8 +372,6 @@ Rectangle {
anchors.left: parent.left
anchors.right: parent.right
onImplicitHeightChanged: tabView.layoutSectionHeight = implicitHeight
LayoutSection {
}
@@ -395,313 +384,8 @@ Rectangle {
backendValueMargins: backendValues.Layout_margins
}
Section {
AlignDistributeSection {
visible: !anchorBackend.isInLayout
anchors.left: parent.left
anchors.right: parent.right
caption: qsTr("Align")
ColumnLayout {
width: parent.width
enabled: alignDistribute.multiSelection &&
!alignDistribute.selectionHasAnchors &&
alignDistribute.selectionExclusivlyItems &&
!alignDistribute.selectionContainsRootItem
AlignDistribute {
id: alignDistribute
modelNodeBackendProperty: modelNodeBackend
}
Label {
text: qsTr("Align objects")
width: 120
}
RowLayout {
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.alignLeft
tooltip: qsTr("Align left edges.")
onClicked: alignDistribute.alignObjects(AlignDistribute.Left,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.alignCenterHorizontal
tooltip: qsTr("Align horizontal centers.")
onClicked: alignDistribute.alignObjects(AlignDistribute.CenterH,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.alignRight
tooltip: qsTr("Align right edges.")
onClicked: alignDistribute.alignObjects(AlignDistribute.Right,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
}
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.alignTop
tooltip: qsTr("Align top edges.")
onClicked: alignDistribute.alignObjects(AlignDistribute.Top,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.alignCenterVertical
tooltip: qsTr("Align vertical centers.")
onClicked: alignDistribute.alignObjects(AlignDistribute.CenterV,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.alignBottom
tooltip: qsTr("Align bottom edges.")
onClicked: alignDistribute.alignObjects(AlignDistribute.Bottom,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
}
}
Label {
text: qsTr("Distribute objects")
width: 120
}
RowLayout {
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeLeft
tooltip: qsTr("Distribute left edges.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.Left,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeCenterHorizontal
tooltip: qsTr("Distribute horizontal centers.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.CenterH,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeRight
tooltip: qsTr("Distribute right edges.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.Right,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
}
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeTop
tooltip: qsTr("Distribute top edges.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.Top,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeCenterVertical
tooltip: qsTr("Distribute vertical centers.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.CenterV,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeBottom
tooltip: qsTr("Distribute bottom edges.")
onClicked: alignDistribute.distributeObjects(AlignDistribute.Bottom,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText)
}
}
}
Label {
text: qsTr("Distribute spacing")
width: 120
}
RowLayout {
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeSpacingHorizontal
tooltip: qsTr("Distribute spacing horizontally.")
onClicked: alignDistribute.distributeSpacing(AlignDistribute.X,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText,
distanceSpinBox.realValue,
buttonRow.getDistributeDirection())
}
AbstractButton {
buttonIcon: StudioTheme.Constants.distributeSpacingVertical
tooltip: qsTr("Distribute spacing vertically.")
onClicked: alignDistribute.distributeSpacing(AlignDistribute.Y,
alignToComboBox.currentEnum,
keyObjectComboBox.currentText,
distanceSpinBox.realValue,
buttonRow.getDistributeDirection())
}
}
StudioControls.ButtonRow {
id: buttonRow
actionIndicatorVisible: false
StudioControls.ButtonGroup {
id: group
}
function getDistributeDirection()
{
if (buttonLeftToRight.checked)
return AlignDistribute.TopLeft
else if (buttonCenter.checked)
return AlignDistribute.Center
else if (buttonRightToLeft.checked)
return AlignDistribute.BottomRight
else
return AlignDistribute.None
}
AbstractButton {
id: buttonNone
checked: true // default state
buttonIcon: StudioTheme.Constants.distributeOriginNone
checkable: true
StudioControls.ButtonGroup.group: group
}
AbstractButton {
id: buttonLeftToRight
buttonIcon: StudioTheme.Constants.distributeOriginTopLeft
checkable: true
StudioControls.ButtonGroup.group: group
}
AbstractButton {
id: buttonCenter
buttonIcon: StudioTheme.Constants.distributeOriginCenter
checkable: true
StudioControls.ButtonGroup.group: group
}
AbstractButton {
id: buttonRightToLeft
buttonIcon: StudioTheme.Constants.distributeOriginBottomRight
checkable: true
StudioControls.ButtonGroup.group: group
}
StudioControls.RealSpinBox {
id: distanceSpinBox
width: 64
actionIndicatorVisible: false
realFrom: -1000
realTo: 1000
enabled: !buttonNone.checked
}
}
}
SectionLayout {
columns: 2
ItemFilterModel {
id: itemFilterModel
modelNodeBackendProperty: modelNodeBackend
selectionOnly: true
}
Label {
text: qsTr("Align to")
}
ComboBox {
id: alignToComboBox
Layout.fillWidth: true
property int currentEnum: alignTargets.get(alignToComboBox.currentIndex).value
textRole: "text"
model: ListModel {
id: alignTargets
ListElement { text: "Selection"; value: AlignDistribute.Selection }
ListElement { text: "Root"; value: AlignDistribute.Root }
ListElement { text: "Key object"; value: AlignDistribute.KeyObject }
}
}
Label {
text: qsTr("Key object")
}
ComboBox {
id: keyObjectComboBox
enabled: alignToComboBox.currentIndex === 2
model: itemFilterModel.itemModel
Layout.fillWidth: true
property string lastSelectedItem: ""
onCompressedActivated: lastSelectedItem = keyObjectComboBox.currentText
onModelChanged: {
var idx = model.indexOf(keyObjectComboBox.lastSelectedItem)
if (idx !== -1)
keyObjectComboBox.currentIndex = idx
else
lastSelectedItem = "" // TODO
}
}
}
SectionLayout {
columns: 1
Layout.topMargin: 30
visible: alignDistribute.multiSelection &&
(alignDistribute.selectionHasAnchors ||
!alignDistribute.selectionExclusivlyItems ||
alignDistribute.selectionContainsRootItem)
Text {
id: warningTitle
font.family: StudioTheme.Constants.font.family
font.pixelSize: StudioTheme.Values.myFontSize
font.weight: Font.Bold
color: StudioTheme.Values.themeTextColor
text: qsTr("Warning")
}
Text {
id: warningRoot
visible: alignDistribute.selectionContainsRootItem
Layout.fillWidth: true
font.family: StudioTheme.Constants.font.family
font.pixelSize: StudioTheme.Values.myFontSize
color: StudioTheme.Values.themeTextColor
wrapMode: Text.WordWrap
text: qsTr("- The selection contains the root item.")
}
Text {
id: warningNonVisual
visible: !alignDistribute.selectionExclusivlyItems
Layout.fillWidth: true
font.family: StudioTheme.Constants.font.family
font.pixelSize: StudioTheme.Values.myFontSize
color: StudioTheme.Values.themeTextColor
wrapMode: Text.WordWrap
text: qsTr("- The selection contains a non visual item.")
}
Text {
id: warningAnchors
visible: alignDistribute.selectionHasAnchors
Layout.fillWidth: true
font.family: StudioTheme.Constants.font.family
font.pixelSize: StudioTheme.Values.myFontSize
color: StudioTheme.Values.themeTextColor
wrapMode: Text.WordWrap
text: qsTr("- An item in the selection uses anchors.")
}
}
}
}
}
}
@@ -713,8 +397,6 @@ Rectangle {
anchors.left: parent.left
anchors.right: parent.right
onImplicitHeightChanged: tabView.advancedHeight = implicitHeight
AdvancedSection {
}
LayerSection {

View File

@@ -67,7 +67,7 @@ namespace ADS
#ifdef Q_OS_LINUX
QPointer<FloatingDockContainer> m_floatingWidget = nullptr;
#endif
DockManager *m_dockManager;
DockManager *m_dockManager = nullptr;
/**
* Private data constructor

View File

@@ -1107,7 +1107,7 @@ FilePath AndroidConfig::defaultSdkPath()
if (Utils::HostOsInfo::isWindowsHost()) {
return Utils::FilePath::fromString(
QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/Android/sdk");
QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/Android/Sdk");
}
return Utils::FilePath::fromString(

View File

@@ -144,7 +144,7 @@ LabelingInfo optLegibility(int k, double lmin, double lstep)
Axis Axis::compute(double dmin, double dmax, double height, double pt)
{
Axis result;
Axis result = {0.0, 0.0, 0.0};
auto score = [](double a, double b, double c, double d) {
return a * 0.2 + b * 0.25 + c * 0.5 + d * 0.05;