forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.10'
Change-Id: Ida1659af5c9c72b67b01645c88aea4ea60e09b7f
This commit is contained in:
BIN
doc/images/qtcreator-build-steps-cmake-ninja.png
Normal file
BIN
doc/images/qtcreator-build-steps-cmake-ninja.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
doc/images/studio-curve-editor.png
Normal file
BIN
doc/images/studio-curve-editor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2017 The Qt Company Ltd.
|
** Copyright (C) 2019 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the Qt Creator documentation.
|
** This file is part of the Qt Creator documentation.
|
||||||
@@ -73,9 +73,42 @@
|
|||||||
|
|
||||||
\image qtcreator-cmake-build-steps.png
|
\image qtcreator-cmake-build-steps.png
|
||||||
|
|
||||||
|
\note While the other CMake generators are installed together with Qt,
|
||||||
|
you usually need to install Ninja yourself. For more information, see
|
||||||
|
\l {Using Ninja as a CMake Generator}.
|
||||||
|
|
||||||
//! [cmake build steps]
|
//! [cmake build steps]
|
||||||
|
|
||||||
|
|
||||||
|
//! [cmake ninja]
|
||||||
|
|
||||||
|
\section2 Using Ninja as a CMake Generator
|
||||||
|
|
||||||
|
To use \l {https://ninja-build.org/}{Ninja} with CMake, you must install it
|
||||||
|
and select it as the CMake generator in the build and run kit:
|
||||||
|
|
||||||
|
\list 1
|
||||||
|
\li Install Ninja.
|
||||||
|
\li Add the path to the Ninja executable to the value of the PATH system
|
||||||
|
variable.
|
||||||
|
\li Select \uicontrol Tools > \uicontrol Options > \uicontrol Kits, and
|
||||||
|
then select the build and run kit for the project.
|
||||||
|
\li Select \uicontrol Change next to the \uicontrol {CMake generator}
|
||||||
|
field to open the \uicontrol {CMake Generator} dialog.
|
||||||
|
\image qtcreator-build-steps-cmake-ninja.png
|
||||||
|
\li In the \uicontrol Generator field, select \uicontrol Ninja.
|
||||||
|
\li Select \uicontrol OK to return to the \uicontrol Kits tab.
|
||||||
|
\li Select \uicontrol OK or \uicontrol Apply to save your changes.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
\note To make sure that old build artifacts don't get in the way
|
||||||
|
the first time you build the project after the change, select
|
||||||
|
\uicontrol Build > \uicontrol {Rebuild Project}. This cleans up the
|
||||||
|
build directory and performs a new build.
|
||||||
|
|
||||||
|
//! [cmake ninja]
|
||||||
|
|
||||||
|
|
||||||
//! [cmake clean steps]
|
//! [cmake clean steps]
|
||||||
|
|
||||||
\section2 CMake Clean Steps
|
\section2 CMake Clean Steps
|
||||||
|
@@ -194,6 +194,8 @@
|
|||||||
choose the kit to use. To set the selected kit as the default kit,
|
choose the kit to use. To set the selected kit as the default kit,
|
||||||
select \uicontrol {Make Default}.
|
select \uicontrol {Make Default}.
|
||||||
|
|
||||||
|
\include creator-projects-cmake-building.qdocinc cmake ninja
|
||||||
|
|
||||||
\section1 Editing Qbs Profiles
|
\section1 Editing Qbs Profiles
|
||||||
|
|
||||||
To view the Qbs profile associated with the kit, select \uicontrol Tools >
|
To view the Qbs profile associated with the kit, select \uicontrol Tools >
|
||||||
|
@@ -245,8 +245,11 @@
|
|||||||
components can appear to pick up speed, slow down, or bounce back at the
|
components can appear to pick up speed, slow down, or bounce back at the
|
||||||
end of the animation. By default, the animations you specify on the
|
end of the animation. By default, the animations you specify on the
|
||||||
timeline are \e linear, which means that they move from the beginning to
|
timeline are \e linear, which means that they move from the beginning to
|
||||||
the end at a constant speed. You can use the curve picker to edit the
|
the end at a constant speed. You can use the \e {curve picker} to edit the
|
||||||
easing curve at a keyframe.
|
easing curve between two keyframes. You can also use the more advanced
|
||||||
|
\e {curve editor} to edit the curves for the whole animation.
|
||||||
|
|
||||||
|
\section2 Attaching Easing Curves to Keyframes
|
||||||
|
|
||||||
\image studio-curve-picker.png
|
\image studio-curve-picker.png
|
||||||
|
|
||||||
@@ -256,16 +259,16 @@
|
|||||||
custom curve. For more information about easing curve types, see the
|
custom curve. For more information about easing curve types, see the
|
||||||
documentation for \l [QML] {PropertyAnimation}{easing curves}.
|
documentation for \l [QML] {PropertyAnimation}{easing curves}.
|
||||||
|
|
||||||
To zoom into and out of the easing curve editor, use the mouse roller. To
|
To zoom into and out of the easing curve picker, use the mouse roller. To
|
||||||
reset the zoom factor, right-click in the editor and select
|
reset the zoom factor, right-click in the picker and select
|
||||||
\uicontrol {Reset Zoom}.
|
\uicontrol {Reset Zoom}.
|
||||||
|
|
||||||
To select easing curves:
|
To attach easing curves to keyframes:
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li Select a keyframe on the timeline.
|
\li Select a keyframe on the timeline.
|
||||||
\li Select \uicontrol {Curve Picker (C)} on the toolbar, or press
|
\li Select \uicontrol {Curve Picker (C)} on the toolbar, or press
|
||||||
\key C to open the \uicontrol {Easing Curve Editor} dialog.
|
\key C to open the curve picker.
|
||||||
\li Select an easing curve in the \uicontrol Presets tab.
|
\li Select an easing curve in the \uicontrol Presets tab.
|
||||||
\li In the \uicontrol {Duration (ms)} field, select the duration of the
|
\li In the \uicontrol {Duration (ms)} field, select the duration of the
|
||||||
easing function in milliseconds.
|
easing function in milliseconds.
|
||||||
@@ -279,11 +282,13 @@
|
|||||||
to \inlineimage keyframe_manualbezier_inactive.png
|
to \inlineimage keyframe_manualbezier_inactive.png
|
||||||
.
|
.
|
||||||
|
|
||||||
|
\section2 Customizing Easing Curves
|
||||||
|
|
||||||
To customize easing curves:
|
To customize easing curves:
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li In the \uicontrol {Easing Curve Editor} dialog, select an easing
|
\li In the curve picker, select an easing curve in the
|
||||||
curve in the \uicontrol Presets tab.
|
\uicontrol Presets tab.
|
||||||
\li Drag the curve handlers to modify the curve.
|
\li Drag the curve handlers to modify the curve.
|
||||||
\li Right-click in the editor, and select \uicontrol {Add Point} to add
|
\li Right-click in the editor, and select \uicontrol {Add Point} to add
|
||||||
points to the curve.
|
points to the curve.
|
||||||
@@ -299,6 +304,32 @@
|
|||||||
To paste easing curve definitions to the curve picker as text, select
|
To paste easing curve definitions to the curve picker as text, select
|
||||||
the \uicontrol Text tab.
|
the \uicontrol Text tab.
|
||||||
|
|
||||||
|
\section1 Editing Animation Curves
|
||||||
|
|
||||||
|
In the curve editor, you can view and modify the whole animation curve. You
|
||||||
|
can insert keyframes to the curve and drag them and the point handlers to
|
||||||
|
modify the curve. You can modify the appearance of the curve in the style
|
||||||
|
editor.
|
||||||
|
|
||||||
|
You can also edit easing curves that you added with the curve picker.
|
||||||
|
|
||||||
|
\image studio-curve-editor.png
|
||||||
|
|
||||||
|
To edit animation curves:
|
||||||
|
|
||||||
|
\list 1
|
||||||
|
\li In the \uicontrol Timeline view, insert at least one keyframe.
|
||||||
|
\li Select \inlineimage curveGraphIcon.png
|
||||||
|
(\uicontrol {Curve Editor (C)} on the toolbar or press \key C
|
||||||
|
to open the curve editor.
|
||||||
|
\li Right-click in the curve editor, and select
|
||||||
|
\uicontrol {Insert Keyframe} to add a keyframe.
|
||||||
|
\li Select keyframes to display the easing curves attached to them.
|
||||||
|
To select multiple keyframes, press and hold \key Ctrl.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
Your changes are automatically saved when you close the editor.
|
||||||
|
|
||||||
\section1 Rotating Items
|
\section1 Rotating Items
|
||||||
|
|
||||||
To animate components that rotate around a central point, you can use the
|
To animate components that rotate around a central point, you can use the
|
||||||
|
@@ -53,8 +53,8 @@ Section {
|
|||||||
backendValue: backendValues.scale
|
backendValue: backendValues.scale
|
||||||
hasSlider: true
|
hasSlider: true
|
||||||
decimals: 2
|
decimals: 2
|
||||||
minimumValue: 0.01
|
|
||||||
stepSize: 0.1
|
stepSize: 0.1
|
||||||
|
minimumValue: -10
|
||||||
maximumValue: 10
|
maximumValue: 10
|
||||||
Layout.preferredWidth: 140
|
Layout.preferredWidth: 140
|
||||||
}
|
}
|
||||||
|
@@ -62,7 +62,7 @@ RowLayout {
|
|||||||
|
|
||||||
property alias buttonRow: buttonRow
|
property alias buttonRow: buttonRow
|
||||||
|
|
||||||
readonly property color __defaultTextColor: Theme.color(Theme.PanelTextColorLight)
|
readonly property color __defaultTextColor: StudioTheme.Values.themeTextColor
|
||||||
|
|
||||||
IconLabel {
|
IconLabel {
|
||||||
id: icon
|
id: icon
|
||||||
@@ -135,13 +135,13 @@ RowLayout {
|
|||||||
id: group
|
id: group
|
||||||
}
|
}
|
||||||
|
|
||||||
StudioControls.AbstractButton {
|
AbstractButton {
|
||||||
id: buttonSameEdge
|
id: buttonSameEdge
|
||||||
buttonIcon: verticalAnchor ? StudioTheme.Constants.anchorTop : StudioTheme.Constants.anchorLeft
|
buttonIcon: verticalAnchor ? StudioTheme.Constants.anchorTop : StudioTheme.Constants.anchorLeft
|
||||||
checkable: true
|
checkable: true
|
||||||
autoExclusive: true
|
autoExclusive: true
|
||||||
StudioControls.ButtonGroup.group: group
|
StudioControls.ButtonGroup.group: group
|
||||||
//tooltip: verticalAnchor ? qsTr("Anchor to the top of the target.") : qsTr("Anchor to the left of the target.")
|
tooltip: verticalAnchor ? qsTr("Anchor to the top of the target.") : qsTr("Anchor to the left of the target.")
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (!invertRelativeTargets)
|
if (!invertRelativeTargets)
|
||||||
sameEdgeButtonClicked();
|
sameEdgeButtonClicked();
|
||||||
@@ -149,22 +149,22 @@ RowLayout {
|
|||||||
oppositeEdgeButtonClicked();
|
oppositeEdgeButtonClicked();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
StudioControls.AbstractButton {
|
AbstractButton {
|
||||||
id: buttonCenter
|
id: buttonCenter
|
||||||
buttonIcon: verticalAnchor ? StudioTheme.Constants.centerVertical : StudioTheme.Constants.centerHorizontal
|
buttonIcon: verticalAnchor ? StudioTheme.Constants.centerVertical : StudioTheme.Constants.centerHorizontal
|
||||||
checkable: true
|
checkable: true
|
||||||
autoExclusive: true
|
autoExclusive: true
|
||||||
StudioControls.ButtonGroup.group: group
|
StudioControls.ButtonGroup.group: group
|
||||||
//tooltip: verticalAnchor ? qsTr("Anchor to the vertical center of the target.") : qsTr("Anchor to the horizontal center of the target.")
|
tooltip: verticalAnchor ? qsTr("Anchor to the vertical center of the target.") : qsTr("Anchor to the horizontal center of the target.")
|
||||||
onClicked: centerButtonClicked();
|
onClicked: centerButtonClicked();
|
||||||
}
|
}
|
||||||
StudioControls.AbstractButton {
|
AbstractButton {
|
||||||
id: buttonOppositeEdge
|
id: buttonOppositeEdge
|
||||||
buttonIcon: verticalAnchor ? StudioTheme.Constants.anchorBottom : StudioTheme.Constants.anchorRight
|
buttonIcon: verticalAnchor ? StudioTheme.Constants.anchorBottom : StudioTheme.Constants.anchorRight
|
||||||
checkable: true
|
checkable: true
|
||||||
autoExclusive: true
|
autoExclusive: true
|
||||||
StudioControls.ButtonGroup.group: group
|
StudioControls.ButtonGroup.group: group
|
||||||
//tooltip: verticalAnchor ? qsTr("Anchor to the bottom of the target.") : qsTr("Anchor to the right of the target.")
|
tooltip: verticalAnchor ? qsTr("Anchor to the bottom of the target.") : qsTr("Anchor to the right of the target.")
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (!invertRelativeTargets)
|
if (!invertRelativeTargets)
|
||||||
oppositeEdgeButtonClicked();
|
oppositeEdgeButtonClicked();
|
||||||
|
@@ -158,8 +158,8 @@ Section {
|
|||||||
}
|
}
|
||||||
SecondColumnLayout {
|
SecondColumnLayout {
|
||||||
SpinBox {
|
SpinBox {
|
||||||
maximumValue: 9999999
|
minimumValue: -4000
|
||||||
minimumValue: -9999999
|
maximumValue: 4000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
backendValue: backendValues.spacing
|
backendValue: backendValues.spacing
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
@@ -80,8 +80,8 @@ Column {
|
|||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.sourceSize_width
|
backendValue: backendValues.sourceSize_width
|
||||||
minimumValue: -2000
|
minimumValue: 0
|
||||||
maximumValue: 2000
|
maximumValue: 8192
|
||||||
decimals: 0
|
decimals: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,8 +97,8 @@ Column {
|
|||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.sourceSize_height
|
backendValue: backendValues.sourceSize_height
|
||||||
minimumValue: -2000
|
minimumValue: 0
|
||||||
maximumValue: 2000
|
maximumValue: 8192
|
||||||
decimals: 0
|
decimals: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -130,8 +130,8 @@ Column {
|
|||||||
SectionLayout {
|
SectionLayout {
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.spacing
|
backendValue: backendValues.spacing
|
||||||
minimumValue: 0
|
minimumValue: -4000
|
||||||
maximumValue: 1000
|
maximumValue: 4000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
}
|
}
|
||||||
ExpandingSpacer {
|
ExpandingSpacer {
|
||||||
|
@@ -166,6 +166,7 @@ Column {
|
|||||||
backendValue: backendValues.preferredHighlightBegin
|
backendValue: backendValues.preferredHighlightBegin
|
||||||
minimumValue: 0
|
minimumValue: 0
|
||||||
maximumValue: 1
|
maximumValue: 1
|
||||||
|
stepSize: 0.1
|
||||||
decimals: 2
|
decimals: 2
|
||||||
}
|
}
|
||||||
ExpandingSpacer {
|
ExpandingSpacer {
|
||||||
@@ -182,6 +183,7 @@ Column {
|
|||||||
backendValue: backendValues.preferredHighlightEnd
|
backendValue: backendValues.preferredHighlightEnd
|
||||||
minimumValue: 0
|
minimumValue: 0
|
||||||
maximumValue: 1
|
maximumValue: 1
|
||||||
|
stepSize: 0.1
|
||||||
decimals: 2
|
decimals: 2
|
||||||
}
|
}
|
||||||
ExpandingSpacer {
|
ExpandingSpacer {
|
||||||
|
@@ -43,6 +43,7 @@ Item {
|
|||||||
property bool block: false
|
property bool block: false
|
||||||
|
|
||||||
signal clicked
|
signal clicked
|
||||||
|
signal rightMouseButtonClicked
|
||||||
|
|
||||||
onAlphaChanged: invalidateColor();
|
onAlphaChanged: invalidateColor();
|
||||||
onSaturationChanged: invalidateColor();
|
onSaturationChanged: invalidateColor();
|
||||||
@@ -202,7 +203,7 @@ Item {
|
|||||||
id: mapMouseArea
|
id: mapMouseArea
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onPositionChanged: {
|
onPositionChanged: {
|
||||||
if (pressed) {
|
if (pressed && mouse.button === Qt.LeftButton) {
|
||||||
var xx = Math.max(0, Math.min(mouse.x, parent.width))
|
var xx = Math.max(0, Math.min(mouse.x, parent.width))
|
||||||
var yy = Math.max(0, Math.min(mouse.y, parent.height))
|
var yy = Math.max(0, Math.min(mouse.y, parent.height))
|
||||||
|
|
||||||
@@ -210,8 +211,21 @@ Item {
|
|||||||
colorButton.saturation = xx / parent.width;
|
colorButton.saturation = xx / parent.width;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onPressed: positionChanged(mouse)
|
onPressed: {
|
||||||
onReleased: colorButton.clicked()
|
if (mouse.button === Qt.LeftButton)
|
||||||
|
positionChanged(mouse)
|
||||||
|
}
|
||||||
|
onReleased: {
|
||||||
|
if (mouse.button === Qt.LeftButton)
|
||||||
|
colorButton.clicked()
|
||||||
|
}
|
||||||
|
|
||||||
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
if (mouse.button === Qt.RightButton)
|
||||||
|
colorButton.rightMouseButtonClicked()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@@ -26,12 +26,13 @@
|
|||||||
import QtQuick 2.1
|
import QtQuick 2.1
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: colorCheckButtonRoot
|
id: root
|
||||||
property bool checked: false
|
property bool checked: false
|
||||||
property alias buttonColor: checkBox.color
|
property alias buttonColor: checkBox.color
|
||||||
width: 30
|
width: 30
|
||||||
height: 24
|
height: 24
|
||||||
|
|
||||||
|
signal rightMouseButtonClicked
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: backgroundBox
|
id: backgroundBox
|
||||||
@@ -63,13 +64,20 @@ Item {
|
|||||||
anchors.right: backgroundBox.left
|
anchors.right: backgroundBox.left
|
||||||
anchors.rightMargin: 2
|
anchors.rightMargin: 2
|
||||||
opacity: colorToolTip.containsMouse ? 1 : 0.8
|
opacity: colorToolTip.containsMouse ? 1 : 0.8
|
||||||
rotation: colorCheckButtonRoot.checked ? 0.0 : 270.0
|
rotation: root.checked ? 0.0 : 270.0
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolTipArea {
|
ToolTipArea {
|
||||||
id: colorToolTip
|
id: colorToolTip
|
||||||
|
|
||||||
onClicked: checked = !checked
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
if (mouse.button === Qt.RightButton)
|
||||||
|
root.rightMouseButtonClicked()
|
||||||
|
else
|
||||||
|
root.checked = !root.checked
|
||||||
|
}
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.leftMargin: -arrowImage.width
|
anchors.leftMargin: -arrowImage.width
|
||||||
|
@@ -26,6 +26,8 @@
|
|||||||
import QtQuick 2.1
|
import QtQuick 2.1
|
||||||
import QtQuick.Layouts 1.0
|
import QtQuick.Layouts 1.0
|
||||||
import QtQuickDesignerTheme 1.0
|
import QtQuickDesignerTheme 1.0
|
||||||
|
import QtQuick.Dialogs 1.3
|
||||||
|
import StudioControls 1.0 as StudioControls
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
id: colorEditor
|
id: colorEditor
|
||||||
@@ -198,6 +200,12 @@ Column {
|
|||||||
ColorCheckButton {
|
ColorCheckButton {
|
||||||
id: checkButton
|
id: checkButton
|
||||||
buttonColor: colorEditor.color
|
buttonColor: colorEditor.color
|
||||||
|
|
||||||
|
onCheckedChanged: {
|
||||||
|
if (contextMenu.opened)
|
||||||
|
contextMenu.close()
|
||||||
|
}
|
||||||
|
onRightMouseButtonClicked: contextMenu.popup(checkButton)
|
||||||
}
|
}
|
||||||
|
|
||||||
LineEdit {
|
LineEdit {
|
||||||
@@ -615,7 +623,13 @@ Column {
|
|||||||
|
|
||||||
sliderMargins: 4
|
sliderMargins: 4
|
||||||
|
|
||||||
onClicked: colorEditor.color = colorButton.color
|
onClicked: {
|
||||||
|
colorEditor.color = colorButton.color
|
||||||
|
if (contextMenu.opened)
|
||||||
|
contextMenu.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
onRightMouseButtonClicked: contextMenu.popup(colorButton)
|
||||||
}
|
}
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
@@ -702,13 +716,23 @@ Column {
|
|||||||
|
|
||||||
clickable: !colorEditor.transparent
|
clickable: !colorEditor.transparent
|
||||||
|
|
||||||
onSelectedColorChanged: {
|
onSelectedColorChanged: colorEditor.color = colorPalette.selectedColor
|
||||||
colorEditor.color = colorPalette.selectedColor;
|
|
||||||
}
|
|
||||||
|
onDialogColorChanged: colorEditor.color = colorPalette.selectedColor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StudioControls.Menu {
|
||||||
|
id: contextMenu
|
||||||
|
|
||||||
|
StudioControls.MenuItem {
|
||||||
|
text: qsTr("Open Color Dialog")
|
||||||
|
onTriggered: colorPalette.showColorDialog(colorEditor.color)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -34,6 +34,7 @@ Section {
|
|||||||
|
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
|
property int labelWidth: 42
|
||||||
property int spinBoxWidth: 96
|
property int spinBoxWidth: 96
|
||||||
|
|
||||||
SectionLayout {
|
SectionLayout {
|
||||||
@@ -173,13 +174,13 @@ Section {
|
|||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: "W"
|
text: "W"
|
||||||
width: 42
|
width: root.labelWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.contentWidth
|
backendValue: backendValues.contentWidth
|
||||||
minimumValue: 0
|
minimumValue: 0
|
||||||
maximumValue: 8000
|
maximumValue: 10000
|
||||||
implicitWidth: root.spinBoxWidth
|
implicitWidth: root.spinBoxWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
@@ -191,13 +192,13 @@ Section {
|
|||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: "H"
|
text: "H"
|
||||||
width: 42
|
width: root.labelWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.contentHeight
|
backendValue: backendValues.contentHeight
|
||||||
minimumValue: 0
|
minimumValue: 0
|
||||||
maximumValue: 8000
|
maximumValue: 10000
|
||||||
implicitWidth: root.spinBoxWidth
|
implicitWidth: root.spinBoxWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
@@ -213,12 +214,12 @@ Section {
|
|||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: "X"
|
text: "X"
|
||||||
width: 42
|
width: root.labelWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.contentX
|
backendValue: backendValues.contentX
|
||||||
minimumValue: 0
|
minimumValue: -8000
|
||||||
maximumValue: 8000
|
maximumValue: 8000
|
||||||
implicitWidth: root.spinBoxWidth
|
implicitWidth: root.spinBoxWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -231,12 +232,12 @@ Section {
|
|||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: "Y"
|
text: "Y"
|
||||||
width: 42
|
width: root.labelWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.contentY
|
backendValue: backendValues.contentY
|
||||||
minimumValue: 0
|
minimumValue: -8000
|
||||||
maximumValue: 8000
|
maximumValue: 8000
|
||||||
implicitWidth: root.spinBoxWidth
|
implicitWidth: root.spinBoxWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -254,13 +255,13 @@ Section {
|
|||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: "Top"
|
text: "Top"
|
||||||
width: 42
|
width: root.labelWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.topMargin
|
backendValue: backendValues.topMargin
|
||||||
maximumValue: 0xffff
|
minimumValue: -10000
|
||||||
minimumValue: 0
|
maximumValue: 10000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
implicitWidth: root.spinBoxWidth
|
implicitWidth: root.spinBoxWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -273,13 +274,13 @@ Section {
|
|||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: "Bottom"
|
text: "Bottom"
|
||||||
width: 42
|
width: root.labelWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.bottomMargin
|
backendValue: backendValues.bottomMargin
|
||||||
maximumValue: 0xffff
|
minimumValue: -10000
|
||||||
minimumValue: 0
|
maximumValue: 10000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
implicitWidth: root.spinBoxWidth
|
implicitWidth: root.spinBoxWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -297,13 +298,13 @@ Section {
|
|||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: "Left"
|
text: "Left"
|
||||||
width: 42
|
width: root.labelWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.leftMargin
|
backendValue: backendValues.leftMargin
|
||||||
maximumValue: 0xffff
|
minimumValue: -10000
|
||||||
minimumValue: 0
|
maximumValue: 10000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
implicitWidth: root.spinBoxWidth
|
implicitWidth: root.spinBoxWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -316,13 +317,13 @@ Section {
|
|||||||
|
|
||||||
Label {
|
Label {
|
||||||
text: "Right"
|
text: "Right"
|
||||||
width: 42
|
width: root.labelWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
SpinBox {
|
SpinBox {
|
||||||
backendValue: backendValues.rightMargin
|
backendValue: backendValues.rightMargin
|
||||||
maximumValue: 0xffff
|
minimumValue: -10000
|
||||||
minimumValue: 0
|
maximumValue: 10000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
implicitWidth: root.spinBoxWidth
|
implicitWidth: root.spinBoxWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
@@ -38,7 +38,7 @@ Controls.Label {
|
|||||||
property alias toolTip: toolTipArea.tooltip
|
property alias toolTip: toolTipArea.tooltip
|
||||||
|
|
||||||
width: Math.max(Math.min(240, parent.width - 280), 50)
|
width: Math.max(Math.min(240, parent.width - 280), 50)
|
||||||
color: Theme.color(Theme.PanelTextColorLight)
|
color: StudioTheme.Values.themeTextColor
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
|
|
||||||
font.pixelSize: StudioTheme.Values.myFontSize
|
font.pixelSize: StudioTheme.Values.myFontSize
|
||||||
|
@@ -45,8 +45,8 @@ Section {
|
|||||||
width: 42
|
width: 42
|
||||||
}
|
}
|
||||||
SpinBox {
|
SpinBox {
|
||||||
maximumValue: 9999999
|
minimumValue: -10000
|
||||||
minimumValue: -9999999
|
maximumValue: 10000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
backendValue: backendValues.topMargin
|
backendValue: backendValues.topMargin
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -62,8 +62,8 @@ Section {
|
|||||||
width: 42
|
width: 42
|
||||||
}
|
}
|
||||||
SpinBox {
|
SpinBox {
|
||||||
maximumValue: 9999999
|
minimumValue: -10000
|
||||||
minimumValue: -9999999
|
maximumValue: 10000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
backendValue: backendValues.bottomMargin
|
backendValue: backendValues.bottomMargin
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -80,8 +80,8 @@ Section {
|
|||||||
width: 42
|
width: 42
|
||||||
}
|
}
|
||||||
SpinBox {
|
SpinBox {
|
||||||
maximumValue: 9999999
|
minimumValue: -10000
|
||||||
minimumValue: -9999999
|
maximumValue: 10000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
backendValue: backendValues.leftMargin
|
backendValue: backendValues.leftMargin
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -97,8 +97,8 @@ Section {
|
|||||||
width: 42
|
width: 42
|
||||||
}
|
}
|
||||||
SpinBox {
|
SpinBox {
|
||||||
maximumValue: 9999999
|
minimumValue: -10000
|
||||||
minimumValue: -9999999
|
maximumValue: 10000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
backendValue: backendValues.rightMargin
|
backendValue: backendValues.rightMargin
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -111,8 +111,8 @@ Section {
|
|||||||
}
|
}
|
||||||
SecondColumnLayout {
|
SecondColumnLayout {
|
||||||
SpinBox {
|
SpinBox {
|
||||||
maximumValue: 9999999
|
minimumValue: -10000
|
||||||
minimumValue: -9999999
|
maximumValue: 10000
|
||||||
decimals: 0
|
decimals: 0
|
||||||
backendValue: backendValues.margins
|
backendValue: backendValues.margins
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 2.1
|
import QtQuick 2.1
|
||||||
import QtQuick.Controls 1.1 as Controls
|
import QtQuick.Controls 2.12 as Controls
|
||||||
import QtQuick.Layouts 1.0
|
import QtQuick.Layouts 1.0
|
||||||
import QtQuickDesignerTheme 1.0
|
import QtQuickDesignerTheme 1.0
|
||||||
import StudioTheme 1.0 as StudioTheme
|
import StudioTheme 1.0 as StudioTheme
|
||||||
@@ -52,7 +52,7 @@ Item {
|
|||||||
Controls.Label {
|
Controls.Label {
|
||||||
id: label
|
id: label
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
color: Theme.color(Theme.PanelTextColorLight)
|
color: StudioTheme.Values.themeTextColor
|
||||||
x: 22
|
x: 22
|
||||||
font.bold: true
|
font.bold: true
|
||||||
font.pixelSize: StudioTheme.Values.myFontSize
|
font.pixelSize: StudioTheme.Values.myFontSize
|
||||||
@@ -75,7 +75,7 @@ Item {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
color: Theme.color(Theme.BackgroundColorDark)
|
color: StudioTheme.Values.themeSectionHeadBackground
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
visible: false
|
visible: false
|
||||||
|
@@ -32,7 +32,12 @@ import QtQuick.Controls.Private 1.0 // showing a ToolTip
|
|||||||
Item {
|
Item {
|
||||||
property color selectedColor
|
property color selectedColor
|
||||||
property bool clickable : true
|
property bool clickable : true
|
||||||
|
property color oldColor
|
||||||
|
|
||||||
|
function showColorDialog(color) {
|
||||||
|
oldColor = color
|
||||||
|
paletteModel.showDialog(color)
|
||||||
|
}
|
||||||
|
|
||||||
width: 200
|
width: 200
|
||||||
height: 40
|
height: 40
|
||||||
@@ -43,6 +48,8 @@ Item {
|
|||||||
paletteModel.addItem(colorCode)
|
paletteModel.addItem(colorCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
signal dialogColorChanged
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
id: colorItemDelegate
|
id: colorItemDelegate
|
||||||
|
|
||||||
@@ -94,7 +101,20 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SimpleColorPaletteModel { id: paletteModel }
|
SimpleColorPaletteModel {
|
||||||
|
|
||||||
|
id: paletteModel
|
||||||
|
|
||||||
|
onCurrentColorChanged: {
|
||||||
|
selectedColor = color
|
||||||
|
dialogColorChanged()
|
||||||
|
|
||||||
|
}
|
||||||
|
onColorDialogRejected: {
|
||||||
|
selectedColor = oldColor
|
||||||
|
dialogColorChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
ListView {
|
ListView {
|
||||||
id: colorPaletteView
|
id: colorPaletteView
|
||||||
model: paletteModel
|
model: paletteModel
|
||||||
|
@@ -81,10 +81,7 @@ T.Popup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMoved: {
|
onMoved: {
|
||||||
var currValue = myControl.value
|
|
||||||
myControl.realValue = slider.value
|
myControl.realValue = slider.value
|
||||||
|
|
||||||
if (currValue !== myControl.realValue)
|
|
||||||
myControl.realValueModified()
|
myControl.realValueModified()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -71,6 +71,8 @@ T.SpinBox {
|
|||||||
property real __sliderIndicatorWidth: StudioTheme.Values.squareComponentWidth
|
property real __sliderIndicatorWidth: StudioTheme.Values.squareComponentWidth
|
||||||
property real __sliderIndicatorHeight: StudioTheme.Values.height
|
property real __sliderIndicatorHeight: StudioTheme.Values.height
|
||||||
|
|
||||||
|
property alias compressedValueTimer: myTimer
|
||||||
|
|
||||||
signal realValueModified
|
signal realValueModified
|
||||||
signal compressedRealValueModified
|
signal compressedRealValueModified
|
||||||
signal dragStarted
|
signal dragStarted
|
||||||
|
@@ -88,6 +88,10 @@ TextInput {
|
|||||||
// Force focus on the non visible component to receive key events
|
// Force focus on the non visible component to receive key events
|
||||||
dragModifierWorkaround.forceActiveFocus()
|
dragModifierWorkaround.forceActiveFocus()
|
||||||
} else {
|
} else {
|
||||||
|
if (myControl.compressedValueTimer.running) {
|
||||||
|
myControl.compressedValueTimer.stop()
|
||||||
|
calcValue(myControl.compressedRealValueModified)
|
||||||
|
}
|
||||||
mouseArea.cursorShape = Qt.PointingHandCursor // TODO
|
mouseArea.cursorShape = Qt.PointingHandCursor // TODO
|
||||||
myControl.drag = false
|
myControl.drag = false
|
||||||
myControl.dragEnded()
|
myControl.dragEnded()
|
||||||
@@ -97,15 +101,13 @@ TextInput {
|
|||||||
myControl.focus = false
|
myControl.focus = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onTranslationChanged: calcValue()
|
onTranslationChanged: calcValue(myControl.realValueModified)
|
||||||
onMultiplierChanged: calcValue()
|
onMultiplierChanged: calcValue(myControl.realValueModified)
|
||||||
|
|
||||||
function calcValue() {
|
function calcValue(callback) {
|
||||||
var tmp = myControl.realDragRange / StudioTheme.Values.dragLength
|
var tmp = myControl.realDragRange / StudioTheme.Values.dragLength
|
||||||
var currValue = myControl.realValue
|
|
||||||
myControl.setRealValue(dragHandler.initialValue + (tmp * dragHandler.translation.x * dragHandler.multiplier))
|
myControl.setRealValue(dragHandler.initialValue + (tmp * dragHandler.translation.x * dragHandler.multiplier))
|
||||||
if (currValue !== myControl.realValue)
|
callback()
|
||||||
myControl.realValueModified()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,11 +163,8 @@ TextInput {
|
|||||||
if (wheel.modifiers & Qt.ShiftModifier)
|
if (wheel.modifiers & Qt.ShiftModifier)
|
||||||
mouseArea.stepSize = myControl.maxStepSize
|
mouseArea.stepSize = myControl.maxStepSize
|
||||||
|
|
||||||
var currValue = myControl.realValue
|
|
||||||
myControl.valueFromText(textInput.text, myControl.locale)
|
myControl.valueFromText(textInput.text, myControl.locale)
|
||||||
myControl.setRealValue(myControl.realValue + (wheel.angleDelta.y / 120.0 * mouseArea.stepSize))
|
myControl.setRealValue(myControl.realValue + (wheel.angleDelta.y / 120.0 * mouseArea.stepSize))
|
||||||
|
|
||||||
if (currValue !== myControl.realValue)
|
|
||||||
myControl.realValueModified()
|
myControl.realValueModified()
|
||||||
|
|
||||||
// Reset stepSize
|
// Reset stepSize
|
||||||
|
@@ -123,6 +123,8 @@ QtObject {
|
|||||||
|
|
||||||
property string themeTranslationIndicatorBorder: "#7f7f7f"
|
property string themeTranslationIndicatorBorder: "#7f7f7f"
|
||||||
|
|
||||||
|
property string themeSectionHeadBackground: "#191919"
|
||||||
|
|
||||||
// Taken out of Constants.js
|
// Taken out of Constants.js
|
||||||
property string themeChangedStateText: "#99ccff"
|
property string themeChangedStateText: "#99ccff"
|
||||||
}
|
}
|
||||||
|
@@ -220,12 +220,17 @@ static PyObject *cdbext_listOfLocals(PyObject *, PyObject *args) // -> [ Value ]
|
|||||||
++currentPartialIname; // skip "local" part
|
++currentPartialIname; // skip "local" part
|
||||||
|
|
||||||
ULONG symbolGroupIndex = 0;
|
ULONG symbolGroupIndex = 0;
|
||||||
|
ULONG childEndIndex = 0;
|
||||||
for (;symbolGroupIndex < scopeEnd; ++symbolGroupIndex) {
|
for (;symbolGroupIndex < scopeEnd; ++symbolGroupIndex) {
|
||||||
const PyValue value(symbolGroupIndex, symbolGroup);
|
PyValue value(symbolGroupIndex, symbolGroup);
|
||||||
|
if (childEndIndex <= symbolGroupIndex) { // do not return a child value
|
||||||
if (value.name() == *currentPartialIname) {
|
if (value.name() == *currentPartialIname) {
|
||||||
PyList_Append(locals, createPythonObject(value));
|
PyList_Append(locals, createPythonObject(value));
|
||||||
return locals;
|
return locals;
|
||||||
}
|
}
|
||||||
|
++childEndIndex;
|
||||||
|
}
|
||||||
|
childEndIndex += ULONG(value.childCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -296,8 +296,11 @@ void GraphicsView::contextMenuEvent(QContextMenuEvent *event)
|
|||||||
auto openStyleEditor = [this]() { m_dialog.show(); };
|
auto openStyleEditor = [this]() { m_dialog.show(); };
|
||||||
|
|
||||||
QMenu menu;
|
QMenu menu;
|
||||||
|
|
||||||
|
if (qEnvironmentVariableIsSet("QTC_STYLE_CURVE_EDITOR")) {
|
||||||
QAction *openEditorAction = menu.addAction(tr("Open Style Editor"));
|
QAction *openEditorAction = menu.addAction(tr("Open Style Editor"));
|
||||||
connect(openEditorAction, &QAction::triggered, openStyleEditor);
|
connect(openEditorAction, &QAction::triggered, openStyleEditor);
|
||||||
|
}
|
||||||
|
|
||||||
menu.addSeparator();
|
menu.addSeparator();
|
||||||
auto insertKeyframes = [this, event]() {
|
auto insertKeyframes = [this, event]() {
|
||||||
|
@@ -29,10 +29,14 @@
|
|||||||
|
|
||||||
#include "designersettings.h"
|
#include "designersettings.h"
|
||||||
|
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
|
#include <QColorDialog>
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
@@ -143,4 +147,16 @@ void SimpleColorPaletteModel::write()
|
|||||||
SimpleColorPaletteSingleton::getInstance().writePalette();
|
SimpleColorPaletteSingleton::getInstance().writePalette();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SimpleColorPaletteModel::showDialog(QColor color)
|
||||||
|
{
|
||||||
|
auto colorDialog = new QColorDialog(Core::ICore::dialogParent());
|
||||||
|
colorDialog->setCurrentColor(color);
|
||||||
|
colorDialog->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
|
||||||
|
connect(colorDialog, &QDialog::rejected, this, &SimpleColorPaletteModel::colorDialogRejected);
|
||||||
|
connect(colorDialog, &QColorDialog::currentColorChanged, this, &SimpleColorPaletteModel::currentColorChanged);
|
||||||
|
|
||||||
|
QTimer::singleShot(0, [colorDialog](){ colorDialog->exec(); });
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
#include <QtQml/qqml.h>
|
#include <QtQml/qqml.h>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include <QColor>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
@@ -59,6 +60,12 @@ public:
|
|||||||
bool read();
|
bool read();
|
||||||
void write();
|
void write();
|
||||||
|
|
||||||
|
Q_INVOKABLE void showDialog(QColor color);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void colorDialogRejected();
|
||||||
|
void currentColorChanged(const QColor &color);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void setPalette();
|
void setPalette();
|
||||||
|
|
||||||
|
@@ -29,7 +29,6 @@
|
|||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
#include <QtQml/qqml.h>
|
#include <QtQml/qqml.h>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QColor>
|
|
||||||
#include <simplecolorpalette.h>
|
#include <simplecolorpalette.h>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
@@ -33,7 +33,6 @@ AnimationCurveDialog::AnimationCurveDialog(QWidget *parent)
|
|||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
, m_editor(nullptr)
|
, m_editor(nullptr)
|
||||||
{
|
{
|
||||||
setWindowFlag(Qt::WindowStaysOnTopHint, true);
|
|
||||||
setWindowFlag(Qt::WindowContextHelpButtonHint, false);
|
setWindowFlag(Qt::WindowContextHelpButtonHint, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,7 +40,6 @@ AnimationCurveDialog::AnimationCurveDialog(DesignTools::CurveEditorModel *model,
|
|||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
, m_editor(nullptr)
|
, m_editor(nullptr)
|
||||||
{
|
{
|
||||||
setWindowFlag(Qt::WindowStaysOnTopHint, true);
|
|
||||||
setWindowFlag(Qt::WindowContextHelpButtonHint, false);
|
setWindowFlag(Qt::WindowContextHelpButtonHint, false);
|
||||||
setModel(model);
|
setModel(model);
|
||||||
}
|
}
|
||||||
|
@@ -40,6 +40,7 @@
|
|||||||
|
|
||||||
#include <coreplugin/actionmanager/actionmanager.h>
|
#include <coreplugin/actionmanager/actionmanager.h>
|
||||||
#include <coreplugin/actionmanager/command.h>
|
#include <coreplugin/actionmanager/command.h>
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
|
||||||
@@ -101,7 +102,7 @@ QAction *createAction(const Core::Id &id,
|
|||||||
TimelineToolBar::TimelineToolBar(QWidget *parent)
|
TimelineToolBar::TimelineToolBar(QWidget *parent)
|
||||||
: QToolBar(parent)
|
: QToolBar(parent)
|
||||||
, m_grp()
|
, m_grp()
|
||||||
, m_dialog()
|
, m_dialog(Core::ICore::dialogParent())
|
||||||
, m_curveModel(new AnimationCurveEditorModel(0., 500.))
|
, m_curveModel(new AnimationCurveEditorModel(0., 500.))
|
||||||
{
|
{
|
||||||
m_dialog.setModel(m_curveModel);
|
m_dialog.setModel(m_curveModel);
|
||||||
@@ -221,7 +222,7 @@ void TimelineToolBar::removeTimeline(const QmlTimeline &timeline)
|
|||||||
|
|
||||||
void TimelineToolBar::openAnimationCurveEditor()
|
void TimelineToolBar::openAnimationCurveEditor()
|
||||||
{
|
{
|
||||||
m_dialog.open();
|
m_dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TimelineToolBar::updateCurve(DesignTools::PropertyTreeItem *item)
|
void TimelineToolBar::updateCurve(DesignTools::PropertyTreeItem *item)
|
||||||
|
Submodule src/shared/qbs updated: 817a292690...5367331250
Reference in New Issue
Block a user