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

Change-Id: I091e191d1a9398cacd0ff0e063f89ffbe308189f
This commit is contained in:
Eike Ziller
2020-02-17 10:28:08 +01:00
38 changed files with 956 additions and 314 deletions

View File

@@ -75,7 +75,7 @@
To use \e {Bluebubble.svg} in your project,
copy it to the project directory (same subdirectory as the QML file).
The image appears in \uicontrol Resources. You can also use any other
The image appears in \uicontrol Assets. You can also use any other
image or a QML type, instead.
To create the UI in the Design mode:
@@ -106,7 +106,7 @@
\endlist
\li In \uicontrol Library > \uicontrol Resources, select Bluebubble.svg
\li In \uicontrol Library > \uicontrol Assets, select Bluebubble.svg
and drag and drop it to \e mainWindow in the navigator.
\li In the \uicontrol Properties pane, \uicontrol Id field, enter
@@ -257,15 +257,15 @@
After adding the dependencies, select \uicontrol Build > \uicontrol {Run qmake} to apply
the changes to the Makefile of the project.
\section1 Adding Resources
\section1 Adding Assets
You need to add the Bluebubble.svg image file to the application resources
You need to add the Bluebubble.svg image file to the application assets
for deployment to mobile devices:
\list 1
\li In the \uicontrol Projects view, double-click the qml.qrc file to open it
in the resource editor.
in the assets editor.
\li Select \uicontrol Add to add Bluebubble.svg.

View File

@@ -62,7 +62,7 @@
To use the \e qt-logo.png image in your application, you must copy it from
the Qt examples directory to the project directory (same subdirectory as
the QML file). The image appears in \uicontrol Resources. You can also use
the QML file). The image appears in \uicontrol Assets. You can also use
any other image or a QML type, instead.
\list 1
@@ -78,7 +78,7 @@
\li Select \uicontrol Page in the navigator, and enter \e page in the
\uicontrol Id field.
\li In \uicontrol Library > \uicontrol Resources, select qt-logo.png and
\li In \uicontrol Library > \uicontrol Assets, select qt-logo.png and
drag and drop it to the \e page in the navigator.
\image qmldesigner-tutorial-user-icon.png "Image properties"

View File

@@ -48,7 +48,7 @@
applications.
The \uicontrol {Library} pane lists the available QML types, UI
components, resources, and imports.
components, assets, and imports.
\image qmldesigner-qml-components.png "QML Components"
@@ -66,7 +66,7 @@
the import statements automatically. You can remove import statements in
\uicontrol Imports
\uicontrol {Resources} displays the images and other files that you copy
\uicontrol {Assets} displays the images and other files that you copy
to the project folder (to the same subfolder as the QML files).
\section1 Adding Components to Designs

View File

@@ -42,8 +42,8 @@
To add fonts:
\list 1
\li Select \uicontrol Library > \uicontrol Resources >
\uicontrol {Add New Resources}.
\li Select \uicontrol Library > \uicontrol Assets >
\uicontrol {Add New Assets}.
\li Browse to the folder that contains the font files and select them.
\li Enter the name of the directory to save the fonts. By default, \QDS
suggests the project directory.

View File

@@ -77,8 +77,8 @@
instructions of the wizard to create an empty project.
\li In \uicontrol Projects, double-click \e Screen01.ui.qml to move to
the Design mode.
\li Select \uicontrol Library > \uicontrol Resources >
\uicontrol {Add New Resources}.
\li Select \uicontrol Library > \uicontrol Assets >
\uicontrol {Add New Assets}.
\li Select the folder where you exported the assets.
\li Select \uicontrol {Exported Assets (*.metadata)} in the dropdown
menu to filter \e .metadata files.
@@ -106,7 +106,7 @@
might take a little while for complex projects.
\endlist
The imported assets are displayed in the \uicontrol Resources tab in the
The imported assets are displayed in the \uicontrol Assets tab in the
\uicontrol Library as PNG images. The components that you specified in
the design tool are displayed in the \uicontrol {My QML Components} tab,
as well as in the \uicontrol Project tab of the \uicontrol Navigator as
@@ -161,8 +161,8 @@
To import 3D assets to \QDS projects:
\list 1
\li In the Design mode, select \uicontrol Library > \uicontrol Resources
> \uicontrol {Add New Resources}.
\li In the Design mode, select \uicontrol Library > \uicontrol Assets
> \uicontrol {Add New Assets}.
\li Select \uicontrol {3D Assets} in the dropdown menu to filter 3D
graphics files.
\li Select a file to import, and then select \uicontrol Open.

View File

@@ -36,7 +36,7 @@
\list
\li Group files together
\li Include forms and resource files
\li Include forms and assets files
\li Specify settings for previewing UIs
\endlist

View File

@@ -32,7 +32,7 @@
\title Editing 3D Assets in Design Mode
\QDS opens QML files that contain 3D scenes in the Design mode and the
scenes in the 3D editor. You can add imported 3D assets as resources
scenes in the 3D editor. You can add imported 3D assets
to projects and edit them to create scenes and states, as well as the
transitions between them.
@@ -55,7 +55,7 @@
\li \uicontrol {Library} (3) displays the building blocks that you
can use to create scenes: predefined Qt Quick 3D Components,
Qt Quick Controls, your own 3D assets that you import to the
project, and other resources. For more information, see
project, and other assets. For more information, see
\l {Adding 3D Views}.
\li \uicontrol {Navigator} (4) displays the items in the current QML
file as a tree structure. For more information, see

View File

@@ -48,8 +48,8 @@
\li \l {Editing 3D Assets in Design Mode}
\QDS opens QML files that contain 3D scenes in the Design mode and
the scenes in the 3D editor. You can add imported 3D assets as
resources to projects as 3D components.
the scenes in the 3D editor. You can add imported 3D assets
to projects as 3D components.
\li \l {Working in the 3D Editor}
You can select 3D components in the 3D editor to move, rotate, and

View File

@@ -0,0 +1,104 @@
/****************************************************************************
**
** 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Section {
id: section
caption: qsTr("Animation")
anchors.left: parent.left
anchors.right: parent.right
property bool showDuration: true
SectionLayout {
Label {
text: qsTr("Running")
tooltip: qsTr("Sets whether the animation should run to completion when it is stopped.")
}
CheckBox {
text: backendValues.running.valueToString
backendValue: backendValues.running
}
Label {
text: qsTr("Paused")
tooltip: qsTr("Sets whether the animation is currently paused.")
}
CheckBox {
text: backendValues.paused.valueToString
backendValue: backendValues.paused
}
Label {
text: qsTr("Loops")
tooltip: qsTr("Sets the number of times the animation should play.")
}
SecondColumnLayout {
SpinBox {
maximumValue: 9999999
minimumValue: -1
backendValue: backendValues.loops
Layout.fillWidth: true
Layout.maximumWidth: 100
}
ExpandingSpacer {
}
}
Label {
visible: section.showDuration
text: qsTr("Duration")
tooltip: qsTr("Sets the duration of the animation, in milliseconds.")
}
SecondColumnLayout {
visible: section.showDuration
SpinBox {
maximumValue: 9999999
minimumValue: -9999999
backendValue: backendValues.duration
Layout.fillWidth: true
Layout.maximumWidth: 100
}
ExpandingSpacer {
}
}
Label {
text: qsTr("Always Run To End")
tooltip: qsTr("Sets whether the animation should run to completion when it is stopped.")
}
CheckBox {
text: backendValues.alwaysRunToEnd.valueToString
backendValue: backendValues.alwaysRunToEnd
}
}
}

View File

@@ -0,0 +1,70 @@
/****************************************************************************
**
** 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Section {
id: section
caption: qsTr("Animation Targets")
anchors.left: parent.left
anchors.right: parent.right
SectionLayout {
Label {
text: qsTr("Target")
tooltip: qsTr("Sets the target to animate the properties of.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick.QtObject"
validator: RegExpValidator { regExp: /(^$|^[a-z_]\w*)/ }
backendValue: backendValues.target
Layout.fillWidth: true
}
ExpandingSpacer {
}
}
Label {
text: qsTr("Property")
tooltip: qsTr("Sets the property to animate.")
}
LineEdit {
backendValue: backendValues.property
Layout.fillWidth: true
}
Label {
text: qsTr("Properties")
tooltip: qsTr("Sets the properties to animate.")
}
LineEdit {
backendValue: backendValues.properties
Layout.fillWidth: true
}
}
}

View File

@@ -0,0 +1,62 @@
/****************************************************************************
**
** 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Column {
anchors.left: parent.left
anchors.right: parent.right
Section {
anchors.left: parent.left
anchors.right: parent.right
caption: qsTr("To Color")
ColorEditor {
backendValue: backendValues.to
supportGradient: false
}
}
Section {
anchors.left: parent.left
anchors.right: parent.right
caption: qsTr("From Color")
ColorEditor {
backendValue: backendValues.from
supportGradient: false
}
}
AnimationTargetSection {
}
AnimationSection {
}
}

View File

@@ -0,0 +1,84 @@
/****************************************************************************
**
** 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Column {
anchors.left: parent.left
anchors.right: parent.right
Section {
caption: qsTr("Number Animation")
anchors.left: parent.left
anchors.right: parent.right
SectionLayout {
Label {
text: qsTr("From")
tooltip: qsTr("Sets the starting value for the animation.")
}
SecondColumnLayout {
SpinBox {
maximumValue: 9999999
minimumValue: -1
backendValue: backendValues.from
Layout.fillWidth: true
Layout.maximumWidth: 100
}
ExpandingSpacer {
}
}
Label {
text: qsTr("To")
tooltip: qsTr("Sets the end value for the animation.")
}
SecondColumnLayout {
SpinBox {
maximumValue: 9999999
minimumValue: -1
backendValue: backendValues.to
Layout.fillWidth: true
Layout.maximumWidth: 100
}
ExpandingSpacer {
}
}
}
}
AnimationTargetSection {
}
AnimationSection {
}
}

View File

@@ -0,0 +1,37 @@
/****************************************************************************
**
** Copyright (C) 2016 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Column {
anchors.left: parent.left
anchors.right: parent.right
AnimationSection {
showDuration: false
}
}

View File

@@ -0,0 +1,36 @@
/****************************************************************************
**
** 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Column {
anchors.left: parent.left
anchors.right: parent.right
AnimationSection {
}
}

View File

@@ -0,0 +1,60 @@
/****************************************************************************
**
** 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Column {
anchors.left: parent.left
anchors.right: parent.right
Section {
id: section
caption: qsTr("Property Action")
anchors.left: parent.left
anchors.right: parent.right
SectionLayout {
Label {
text: qsTr("Value")
tooltip: qsTr("Sets the value of the property.")
}
LineEdit {
backendValue: backendValues.value
Layout.fillWidth: true
}
}
}
AnimationTargetSection {
}
AnimationSection {
showDuration: false
}
}

View File

@@ -0,0 +1,40 @@
/****************************************************************************
**
** Copyright (C) 2016 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Column {
anchors.left: parent.left
anchors.right: parent.right
AnimationTargetSection {
}
AnimationSection {
}
}

View File

@@ -0,0 +1,37 @@
/****************************************************************************
**
** 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Column {
anchors.left: parent.left
anchors.right: parent.right
AnimationSection {
showDuration: false
}
}

View File

@@ -0,0 +1,37 @@
/****************************************************************************
**
** 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 HelperWidgets 2.0
import QtQuick 2.1
import QtQuick.Layouts 1.1
Column {
anchors.left: parent.left
anchors.right: parent.right
AnimationSection {
showDuration: false
}
}

View File

@@ -45,7 +45,7 @@ namespace Internal {
class ActionHandler::ActionHandlerPrivate {
public:
Core::Context context;
Core::Context context{Constants::MODEL_EDITOR_ID};
QAction *undoAction = nullptr;
QAction *redoAction = nullptr;
QAction *cutAction = nullptr;
@@ -60,11 +60,9 @@ public:
QAction *exportSelectedElementsAction = nullptr;
};
ActionHandler::ActionHandler(const Core::Context &context, QObject *parent)
: QObject(parent),
d(new ActionHandlerPrivate)
ActionHandler::ActionHandler()
: d(new ActionHandlerPrivate)
{
d->context = context;
}
ActionHandler::~ActionHandler()

View File

@@ -52,7 +52,7 @@ class ActionHandler :
class ActionHandlerPrivate;
public:
ActionHandler(const Core::Context &context, QObject *parent = nullptr);
ActionHandler();
~ActionHandler();
public:

View File

@@ -32,6 +32,7 @@
#include "modelsmanager.h"
#include "settingscontroller.h"
#include "uicontroller.h"
#include "actionhandler.h"
#include "qmt/infrastructure/uid.h"
@@ -59,7 +60,8 @@ class ModelEditorPluginPrivate final
public:
ModelsManager modelsManager;
UiController uiController;
ModelEditorFactory modelFactory{&uiController};
ActionHandler actionHandler;
ModelEditorFactory modelFactory{&uiController, &actionHandler};
SettingsController settingsController;
};
@@ -93,10 +95,7 @@ bool ModelEditorPlugin::initialize(const QStringList &arguments, QString *errorS
void ModelEditorPlugin::extensionsInitialized()
{
// Retrieve objects from the plugin manager's object pool
// In the extensionsInitialized method, a plugin can be sure that all
// plugins that depend on it are completely initialized.
d->modelFactory.extensionsInitialized();
d->actionHandler.createActions();
d->settingsController.load(Core::ICore::settings());
}

View File

@@ -34,24 +34,12 @@
namespace ModelEditor {
namespace Internal {
ModelEditorFactory::ModelEditorFactory(UiController *uiController)
ModelEditorFactory::ModelEditorFactory(UiController *uiController, ActionHandler *actionHandler)
{
setId(Constants::MODEL_EDITOR_ID);
setDisplayName(QCoreApplication::translate("OpenWith::Editors", Constants::MODEL_EDITOR_DISPLAY_NAME));
addMimeType(Constants::MIME_TYPE_MODEL);
m_uiController = uiController;
m_actionHandler = new ActionHandler(Core::Context(Constants::MODEL_EDITOR_ID), this);
setEditorCreator([this] { return new ModelEditor(m_uiController, m_actionHandler); });
}
ModelEditorFactory::~ModelEditorFactory()
{
delete m_actionHandler;
}
void ModelEditorFactory::extensionsInitialized()
{
m_actionHandler->createActions();
setEditorCreator([uiController, actionHandler] { return new ModelEditor(uiController, actionHandler); });
}
} // namespace Internal

View File

@@ -37,14 +37,7 @@ class UiController;
class ModelEditorFactory : public Core::IEditorFactory
{
public:
explicit ModelEditorFactory(UiController *uiController);
~ModelEditorFactory();
void extensionsInitialized();
private:
UiController *m_uiController = nullptr;
ActionHandler *m_actionHandler = nullptr;
ModelEditorFactory(UiController *uiController, ActionHandler *actionHandler);
};
} // namespace Internal

View File

@@ -261,84 +261,7 @@ QString QbsBuildConfiguration::configurationName() const
return m_configurationName->value();
}
class StepProxy
{
public:
StepProxy(const BuildStep *buildStep)
: m_qbsBuildStep(qobject_cast<const QbsBuildStep *>(buildStep))
, m_qbsCleanStep(qobject_cast<const QbsCleanStep *>(buildStep))
, m_qbsInstallStep(qobject_cast<const QbsInstallStep *>(buildStep))
{
}
QString command() const {
if (m_qbsBuildStep)
return QLatin1String("build");
if (m_qbsInstallStep)
return QLatin1String("install");
return QLatin1String("clean");
}
bool dryRun() const {
if (m_qbsBuildStep)
return false;
if (m_qbsInstallStep)
return m_qbsInstallStep->dryRun();
return m_qbsCleanStep->dryRun();
}
bool keepGoing() const {
if (m_qbsBuildStep)
return m_qbsBuildStep->keepGoing();
if (m_qbsInstallStep)
return m_qbsInstallStep->keepGoing();
return m_qbsCleanStep->keepGoing();
}
bool forceProbeExecution() const { return m_qbsBuildStep && m_qbsBuildStep->forceProbes(); }
bool showCommandLines() const {
return m_qbsBuildStep ? m_qbsBuildStep->showCommandLines() : false;
}
bool noInstall() const {
return m_qbsBuildStep ? !m_qbsBuildStep->install() : false;
}
bool noBuild() const { return m_qbsInstallStep; }
bool cleanInstallRoot() const {
if (m_qbsBuildStep)
return m_qbsBuildStep->cleanInstallRoot();
if (m_qbsInstallStep)
return m_qbsInstallStep->removeFirst();
return false;
}
int jobCount() const {
return m_qbsBuildStep ? m_qbsBuildStep->maxJobs() : 0;
}
Utils::FilePath installRoot() const {
const QbsBuildStep *bs = nullptr;
if (m_qbsBuildStep) {
bs = m_qbsBuildStep;
} else if (m_qbsInstallStep) {
bs = static_cast<QbsBuildConfiguration *>(m_qbsInstallStep->deployConfiguration()
->target()->activeBuildConfiguration())->qbsStep();
}
if (bs)
return bs->installRoot();
return Utils::FilePath();
}
private:
const QbsBuildStep * const m_qbsBuildStep;
const QbsCleanStep * const m_qbsCleanStep;
const QbsInstallStep * const m_qbsInstallStep;
};
QString QbsBuildConfiguration::equivalentCommandLine(const BuildStep *buildStep) const
QString QbsBuildConfiguration::equivalentCommandLine(const QbsBuildStepData &stepData) const
{
CommandLine commandLine;
const QString qbsInstallDir = QString::fromLocal8Bit(qgetenv("QBS_INSTALL_DIR"));
@@ -346,42 +269,41 @@ QString QbsBuildConfiguration::equivalentCommandLine(const BuildStep *buildStep)
? qbsInstallDir + QLatin1String("/bin/qbs")
: QCoreApplication::applicationDirPath() + QLatin1String("/qbs"));
commandLine.addArg(QDir::toNativeSeparators(qbsFilePath));
const StepProxy stepProxy(buildStep);
commandLine.addArg(stepProxy.command());
commandLine.addArg(stepData.command);
const QString buildDir = buildDirectory().toUserOutput();
commandLine.addArgs({"-d", buildDir});
commandLine.addArgs({"-f", buildStep->project()->projectFilePath().toUserOutput()});
commandLine.addArgs({"-f", project()->projectFilePath().toUserOutput()});
if (QbsSettings::useCreatorSettingsDirForQbs()) {
commandLine.addArgs({"--settings-dir",
QDir::toNativeSeparators(QbsSettings::qbsSettingsBaseDir())});
}
if (stepProxy.dryRun())
if (stepData.dryRun)
commandLine.addArg("--dry-run");
if (stepProxy.keepGoing())
if (stepData.keepGoing)
commandLine.addArg("--keep-going");
if (stepProxy.forceProbeExecution())
if (stepData.forceProbeExecution)
commandLine.addArg("--force-probe-execution");
if (stepProxy.showCommandLines())
if (stepData.showCommandLines)
commandLine.addArgs({"--command-echo-mode", "command-line"});
if (stepProxy.noInstall())
if (stepData.noInstall)
commandLine.addArg("--no-install");
if (stepProxy.noBuild())
if (stepData.noBuild)
commandLine.addArg("--no-build");
if (stepProxy.cleanInstallRoot())
if (stepData.cleanInstallRoot)
commandLine.addArg("--clean-install-root");
const int jobCount = stepProxy.jobCount();
const int jobCount = stepData.jobCount;
if (jobCount > 0)
commandLine.addArgs({"--jobs", QString::number(jobCount)});
const QString profileName = QbsProfileManager::profileNameForKit(buildStep->target()->kit());
const QString profileName = QbsProfileManager::profileNameForKit(target()->kit());
const QString buildVariant = qbsConfiguration()
.value(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY)).toString();
commandLine.addArg("config:" + configurationName());
commandLine.addArg(QString(Constants::QBS_CONFIG_VARIANT_KEY) + ':' + buildVariant);
const FilePath installRoot = stepProxy.installRoot();
const FilePath installRoot = stepData.installRoot;
if (!installRoot.isEmpty()) {
commandLine.addArg(QString(Constants::QBS_INSTALL_ROOT_KEY) + ':' + installRoot.toUserOutput());
if (qobject_cast<const QbsInstallStep *>(buildStep))
if (stepData.isInstallStep)
commandLine.addArgs({"--installRoot", installRoot.toUserOutput()});
}
commandLine.addArg("profile:" + profileName);

View File

@@ -40,7 +40,22 @@ namespace QbsProjectManager {
namespace Internal {
class QbsBuildStep;
class QbsProject;
class QbsBuildStepData
{
public:
QString command;
bool dryRun = false;
bool keepGoing = false;
bool forceProbeExecution = false;
bool showCommandLines = false;
bool noInstall = false;
bool noBuild = false;
bool cleanInstallRoot = false;
bool isInstallStep = false;
int jobCount = 0;
Utils::FilePath installRoot;
};
class QbsBuildConfiguration final : public ProjectExplorer::BuildConfiguration
{
@@ -73,7 +88,7 @@ public:
QStringList products() const;
QString configurationName() const;
QString equivalentCommandLine(const ProjectExplorer::BuildStep *buildStep) const;
QString equivalentCommandLine(const QbsBuildStepData &stepData) const;
bool isQmlDebuggingEnabled() const;
ProjectExplorer::TriState qmlDebuggingSetting() const;

View File

@@ -523,6 +523,23 @@ void QbsBuildStep::finish()
emit finished(m_lastWasSuccess);
}
QbsBuildStepData QbsBuildStep::stepData() const
{
QbsBuildStepData data;
data.command = "build";
data.dryRun = false;
data.keepGoing = m_keepGoing;
data.forceProbeExecution = m_forceProbes;
data.showCommandLines = m_showCommandLines;
data.noInstall = !m_install;
data.noBuild = false;
data.cleanInstallRoot = m_cleanInstallDir;
data.jobCount = maxJobs();
data.installRoot = installRoot();
return data;
}
// --------------------------------------------------------------------
// QbsBuildStepConfigWidget:
// --------------------------------------------------------------------
@@ -674,7 +691,8 @@ void QbsBuildStepConfigWidget::updateState()
const int idx = (buildVariant == Constants::QBS_VARIANT_DEBUG) ? 0 : 1;
buildVariantComboBox->setCurrentIndex(idx);
const auto qbsBuildConfig = static_cast<QbsBuildConfiguration *>(step()->buildConfiguration());
QString command = qbsBuildConfig->equivalentCommandLine(qbsStep());
QString command = qbsBuildConfig->equivalentCommandLine(qbsStep()->stepData());
for (int i = 0; i < m_propertyCache.count(); ++i) {
command += ' ' + m_propertyCache.at(i).name + ':' + m_propertyCache.at(i).effectiveValue;

View File

@@ -70,6 +70,7 @@ public:
bool forceProbes() const { return m_forceProbes; }
QbsBuildSystem *qbsBuildSystem() const;
QbsBuildStepData stepData() const;
signals:
void qbsConfigurationChanged();

View File

@@ -67,8 +67,12 @@ QbsCleanStep::QbsCleanStep(BuildStepList *bsl, Core::Id id)
effectiveCommandAspect->setLabelText(tr("Equivalent command line:"));
setSummaryUpdater([this, effectiveCommandAspect] {
QbsBuildStepData data;
data.command = "clean";
data.dryRun = m_dryRunAspect->value();
data.keepGoing = m_keepGoingAspect->value();
QString command = static_cast<QbsBuildConfiguration *>(buildConfiguration())
->equivalentCommandLine(this);
->equivalentCommandLine(data);
effectiveCommandAspect->setValue(command);
return tr("<b>Qbs:</b> %1").arg(command);
});

View File

@@ -44,8 +44,7 @@ public:
QbsCleanStep(ProjectExplorer::BuildStepList *bsl, Core::Id id);
~QbsCleanStep() override;
bool dryRun() const { return m_dryRunAspect->value(); }
bool keepGoing() const { return m_keepGoingAspect->value(); }
QbsBuildStepData stepData() const;
private:
bool init() override;

View File

@@ -182,7 +182,7 @@ void QbsInstallStep::installDone(const ErrorInfo &error)
m_session = nullptr;
for (const ErrorInfoItem &item : error.items)
createTaskAndOutput(Task::Error, item.description, item.filePath.toString(), item.line);
createTaskAndOutput(Task::Error, item.description, item.filePath, item.line);
emit finished(!error.hasError());
}
@@ -199,10 +199,10 @@ void QbsInstallStep::handleProgress(int value)
emit progress(value * 100 / m_maxProgress, m_description);
}
void QbsInstallStep::createTaskAndOutput(ProjectExplorer::Task::TaskType type,
const QString &message, const QString &file, int line)
void QbsInstallStep::createTaskAndOutput(Task::TaskType type, const QString &message,
const Utils::FilePath &file, int line)
{
const CompileTask task(type, message, Utils::FilePath::fromString(file), line);
const CompileTask task(type, message, file, line);
emit addTask(task, 1);
emit addOutput(message, OutputFormat::Stdout);
}
@@ -231,6 +231,21 @@ void QbsInstallStep::setKeepGoing(bool kg)
emit changed();
}
QbsBuildStepData QbsInstallStep::stepData() const
{
QbsBuildStepData data;
data.command = "install";
data.dryRun = dryRun();
data.keepGoing = keepGoing();
data.noBuild = true;
data.cleanInstallRoot = removeFirst();
data.isInstallStep = true;
auto bs = static_cast<QbsBuildConfiguration *>(target()->activeBuildConfiguration())->qbsStep();
if (bs)
data.installRoot = bs->installRoot();
return data;
};
// --------------------------------------------------------------------
// QbsInstallStepConfigWidget:
// --------------------------------------------------------------------
@@ -320,7 +335,7 @@ void QbsInstallStepConfigWidget::updateState()
m_keepGoingCheckBox->setChecked(m_step->keepGoing());
}
QString command = m_step->buildConfig()->equivalentCommandLine(m_step);
QString command = m_step->buildConfig()->equivalentCommandLine(m_step->stepData());
m_commandLineTextEdit->setPlainText(command);

View File

@@ -48,6 +48,7 @@ public:
bool removeFirst() const { return m_cleanInstallRoot; }
bool dryRun() const { return m_dryRun; }
bool keepGoing() const { return m_keepGoing; }
QbsBuildStepData stepData() const;
signals:
void changed();
@@ -66,7 +67,7 @@ private:
void handleProgress(int value);
void createTaskAndOutput(ProjectExplorer::Task::TaskType type,
const QString &message, const QString &file, int line);
const QString &message, const Utils::FilePath &file, int line);
void setRemoveFirst(bool rf);
void setDryRun(bool dr);

View File

@@ -33,6 +33,7 @@
#include <nodeabstractproperty.h>
#include <exception.h>
#include <nodemetainfo.h>
#include <nodelistproperty.h>
#include <QStandardItemModel>
#include <QMessageBox>
@@ -210,6 +211,10 @@ void ConnectionModel::updateTargetNode(int rowNumber)
ModelNode connectionNode = signalHandlerProperty.parentModelNode();
if (!newTarget.isEmpty()) {
const ModelNode parent = connectionView()->modelNodeForId(newTarget);
if (parent.isValid() && QmlItemNode::isValidQmlItemNode(parent))
parent.nodeListProperty("data").reparentHere(connectionNode);
connectionView()->executeInTransaction("ConnectionModel::updateTargetNode", [= ,&connectionNode](){
connectionNode.bindingProperty("target").setExpression(newTarget);
});
@@ -255,14 +260,21 @@ void ConnectionModel::addConnection()
nodeMetaInfo.majorVersion(),
nodeMetaInfo.minorVersion());
rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode);
newNode.signalHandlerProperty("onClicked").setSource(QLatin1String("print(\"clicked\")"));
if (connectionView()->selectedModelNodes().count() == 1
&& !connectionView()->selectedModelNodes().constFirst().id().isEmpty()) {
if (connectionView()->selectedModelNodes().count() == 1) {
const ModelNode selectedNode = connectionView()->selectedModelNodes().constFirst();
if (QmlItemNode::isValidQmlItemNode(selectedNode))
selectedNode.nodeAbstractProperty("data").reparentHere(newNode);
else
rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode);
if (!connectionView()->selectedModelNodes().constFirst().id().isEmpty())
newNode.bindingProperty("target").setExpression(selectedNode.id());
else
newNode.bindingProperty("target").setExpression(QLatin1String("parent"));
} else {
rootModelNode.nodeAbstractProperty(rootModelNode.metaInfo().defaultPropertyName()).reparentHere(newNode);
newNode.bindingProperty("target").setExpression(QLatin1String("parent"));
}
});

View File

@@ -394,6 +394,9 @@ static void scatterItem(const ModelNode &pastedNode, const ModelNode &targetNode
if (targetNode.metaInfo().isValid() && targetNode.metaInfo().isLayoutable())
return;
if (!(pastedNode.hasVariantProperty("x") && pastedNode.hasVariantProperty("y")))
return;
bool scatter = false;
foreach (const ModelNode &childNode, targetNode.directSubModelNodes()) {
if ((childNode.variantProperty("x").value() == pastedNode.variantProperty("x").value()) &&

View File

@@ -120,7 +120,7 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
/* other widgets */
auto tabBar = new QTabBar(this);
tabBar->addTab(tr("QML Types", "Title of library QML types view"));
tabBar->addTab(tr("Resources", "Title of library resources view"));
tabBar->addTab(tr("Assets", "Title of library assets view"));
tabBar->addTab(tr("Imports", "Title of library imports view"));
tabBar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
connect(tabBar, &QTabBar::currentChanged, this, &ItemLibraryWidget::setCurrentIndexOfStackedWidget);
@@ -184,8 +184,8 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
font.setPixelSize(Theme::instance()->smallFontPixelSize());
button->setFont(font);
button->setIcon(Utils::Icons::PLUS.icon());
button->setText(tr("Add New Resources..."));
button->setToolTip(tr("Add new resources to project."));
button->setText(tr("Add New Assets..."));
button->setToolTip(tr("Add new assets to project."));
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
flowLayout->addWidget(button);
connect(button, &QToolButton::clicked, this, &ItemLibraryWidget::addResources);
@@ -511,7 +511,7 @@ void ItemLibraryWidget::addResources()
const QString currentDir = lastDir.isEmpty() ? document->fileName().parentDir().toString() : lastDir;
const auto fileNames = QFileDialog::getOpenFileNames(Core::ICore::mainWindow(),
tr("Add Resources"),
tr("Add Assets"),
currentDir,
filters.join(";;"));

View File

@@ -149,10 +149,10 @@
</size>
</property>
<property name="minimum">
<number>-10000</number>
<number>0</number>
</property>
<property name="maximum">
<number>10000</number>
<number>100000</number>
</property>
</widget>
</item>
@@ -244,10 +244,10 @@
</size>
</property>
<property name="minimum">
<number>-10000</number>
<number>-100000</number>
</property>
<property name="maximum">
<number>10000</number>
<number>100000</number>
</property>
</widget>
</item>
@@ -313,10 +313,10 @@
</size>
</property>
<property name="minimum">
<number>-10000</number>
<number>-100000</number>
</property>
<property name="maximum">
<number>10000</number>
<number>100000</number>
</property>
</widget>
</item>

View File

@@ -47,8 +47,6 @@ TimelineForm::TimelineForm(QWidget *parent)
{
ui->setupUi(this);
ui->duration->setVisible(false);
connect(ui->expressionBindingLineEdit, &QLineEdit::editingFinished, [this]() {
QTC_ASSERT(m_timeline.isValid(), return );
@@ -135,13 +133,10 @@ void TimelineForm::setTimeline(const QmlTimeline &timeline)
if (m_timeline.isValid()) {
ui->idLineEdit->setText(m_timeline.modelNode().displayName());
ui->duration->setValue(qRound(m_timeline.duration()));
ui->startFrame->setValue(
m_timeline.modelNode().variantProperty("startFrame").value().toInt());
ui->endFrame->setValue(m_timeline.modelNode().variantProperty("endFrame").value().toInt());
ui->duration->setValue(qRound(m_timeline.duration()));
if (m_timeline.modelNode().hasBindingProperty("currentFrame")) {
ui->expressionBindingLineEdit->setText(
m_timeline.modelNode().bindingProperty("currentFrame").expression());
@@ -173,7 +168,6 @@ void TimelineForm::setProperty(const PropertyName &propertyName, const QVariant
} catch (const Exception &e) {
e.showException();
}
ui->duration->setValue(qRound(m_timeline.duration()));
}
void TimelineForm::connectSpinBox(QSpinBox *spinBox, const PropertyName &propertyName)

View File

@@ -6,16 +6,19 @@
<rect>
<x>0</x>
<y>0</y>
<width>627</width>
<width>641</width>
<height>170</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="8" colspan="2">
<spacer name="horizontalSpacer_11">
<item row="3" column="6" colspan="2">
<spacer name="horizontalSpacer_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>49</width>
@@ -24,72 +27,8 @@
</property>
</spacer>
</item>
<item row="2" column="5">
<widget class="QSpinBox" name="endFrame">
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-10000</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
</widget>
</item>
<item row="2" column="2" colspan="2">
<widget class="QSpinBox" name="startFrame">
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-10000</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
</widget>
</item>
<item row="2" column="6">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Duration</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Expression binding:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="8" colspan="2">
<spacer name="horizontalSpacer_10">
<item row="1" column="6" colspan="2">
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@@ -111,66 +50,18 @@
</property>
</widget>
</item>
<item row="3" column="3" colspan="2">
<widget class="QRadioButton" name="animation">
<property name="enabled">
<bool>false</bool>
</property>
<item row="2" column="1">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Animation</string>
<string>Start frame:</string>
</property>
<property name="checked">
<bool>true</bool>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="8" colspan="2">
<spacer name="horizontalSpacer_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>49</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="1" colspan="5">
<widget class="QLineEdit" name="expressionBindingLineEdit">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>240</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item row="4" column="8" colspan="2">
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>49</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="7">
<widget class="QSpinBox" name="duration">
<item row="2" column="2" colspan="2">
<widget class="QSpinBox" name="startFrame">
<property name="minimumSize">
<size>
<width>80</width>
@@ -183,11 +74,11 @@
<height>16777215</height>
</size>
</property>
<property name="readOnly">
<bool>true</bool>
<property name="minimum">
<number>-100000</number>
</property>
<property name="maximum">
<number>20000</number>
<number>100000</number>
</property>
</widget>
</item>
@@ -201,13 +92,6 @@
</property>
</widget>
</item>
<item row="1" column="1" colspan="5">
<widget class="QLineEdit" name="idLineEdit">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
@@ -237,16 +121,100 @@
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="label_6">
<item row="3" column="3" colspan="2">
<widget class="QRadioButton" name="animation">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Start frame:</string>
<string>Animation</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="6" colspan="2">
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>49</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Expression binding:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="5">
<widget class="QSpinBox" name="endFrame">
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="minimum">
<number>-100000</number>
</property>
<property name="maximum">
<number>100000</number>
</property>
</widget>
</item>
<item row="1" column="1" colspan="5">
<widget class="QLineEdit" name="idLineEdit">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="4" column="1" colspan="5">
<widget class="QLineEdit" name="expressionBindingLineEdit">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>240</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item row="2" column="6" colspan="2">
<spacer name="horizontalSpacer_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>49</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>

View File

@@ -275,4 +275,149 @@ MetaInfo {
Property { name: "height"; type: "int"; value: 400; }
}
}
Type {
name: "QtQuick.PropertyAnimation"
icon: ":/qtquickplugin/images/item-icon16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
}
ItemLibraryEntry {
name: "Property Animation"
category: "Qt Quick - Animation"
libraryIcon: ":/qtquickplugin/images/item-icon.png"
version: "2.0"
}
}
Type {
name: "QtQuick.PauseAnimation"
icon: ":/qtquickplugin/images/item-icon16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
}
ItemLibraryEntry {
name: "Pause Animation"
category: "Qt Quick - Animation"
libraryIcon: ":/qtquickplugin/images/item-icon.png"
version: "2.0"
}
}
Type {
name: "QtQuick.SequentialAnimation"
icon: ":/qtquickplugin/images/item-icon16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
}
ItemLibraryEntry {
name: "Sequential Animation"
category: "Qt Quick - Animation"
libraryIcon: ":/qtquickplugin/images/item-icon.png"
version: "2.0"
}
}
Type {
name: "QtQuick.ParallelAnimation"
icon: ":/qtquickplugin/images/item-icon16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
}
ItemLibraryEntry {
name: "Parallel Animation"
category: "Qt Quick - Animation"
libraryIcon: ":/qtquickplugin/images/item-icon.png"
version: "2.0"
}
}
Type {
name: "QtQuick.PropertyAction"
icon: ":/qtquickplugin/images/item-icon16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
}
ItemLibraryEntry {
name: "Property Action"
category: "Qt Quick - Animation"
libraryIcon: ":/qtquickplugin/images/item-icon.png"
version: "2.0"
}
}
Type {
name: "QtQuick.ScriptAction"
icon: ":/qtquickplugin/images/item-icon16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
}
ItemLibraryEntry {
name: "Script Action"
category: "Qt Quick - Animation"
libraryIcon: ":/qtquickplugin/images/item-icon.png"
version: "2.0"
}
}
Type {
name: "QtQuick.ColorAnimation"
icon: ":/qtquickplugin/images/item-icon16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
}
ItemLibraryEntry {
name: "ColorAnimation"
category: "Qt Quick - Animation"
libraryIcon: ":/qtquickplugin/images/item-icon.png"
version: "2.0"
}
}
Type {
name: "QtQuick.NumberAnimation"
icon: ":/qtquickplugin/images/item-icon16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
}
ItemLibraryEntry {
name: "Number Animation"
category: "Qt Quick - Animation"
libraryIcon: ":/qtquickplugin/images/item-icon.png"
version: "2.0"
}
}
}