forked from qt-creator/qt-creator
QmlDesigner: Porting to Qt Quick 2
This patch ports our Qt Quick views to Qt Quick 2. Change-Id: Ie0cfd81e7ebb76d2ed667211ad063feaaff5aa14 Reviewed-by: Kai Koehne <kai.koehne@digia.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
@@ -67,20 +67,13 @@ contains(QT_CONFIG, declarative)|!isEmpty(QT.declarative.name) {
|
|||||||
qmlprojectmanager \
|
qmlprojectmanager \
|
||||||
qmlprofiler
|
qmlprofiler
|
||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4) {
|
greaterThan(QT_MAJOR_VERSION, 4):greaterThan(QT_MINOR_VERSION, 0) {
|
||||||
SUBDIRS += \
|
SUBDIRS += \
|
||||||
qmldesigner \
|
qmldesigner \
|
||||||
welcome
|
welcome
|
||||||
} else {
|
|
||||||
include(../private_headers.pri)
|
|
||||||
exists($${QT_PRIVATE_HEADERS}/QtDeclarative/private/qdeclarativecontext_p.h) {
|
|
||||||
SUBDIRS += \
|
|
||||||
qmldesigner
|
|
||||||
} else {
|
} else {
|
||||||
warning("QmlDesigner plugin has been disabled.")
|
warning("QmlDesigner plugin has been disabled.")
|
||||||
warning("The plugin depends on private headers from QtDeclarative module.")
|
warning("The plugin needs at least Qt 5.1.")
|
||||||
warning("To enable it, pass 'QT_PRIVATE_HEADERS=$QTDIR/include' to qmake, where $QTDIR is the source directory of qt.")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
warning("QmlProjectManager, QmlProfiler and QmlDesigner plugins have been disabled: The plugins require QtDeclarative")
|
warning("QmlProjectManager, QmlProfiler and QmlDesigner plugins have been disabled: The plugins require QtDeclarative")
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<file>qml/ItemsView.qml</file>
|
<file>qml/ItemsView.qml</file>
|
||||||
<file>qml/ItemsViewStyle.qml</file>
|
<file>qml/ItemsViewStyle.qml</file>
|
||||||
<file>qml/SectionView.qml</file>
|
<file>qml/SectionView.qml</file>
|
||||||
<file>qml/ItemView.qml</file>
|
<file>qml/SingleItemView.qml</file>
|
||||||
<file>qml/Scrollbar.qml</file>
|
<file>qml/Scrollbar.qml</file>
|
||||||
<file>qml/Selector.qml</file>
|
<file>qml/Selector.qml</file>
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace QmlDesigner {
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
ItemLibraryImageProvider::ItemLibraryImageProvider() :
|
ItemLibraryImageProvider::ItemLibraryImageProvider() :
|
||||||
QDeclarativeImageProvider(QDeclarativeImageProvider::Pixmap)
|
QQuickImageProvider(QQuickImageProvider::Pixmap)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,13 +30,13 @@
|
|||||||
#ifndef ITEMLIBRARYIMAGEPROVIDER_H
|
#ifndef ITEMLIBRARYIMAGEPROVIDER_H
|
||||||
#define ITEMLIBRARYIMAGEPROVIDER_H
|
#define ITEMLIBRARYIMAGEPROVIDER_H
|
||||||
|
|
||||||
#include <QDeclarativeImageProvider>
|
#include <QQuickImageProvider>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class ItemLibraryImageProvider : public QDeclarativeImageProvider
|
class ItemLibraryImageProvider : public QQuickImageProvider
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ItemLibraryImageProvider();
|
ItemLibraryImageProvider();
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
#include <QtDeclarative>
|
#include <QtQuick>
|
||||||
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QMimeData)
|
QT_FORWARD_DECLARE_CLASS(QMimeData)
|
||||||
|
|
||||||
|
|||||||
@@ -49,20 +49,16 @@
|
|||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
|
||||||
#include <QDeclarativeItem>
|
#include <QQuickItem>
|
||||||
|
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
|
ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
|
||||||
QFrame(parent),
|
QFrame(parent),
|
||||||
m_iconProvider(m_resIconSize),
|
m_iconProvider(m_resIconSize),
|
||||||
m_itemIconSize(24, 24),
|
m_itemIconSize(24, 24),
|
||||||
m_resIconSize(24, 24),
|
m_resIconSize(24, 24),
|
||||||
m_itemsView(new QDeclarativeView(this)),
|
m_itemsView(new QQuickView()),
|
||||||
m_resourcesView(new Internal::ItemLibraryTreeView(this)),
|
m_resourcesView(new Internal::ItemLibraryTreeView(this)),
|
||||||
m_filterFlag(QtBasic)
|
m_filterFlag(QtBasic)
|
||||||
{
|
{
|
||||||
@@ -71,15 +67,11 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
|
|||||||
setWindowTitle(tr("Library", "Title of library view"));
|
setWindowTitle(tr("Library", "Title of library view"));
|
||||||
|
|
||||||
/* create Items view and its model */
|
/* create Items view and its model */
|
||||||
m_itemsView->setAttribute(Qt::WA_OpaquePaintEvent);
|
m_itemsView->setResizeMode(QQuickView::SizeRootObjectToView);
|
||||||
m_itemsView->setAttribute(Qt::WA_NoSystemBackground);
|
|
||||||
m_itemsView->setAcceptDrops(false);
|
|
||||||
m_itemsView->setFocusPolicy(Qt::ClickFocus);
|
|
||||||
m_itemsView->setResizeMode(QDeclarativeView::SizeRootObjectToView);
|
|
||||||
m_itemLibraryModel = new Internal::ItemLibraryModel(this);
|
m_itemLibraryModel = new Internal::ItemLibraryModel(this);
|
||||||
m_itemLibraryModel->setItemIconSize(m_itemIconSize);
|
m_itemLibraryModel->setItemIconSize(m_itemIconSize);
|
||||||
|
|
||||||
QDeclarativeContext *rootContext = m_itemsView->rootContext();
|
QQmlContext *rootContext = m_itemsView->rootContext();
|
||||||
rootContext->setContextProperty(QLatin1String("itemLibraryModel"), m_itemLibraryModel.data());
|
rootContext->setContextProperty(QLatin1String("itemLibraryModel"), m_itemLibraryModel.data());
|
||||||
rootContext->setContextProperty(QLatin1String("itemLibraryIconWidth"), m_itemIconSize.width());
|
rootContext->setContextProperty(QLatin1String("itemLibraryIconWidth"), m_itemIconSize.width());
|
||||||
rootContext->setContextProperty(QLatin1String("itemLibraryIconHeight"), m_itemIconSize.height());
|
rootContext->setContextProperty(QLatin1String("itemLibraryIconHeight"), m_itemIconSize.height());
|
||||||
@@ -92,7 +84,7 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
|
|||||||
// loading the qml has to come after all needed context properties are set
|
// loading the qml has to come after all needed context properties are set
|
||||||
m_itemsView->setSource(QUrl("qrc:/ItemLibrary/qml/ItemsView.qml"));
|
m_itemsView->setSource(QUrl("qrc:/ItemLibrary/qml/ItemsView.qml"));
|
||||||
|
|
||||||
QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(m_itemsView->rootObject());
|
QQuickItem *rootItem = qobject_cast<QQuickItem*>(m_itemsView->rootObject());
|
||||||
connect(rootItem, SIGNAL(itemSelected(int)), this, SLOT(showItemInfo(int)));
|
connect(rootItem, SIGNAL(itemSelected(int)), this, SLOT(showItemInfo(int)));
|
||||||
connect(rootItem, SIGNAL(itemDragged(int)), this, SLOT(startDragAndDrop(int)));
|
connect(rootItem, SIGNAL(itemDragged(int)), this, SLOT(startDragAndDrop(int)));
|
||||||
connect(this, SIGNAL(scrollItemsView(QVariant)), rootItem, SLOT(scrollView(QVariant)));
|
connect(this, SIGNAL(scrollItemsView(QVariant)), rootItem, SLOT(scrollView(QVariant)));
|
||||||
@@ -133,8 +125,9 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) :
|
|||||||
lineEditLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 2);
|
lineEditLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 2);
|
||||||
connect(m_filterLineEdit.data(), SIGNAL(filterChanged(QString)), this, SLOT(setSearchFilter(QString)));
|
connect(m_filterLineEdit.data(), SIGNAL(filterChanged(QString)), this, SLOT(setSearchFilter(QString)));
|
||||||
|
|
||||||
|
QWidget *container = createWindowContainer(m_itemsView.data());
|
||||||
m_stackedWidget = new QStackedWidget(this);
|
m_stackedWidget = new QStackedWidget(this);
|
||||||
m_stackedWidget->addWidget(m_itemsView.data());
|
m_stackedWidget->addWidget(container);
|
||||||
m_stackedWidget->addWidget(m_resourcesView.data());
|
m_stackedWidget->addWidget(m_resourcesView.data());
|
||||||
|
|
||||||
QWidget *spacer = new QWidget(this);
|
QWidget *spacer = new QWidget(this);
|
||||||
@@ -375,7 +368,7 @@ void ItemLibraryWidget::startDragAndDrop(int itemLibId)
|
|||||||
drag->setPreview(QPixmap::fromImage(image));
|
drag->setPreview(QPixmap::fromImage(image));
|
||||||
drag->setMimeData(mimeData);
|
drag->setMimeData(mimeData);
|
||||||
|
|
||||||
QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(m_itemsView->rootObject());
|
QQuickItem *rootItem = qobject_cast<QQuickItem*>(m_itemsView->rootObject());
|
||||||
connect(rootItem, SIGNAL(stopDragAndDrop()), drag, SLOT(stopDrag()));
|
connect(rootItem, SIGNAL(stopDragAndDrop()), drag, SLOT(stopDrag()));
|
||||||
|
|
||||||
drag->exec();
|
drag->exec();
|
||||||
@@ -386,16 +379,6 @@ void ItemLibraryWidget::showItemInfo(int /*itemLibId*/)
|
|||||||
// qDebug() << "showing item info about id" << itemLibId;
|
// qDebug() << "showing item info about id" << itemLibId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemLibraryWidget::wheelEvent(QWheelEvent *event)
|
|
||||||
{
|
|
||||||
if (m_stackedWidget->currentIndex() == 0 &&
|
|
||||||
m_itemsView->rect().contains(event->pos())) {
|
|
||||||
emit scrollItemsView(event->delta());
|
|
||||||
event->accept();
|
|
||||||
} else
|
|
||||||
QFrame::wheelEvent(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ItemLibraryWidget::removeImport(const QString &name)
|
void ItemLibraryWidget::removeImport(const QString &name)
|
||||||
{
|
{
|
||||||
if (!m_model)
|
if (!m_model)
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <QFileIconProvider>
|
#include <QFileIconProvider>
|
||||||
#include <QDeclarativeView>
|
#include <QQuickView>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QFileSystemModel;
|
class QFileSystemModel;
|
||||||
@@ -105,7 +105,6 @@ public slots:
|
|||||||
void onMeegoChecked(bool b);
|
void onMeegoChecked(bool b);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void wheelEvent(QWheelEvent *event);
|
|
||||||
void removeImport(const QString &name);
|
void removeImport(const QString &name);
|
||||||
void addImport(const QString &name, const QString &version);
|
void addImport(const QString &name, const QString &version);
|
||||||
void emitImportChecked();
|
void emitImportChecked();
|
||||||
@@ -131,8 +130,9 @@ private:
|
|||||||
QWeakPointer<QFileSystemModel> m_resourcesFileSystemModel;
|
QWeakPointer<QFileSystemModel> m_resourcesFileSystemModel;
|
||||||
|
|
||||||
QWeakPointer<QStackedWidget> m_stackedWidget;
|
QWeakPointer<QStackedWidget> m_stackedWidget;
|
||||||
|
|
||||||
QWeakPointer<Utils::FilterLineEdit> m_filterLineEdit;
|
QWeakPointer<Utils::FilterLineEdit> m_filterLineEdit;
|
||||||
QScopedPointer<QDeclarativeView> m_itemsView;
|
QScopedPointer<QQuickView> m_itemsView;
|
||||||
QScopedPointer<Internal::ItemLibraryTreeView> m_resourcesView;
|
QScopedPointer<Internal::ItemLibraryTreeView> m_resourcesView;
|
||||||
|
|
||||||
QWeakPointer<Model> m_model;
|
QWeakPointer<Model> m_model;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 2.1
|
||||||
|
|
||||||
/* The view displaying the item grid.
|
/* The view displaying the item grid.
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 2.1
|
||||||
|
|
||||||
// the style used the items view
|
// the style used the items view
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 2.1
|
||||||
|
|
||||||
// scrollbar for the items view
|
// scrollbar for the items view
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 2.1
|
||||||
|
|
||||||
// view displaying one item library section including its grid
|
// view displaying one item library section including its grid
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ Column {
|
|||||||
Component {
|
Component {
|
||||||
id: itemDelegate
|
id: itemDelegate
|
||||||
|
|
||||||
ItemView {
|
SingleItemView {
|
||||||
id: item
|
id: item
|
||||||
|
|
||||||
width: cellWidth
|
width: cellWidth
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 2.1
|
||||||
|
|
||||||
// the coloured selector of the items view
|
// the coloured selector of the items view
|
||||||
|
|
||||||
|
|||||||
@@ -27,8 +27,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 2.1
|
||||||
|
|
||||||
// view displaying an item library grid item
|
// view displaying an item library grid item
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "basiclayouts.h"
|
|
||||||
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
QBoxLayoutObject::QBoxLayoutObject(QObject *parent)
|
|
||||||
: QLayoutObject(parent), _layout(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QBoxLayoutObject::QBoxLayoutObject(QBoxLayout *layout, QObject *parent)
|
|
||||||
: QLayoutObject(parent), _layout(layout)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QLayout *QBoxLayoutObject::layout() const
|
|
||||||
{
|
|
||||||
return _layout;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QBoxLayoutObject::addWidget(QWidget *wid)
|
|
||||||
{
|
|
||||||
_layout->addWidget(wid);
|
|
||||||
}
|
|
||||||
|
|
||||||
void QBoxLayoutObject::clearWidget()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QHBoxLayoutObject::QHBoxLayoutObject(QObject *parent)
|
|
||||||
: QBoxLayoutObject(new QHBoxLayout, parent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QVBoxLayoutObject::QVBoxLayoutObject(QObject *parent)
|
|
||||||
: QBoxLayoutObject(new QVBoxLayout, parent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
void BasicLayouts::registerDeclarativeTypes()
|
|
||||||
{
|
|
||||||
qmlRegisterType<QBoxLayoutObject>("Bauhaus",1,0,"QBoxLayout");
|
|
||||||
qmlRegisterType<QHBoxLayoutObject>("Bauhaus",1,0,"QHBoxLayout");
|
|
||||||
qmlRegisterType<QVBoxLayoutObject>("Bauhaus",1,0,"QVBoxLayout");
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,177 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef BASICLAYOUTS_H
|
|
||||||
#define BASICLAYOUTS_H
|
|
||||||
|
|
||||||
#include <qlayoutobject.h>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
QT_MODULE(Declarative)
|
|
||||||
class QBoxLayoutObject : public QLayoutObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
Q_PROPERTY(QDeclarativeListProperty<QWidget> children READ children)
|
|
||||||
|
|
||||||
Q_PROPERTY(int topMargin READ topMargin WRITE setTopMargin)
|
|
||||||
Q_PROPERTY(int bottomMargin READ bottomMargin WRITE setBottomMargin)
|
|
||||||
Q_PROPERTY(int leftMargin READ leftMargin WRITE setLeftMargin)
|
|
||||||
Q_PROPERTY(int rightMargin READ rightMargin WRITE setRightMargin)
|
|
||||||
Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
|
|
||||||
|
|
||||||
Q_CLASSINFO("DefaultProperty", "children")
|
|
||||||
public:
|
|
||||||
QBoxLayoutObject(QObject *parent=0);
|
|
||||||
explicit QBoxLayoutObject(QBoxLayout *, QObject *parent=0);
|
|
||||||
virtual QLayout *layout() const;
|
|
||||||
|
|
||||||
QDeclarativeListProperty<QWidget> children() {
|
|
||||||
return QDeclarativeListProperty<QWidget>(this, 0, children_append, 0, 0, children_clear);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
friend class WidgetList;
|
|
||||||
void addWidget(QWidget *);
|
|
||||||
void clearWidget();
|
|
||||||
|
|
||||||
static void children_append(QDeclarativeListProperty<QWidget> *property, QWidget *widget) {
|
|
||||||
static_cast<QBoxLayoutObject*>(property->object)->addWidget(widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void children_clear(QDeclarativeListProperty<QWidget> *property) {
|
|
||||||
static_cast<QBoxLayoutObject*>(property->object)->clearWidget();
|
|
||||||
}
|
|
||||||
|
|
||||||
void getMargins()
|
|
||||||
{
|
|
||||||
_layout->getContentsMargins(&mLeft, &mTop, &mRight, &mBottom);
|
|
||||||
}
|
|
||||||
|
|
||||||
void setMargins()
|
|
||||||
{
|
|
||||||
_layout->setContentsMargins(mLeft, mTop, mRight, mBottom);
|
|
||||||
}
|
|
||||||
|
|
||||||
int topMargin()
|
|
||||||
{
|
|
||||||
getMargins();
|
|
||||||
return mTop;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setTopMargin(int margin)
|
|
||||||
{
|
|
||||||
getMargins();
|
|
||||||
mTop = margin;
|
|
||||||
setMargins();
|
|
||||||
}
|
|
||||||
|
|
||||||
int bottomMargin()
|
|
||||||
{
|
|
||||||
getMargins();
|
|
||||||
return mBottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setBottomMargin(int margin)
|
|
||||||
{
|
|
||||||
getMargins();
|
|
||||||
mBottom = margin;
|
|
||||||
setMargins();
|
|
||||||
}
|
|
||||||
|
|
||||||
int leftMargin()
|
|
||||||
{
|
|
||||||
getMargins();
|
|
||||||
return mLeft;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setLeftMargin(int margin)
|
|
||||||
{
|
|
||||||
getMargins();
|
|
||||||
mLeft = margin;
|
|
||||||
setMargins();
|
|
||||||
}
|
|
||||||
|
|
||||||
int rightMargin()
|
|
||||||
{
|
|
||||||
getMargins();
|
|
||||||
return mRight;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setRightMargin(int margin)
|
|
||||||
{
|
|
||||||
getMargins();
|
|
||||||
mRight = margin;
|
|
||||||
setMargins();
|
|
||||||
}
|
|
||||||
|
|
||||||
int spacing() const
|
|
||||||
{
|
|
||||||
return _layout->spacing();
|
|
||||||
}
|
|
||||||
|
|
||||||
void setSpacing(int spacing)
|
|
||||||
{
|
|
||||||
_layout->setSpacing(spacing);
|
|
||||||
}
|
|
||||||
|
|
||||||
QBoxLayout *_layout;
|
|
||||||
|
|
||||||
int mTop, mLeft, mBottom, mRight;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class QHBoxLayoutObject : public QBoxLayoutObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
QHBoxLayoutObject(QObject *parent=0);
|
|
||||||
};
|
|
||||||
|
|
||||||
class QVBoxLayoutObject : public QBoxLayoutObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
QVBoxLayoutObject(QObject *parent=0);
|
|
||||||
};
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
QML_DECLARE_TYPE(QBoxLayoutObject)
|
|
||||||
QML_DECLARE_TYPE(QHBoxLayoutObject)
|
|
||||||
QML_DECLARE_TYPE(QVBoxLayoutObject)
|
|
||||||
|
|
||||||
|
|
||||||
class BasicLayouts {
|
|
||||||
public:
|
|
||||||
static void registerDeclarativeTypes();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // BASICLAYOUTS_H
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,120 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef BASICWIDGETS_H
|
|
||||||
#define BASICWIDGETS_H
|
|
||||||
|
|
||||||
#include <qdeclarative.h>
|
|
||||||
#include <QGraphicsView>
|
|
||||||
#include <QLabel>
|
|
||||||
#include <QPushButton>
|
|
||||||
#include <QToolButton>
|
|
||||||
#include <QCheckBox>
|
|
||||||
#include <QRadioButton>
|
|
||||||
#include <QLineEdit>
|
|
||||||
#include <QTextEdit>
|
|
||||||
#include <QPlainTextEdit>
|
|
||||||
#include <QDoubleSpinBox>
|
|
||||||
#include <QSlider>
|
|
||||||
#include <QDateEdit>
|
|
||||||
#include <QTimeEdit>
|
|
||||||
#include <QProgressBar>
|
|
||||||
#include <QGroupBox>
|
|
||||||
#include <QDial>
|
|
||||||
#include <QLCDNumber>
|
|
||||||
#include <QFontComboBox>
|
|
||||||
#include <QScrollBar>
|
|
||||||
#include <QCalendarWidget>
|
|
||||||
#include <QTabWidget>
|
|
||||||
#include <QMenu>
|
|
||||||
#include <QAction>
|
|
||||||
#include "filewidget.h"
|
|
||||||
#include "layoutwidget.h"
|
|
||||||
|
|
||||||
QML_DECLARE_TYPE(QWidget)
|
|
||||||
|
|
||||||
//display
|
|
||||||
QML_DECLARE_TYPE(QLabel)
|
|
||||||
QML_DECLARE_TYPE(QProgressBar)
|
|
||||||
QML_DECLARE_TYPE(QLCDNumber)
|
|
||||||
|
|
||||||
//input
|
|
||||||
QML_DECLARE_TYPE(QLineEdit)
|
|
||||||
QML_DECLARE_TYPE(QTextEdit)
|
|
||||||
QML_DECLARE_TYPE(QPlainTextEdit)
|
|
||||||
QML_DECLARE_TYPE(QSpinBox)
|
|
||||||
QML_DECLARE_TYPE(QDoubleSpinBox)
|
|
||||||
QML_DECLARE_TYPE(QSlider)
|
|
||||||
QML_DECLARE_TYPE(QDateTimeEdit)
|
|
||||||
QML_DECLARE_TYPE(QDateEdit)
|
|
||||||
QML_DECLARE_TYPE(QTimeEdit)
|
|
||||||
QML_DECLARE_TYPE(QFontComboBox)
|
|
||||||
QML_DECLARE_TYPE(QDial)
|
|
||||||
QML_DECLARE_TYPE(QScrollBar)
|
|
||||||
QML_DECLARE_TYPE(QCalendarWidget)
|
|
||||||
QML_DECLARE_TYPE(QComboBox)
|
|
||||||
|
|
||||||
//buttons
|
|
||||||
QML_DECLARE_TYPE(QPushButton)
|
|
||||||
QML_DECLARE_TYPE(QToolButton)
|
|
||||||
QML_DECLARE_TYPE(QCheckBox)
|
|
||||||
QML_DECLARE_TYPE(QRadioButton)
|
|
||||||
|
|
||||||
//containers
|
|
||||||
QML_DECLARE_TYPE(QGroupBox)
|
|
||||||
QML_DECLARE_TYPE(QFrame)
|
|
||||||
QML_DECLARE_TYPE(QScrollArea)
|
|
||||||
QML_DECLARE_TYPE(QTabWidget)
|
|
||||||
QML_DECLARE_TYPE(FileWidget)
|
|
||||||
QML_DECLARE_TYPE(LayoutWidget)
|
|
||||||
|
|
||||||
|
|
||||||
class Action : public QAction {
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
Action(QObject *parent = 0) : QAction(parent) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
QML_DECLARE_TYPE(QMenu)
|
|
||||||
QML_DECLARE_TYPE(Action)
|
|
||||||
|
|
||||||
//QML_DECLARE_TYPE(QToolBox)
|
|
||||||
|
|
||||||
//itemviews
|
|
||||||
//QML_DECLARE_TYPE(QListView)
|
|
||||||
//QML_DECLARE_TYPE(QTreeView)
|
|
||||||
//QML_DECLARE_TYPE(QTableView)
|
|
||||||
|
|
||||||
//top-level windows?
|
|
||||||
class BasicWidgets {
|
|
||||||
public:
|
|
||||||
static void registerDeclarativeTypes();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // BASICWIDGETS_H
|
|
||||||
@@ -1,165 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "behaviordialog.h"
|
|
||||||
|
|
||||||
#include <abstractview.h>
|
|
||||||
#include <nodeproperty.h>
|
|
||||||
#include <variantproperty.h>
|
|
||||||
#include <bindingproperty.h>
|
|
||||||
|
|
||||||
|
|
||||||
namespace QmlDesigner {
|
|
||||||
|
|
||||||
void BehaviorDialog::registerDeclarativeType()
|
|
||||||
{
|
|
||||||
qmlRegisterType<QmlDesigner::BehaviorWidget>("Bauhaus",1,0,"BehaviorWidget");
|
|
||||||
}
|
|
||||||
|
|
||||||
BehaviorWidget::BehaviorWidget(QWidget *parent) : QPushButton(parent), m_BehaviorDialog(new BehaviorDialog)
|
|
||||||
{
|
|
||||||
setCheckable(true);
|
|
||||||
connect(this, SIGNAL(toggled(bool)), this, SLOT(buttonPressed(bool)));
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyEditorNodeWrapper* BehaviorWidget::complexNode() const
|
|
||||||
{
|
|
||||||
return m_complexNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BehaviorWidget::setComplexNode(PropertyEditorNodeWrapper* complexNode)
|
|
||||||
{
|
|
||||||
m_complexNode = complexNode;
|
|
||||||
m_propertyName = complexNode->propertyName();
|
|
||||||
m_modelNode = complexNode->parentModelNode();
|
|
||||||
|
|
||||||
if (!modelNode().isValid())
|
|
||||||
m_BehaviorDialog->hide();
|
|
||||||
|
|
||||||
m_BehaviorDialog->setup(modelNode(), propertyName());
|
|
||||||
}
|
|
||||||
|
|
||||||
void BehaviorWidget::buttonPressed(bool show)
|
|
||||||
{
|
|
||||||
if (show) {
|
|
||||||
if (m_BehaviorDialog->isVisible()) {
|
|
||||||
m_BehaviorDialog->reject();
|
|
||||||
} else {
|
|
||||||
m_BehaviorDialog->setup(modelNode(), propertyName());
|
|
||||||
m_BehaviorDialog->show();
|
|
||||||
setChecked(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BehaviorDialog::BehaviorDialog(QWidget *parent) : QDialog(parent), m_ui(new Internal::Ui::BehaviorDialog)
|
|
||||||
{
|
|
||||||
m_ui->setupUi(this);
|
|
||||||
setModal(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BehaviorDialog::setup(const ModelNode &node, const PropertyName propertyName)
|
|
||||||
{
|
|
||||||
m_modelNode = node;
|
|
||||||
m_ui->duration->setValue(100);
|
|
||||||
m_ui->velocity->setValue(2);
|
|
||||||
m_ui->spring->setValue(2);
|
|
||||||
m_ui->damping->setValue(2);
|
|
||||||
m_ui->stackedWidget->setCurrentIndex(0);
|
|
||||||
m_ui->curve->setCurrentIndex(0);
|
|
||||||
|
|
||||||
if (m_modelNode.isValid()) {
|
|
||||||
m_propertyName = propertyName;
|
|
||||||
m_ui->id->setText(m_modelNode.id());
|
|
||||||
m_ui->type->setText(m_modelNode.simplifiedTypeName());
|
|
||||||
m_ui->propertyName->setText(propertyName);
|
|
||||||
if (m_modelNode.hasProperty(m_propertyName) && m_modelNode.property(m_propertyName).isNodeProperty()) {
|
|
||||||
NodeProperty nodeProperty(m_modelNode.nodeProperty(m_propertyName));
|
|
||||||
if (nodeProperty.modelNode().type() == "Qt/SpringFollow") {
|
|
||||||
ModelNode springFollow = nodeProperty.modelNode();
|
|
||||||
m_ui->curve->setCurrentIndex(1);
|
|
||||||
m_ui->stackedWidget->setCurrentIndex(1);
|
|
||||||
if (springFollow.hasProperty("velocity") && springFollow.property("velocity").isVariantProperty())
|
|
||||||
m_ui->velocity->setValue(springFollow.variantProperty("velocity").value().toDouble());
|
|
||||||
if (springFollow.hasProperty("spring") && springFollow.property("spring").isVariantProperty())
|
|
||||||
m_ui->spring->setValue(springFollow.variantProperty("spring").value().toDouble());
|
|
||||||
if (springFollow.hasProperty("damping") && springFollow.property("damping").isVariantProperty())
|
|
||||||
m_ui->damping->setValue(springFollow.variantProperty("damping").value().toDouble());
|
|
||||||
if (springFollow.hasProperty("source") && springFollow.property("source").isVariantProperty())
|
|
||||||
m_ui->source->setText(springFollow.variantProperty("source").value().toString());
|
|
||||||
} else if (nodeProperty.modelNode().type() == "Qt/Behavior") {
|
|
||||||
if (nodeProperty.modelNode().hasProperty("animation") &&
|
|
||||||
nodeProperty.modelNode().property("animation").isNodeProperty() &&
|
|
||||||
nodeProperty.modelNode().nodeProperty("animation").modelNode().type() == "Qt/NumberAnimation") {
|
|
||||||
m_ui->curve->setCurrentIndex(0);
|
|
||||||
ModelNode animation = nodeProperty.modelNode().nodeProperty("animation").modelNode();
|
|
||||||
if (animation.hasProperty("duration") && animation.property("duration").isVariantProperty())
|
|
||||||
m_ui->duration->setValue(animation.variantProperty("duration").value().toInt());
|
|
||||||
if (animation.hasProperty("easing") && animation.property("easing").isVariantProperty()) {
|
|
||||||
QStringList easingItems;
|
|
||||||
for (int i = 0; i < m_ui->curve->count(); i++)
|
|
||||||
easingItems.append(m_ui->curve->itemText(i));
|
|
||||||
m_ui->curve->setCurrentIndex(easingItems.indexOf(animation.variantProperty("easing").value().toString()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void BehaviorDialog::accept()
|
|
||||||
{
|
|
||||||
QDialog::accept();
|
|
||||||
if (m_modelNode.hasProperty(m_propertyName))
|
|
||||||
m_modelNode.removeProperty(m_propertyName);
|
|
||||||
if (m_ui->comboBox->currentIndex() == 0) {
|
|
||||||
RewriterTransaction transaction(m_modelNode.view()->beginRewriterTransaction());
|
|
||||||
ModelNode Behavior = m_modelNode.view()->createModelNode("Qt/Behavior", 4, 7);
|
|
||||||
m_modelNode.nodeProperty(m_propertyName).reparentHere(Behavior);
|
|
||||||
ModelNode animation = m_modelNode.view()->createModelNode("Qt/NumberAnimation", 4, 7);
|
|
||||||
animation.variantProperty("duration").setValue(m_ui->duration->value());
|
|
||||||
animation.variantProperty("easing").setValue(m_ui->curve->currentText());
|
|
||||||
Behavior.nodeProperty("animation").reparentHere(animation);
|
|
||||||
} else {
|
|
||||||
RewriterTransaction transaction(m_modelNode.view()->beginRewriterTransaction());
|
|
||||||
ModelNode springFollow = m_modelNode.view()->createModelNode("Qt/SpringFollow", 4, 7);
|
|
||||||
m_modelNode.nodeProperty(m_propertyName).reparentHere(springFollow);
|
|
||||||
springFollow.variantProperty("velocity").setValue(m_ui->velocity->value());
|
|
||||||
springFollow.variantProperty("spring").setValue(m_ui->spring->value());
|
|
||||||
springFollow.variantProperty("damping").setValue(m_ui->damping->value());
|
|
||||||
springFollow.bindingProperty("source").setExpression(m_ui->source->text());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void BehaviorDialog::reject()
|
|
||||||
{
|
|
||||||
QDialog::reject();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef BEHAVIORDIALOG_H
|
|
||||||
#define BEHAVIORDIALOG_H
|
|
||||||
|
|
||||||
#include <modelnode.h>
|
|
||||||
#include <propertyeditorvalue.h>
|
|
||||||
|
|
||||||
#include <QPushButton>
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QScopedPointer>
|
|
||||||
|
|
||||||
#include "ui_behaviordialog.h"
|
|
||||||
|
|
||||||
namespace QmlDesigner {
|
|
||||||
|
|
||||||
class BehaviorDialog;
|
|
||||||
|
|
||||||
class BehaviorWidget : public QPushButton
|
|
||||||
{
|
|
||||||
Q_PROPERTY(PropertyEditorNodeWrapper* complexNode READ complexNode WRITE setComplexNode)
|
|
||||||
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit BehaviorWidget(QWidget *parent = 0);
|
|
||||||
|
|
||||||
ModelNode modelNode() const {return m_modelNode; }
|
|
||||||
PropertyName propertyName() const {return m_propertyName; }
|
|
||||||
|
|
||||||
PropertyEditorNodeWrapper* complexNode() const;
|
|
||||||
void setComplexNode(PropertyEditorNodeWrapper* complexNode);
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void buttonPressed(bool);
|
|
||||||
|
|
||||||
private:
|
|
||||||
ModelNode m_modelNode;
|
|
||||||
PropertyName m_propertyName;
|
|
||||||
PropertyEditorNodeWrapper* m_complexNode;
|
|
||||||
QScopedPointer<BehaviorDialog> m_BehaviorDialog;
|
|
||||||
};
|
|
||||||
|
|
||||||
class BehaviorDialog : public QDialog
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
explicit BehaviorDialog(QWidget *parent = 0);
|
|
||||||
void setup(const ModelNode &node, const PropertyName propertyName);
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
virtual void accept();
|
|
||||||
virtual void reject();
|
|
||||||
|
|
||||||
static void registerDeclarativeType();
|
|
||||||
|
|
||||||
private:
|
|
||||||
ModelNode m_modelNode;
|
|
||||||
PropertyName m_propertyName;
|
|
||||||
QScopedPointer<Internal::Ui::BehaviorDialog> m_ui;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
QML_DECLARE_TYPE(QmlDesigner::BehaviorWidget)
|
|
||||||
|
|
||||||
#endif// BEHAVIORDIALOG_H
|
|
||||||
@@ -1,472 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>QmlDesigner::Internal::BehaviorDialog</class>
|
|
||||||
<widget class="QDialog" name="QmlDesigner::Internal::BehaviorDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>269</width>
|
|
||||||
<height>354</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Dialog</string>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">QDialog {
|
|
||||||
qlineargradient(spread:pad, x1:0.585, y1:0.0284091, x2:0.517, y2:1, stop:0 rgba(85, 85, 85, 255), stop:1 rgba(173, 173, 173, 255))
|
|
||||||
}
|
|
||||||
|
|
||||||
</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Type:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QLineEdit" name="type">
|
|
||||||
<property name="readOnly">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_3">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>ID:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QLineEdit" name="id">
|
|
||||||
<property name="readOnly">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label_5">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Property name:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QLineEdit" name="propertyName">
|
|
||||||
<property name="readOnly">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0" colspan="2">
|
|
||||||
<widget class="QComboBox" name="comboBox">
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>Animation</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>SpringFollow</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0" colspan="2">
|
|
||||||
<widget class="QGroupBox" name="groupBox">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>0</width>
|
|
||||||
<height>120</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="title">
|
|
||||||
<string>Settings</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_4">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QStackedWidget" name="stackedWidget">
|
|
||||||
<property name="currentIndex">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<widget class="QWidget" name="page">
|
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label_7">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Duration:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QSpinBox" name="duration">
|
|
||||||
<property name="maximum">
|
|
||||||
<number>10000</number>
|
|
||||||
</property>
|
|
||||||
<property name="singleStep">
|
|
||||||
<number>10</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_8">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Curve:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QComboBox" name="curve">
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>easeNone</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInQuad</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutQuad</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInOutQuad</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutInQuad</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInCubic</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutCubic</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInOutCubic</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutInCubic</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutInBounce</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInOutBounce</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutBounce</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInBounce</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutInBack</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInOutBack</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutBack</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInBack</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutInElastic</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInOutElastic</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutElastic</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInElastic</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutInCirc</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInOutCirc</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutCirc</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInCirc</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutInExpo</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInOutExpo</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutExpo</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInExpo</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutInSine</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInOutSine</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeOutSine</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">easeInSine</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="page_2">
|
|
||||||
<layout class="QGridLayout" name="gridLayout_3">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Source:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QLineEdit" name="source"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_9">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Velocity:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QDoubleSpinBox" name="velocity"/>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label_10">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Spring:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QDoubleSpinBox" name="spring"/>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QLabel" name="label_11">
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Damping:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1">
|
|
||||||
<widget class="QDoubleSpinBox" name="damping"/>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="0" colspan="2">
|
|
||||||
<widget class="QDialogButtonBox" name="ButtonGroup">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>ButtonGroup</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>QmlDesigner::Internal::BehaviorDialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>248</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>ButtonGroup</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>QmlDesigner::Internal::BehaviorDialog</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>316</x>
|
|
||||||
<y>260</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>286</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>comboBox</sender>
|
|
||||||
<signal>currentIndexChanged(int)</signal>
|
|
||||||
<receiver>stackedWidget</receiver>
|
|
||||||
<slot>setCurrentIndex(int)</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>52</x>
|
|
||||||
<y>106</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>121</x>
|
|
||||||
<y>191</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
|
||||||
@@ -30,13 +30,13 @@
|
|||||||
#ifndef DESIGNERPROPERTYMAP_H
|
#ifndef DESIGNERPROPERTYMAP_H
|
||||||
#define DESIGNERPROPERTYMAP_H
|
#define DESIGNERPROPERTYMAP_H
|
||||||
|
|
||||||
#include <QDeclarativePropertyMap>
|
#include <QQmlPropertyMap>
|
||||||
#include <qdeclarative.h>
|
#include <QtQml>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
template <class DefaultType>
|
template <class DefaultType>
|
||||||
class DesignerPropertyMap : public QDeclarativePropertyMap
|
class DesignerPropertyMap : public QQmlPropertyMap
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -50,7 +50,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <class DefaultType>
|
template <class DefaultType>
|
||||||
DesignerPropertyMap<DefaultType>::DesignerPropertyMap(QObject *parent) : QDeclarativePropertyMap(parent), m_defaultValue(this)
|
DesignerPropertyMap<DefaultType>::DesignerPropertyMap(QObject *parent) : QQmlPropertyMap(parent), m_defaultValue(this)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ template <class DefaultType>
|
|||||||
QVariant DesignerPropertyMap<DefaultType>::value(const QString &key) const
|
QVariant DesignerPropertyMap<DefaultType>::value(const QString &key) const
|
||||||
{
|
{
|
||||||
if (contains(key))
|
if (contains(key))
|
||||||
return QDeclarativePropertyMap::value(key);
|
return QQmlPropertyMap::value(key);
|
||||||
return QVariant(&m_defaultValue);
|
return QVariant(&m_defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,106 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "layoutwidget.h"
|
|
||||||
#include <QGridLayout>
|
|
||||||
#include <QFile>
|
|
||||||
#include <QDebug>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
|
|
||||||
LayoutWidget::LayoutWidget(QWidget *parent) : QFrame(parent)
|
|
||||||
{
|
|
||||||
QSizePolicy policy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
|
||||||
|
|
||||||
QGridLayout *grid = new QGridLayout(this);
|
|
||||||
setLayout(grid);
|
|
||||||
grid->setContentsMargins(0,0,0,0);
|
|
||||||
grid->setSpacing(4);
|
|
||||||
|
|
||||||
m_topButton = new QPushButton(this);
|
|
||||||
m_topButton->setCheckable(true);
|
|
||||||
m_topButton->setSizePolicy(policy);
|
|
||||||
|
|
||||||
grid->addWidget(m_topButton, 0, 2, 2, 1, Qt::AlignHCenter);
|
|
||||||
|
|
||||||
m_bottomButton = new QPushButton(this);
|
|
||||||
m_bottomButton->setCheckable(true);
|
|
||||||
|
|
||||||
m_bottomButton->setSizePolicy(policy);
|
|
||||||
|
|
||||||
grid->addWidget(m_bottomButton, 3, 2, 2, 1, Qt::AlignHCenter);
|
|
||||||
|
|
||||||
m_leftButton = new QPushButton(this);
|
|
||||||
m_leftButton->setCheckable(true);
|
|
||||||
m_leftButton->setSizePolicy(policy);
|
|
||||||
|
|
||||||
|
|
||||||
grid->addWidget(m_leftButton, 2, 0, 1, 2, Qt::AlignVCenter);
|
|
||||||
|
|
||||||
m_rightButton = new QPushButton(this);
|
|
||||||
m_rightButton->setCheckable(true);
|
|
||||||
m_rightButton->setSizePolicy(policy);
|
|
||||||
|
|
||||||
grid->addWidget(m_rightButton, 2, 3, 1, 2, Qt::AlignVCenter);
|
|
||||||
|
|
||||||
|
|
||||||
m_middleButton = new QPushButton(this);
|
|
||||||
|
|
||||||
grid->addWidget(m_middleButton, 2, 2, 1, 1, Qt::AlignCenter);
|
|
||||||
|
|
||||||
connect(m_topButton, SIGNAL(toggled(bool)), this, SLOT(setTopAnchor(bool)));
|
|
||||||
connect(m_bottomButton, SIGNAL(toggled(bool)), this, SLOT(setBottomAnchor(bool)));
|
|
||||||
connect(m_leftButton, SIGNAL(toggled(bool)), this, SLOT(setLeftAnchor(bool)));
|
|
||||||
connect(m_rightButton, SIGNAL(toggled(bool)), this, SLOT(setRightAnchor(bool)));
|
|
||||||
|
|
||||||
connect(m_middleButton, SIGNAL(pressed()), this, SIGNAL(fill()));
|
|
||||||
}
|
|
||||||
|
|
||||||
LayoutWidget::~LayoutWidget()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void LayoutWidget::setIcon(QPushButton *button, QUrl url)
|
|
||||||
{
|
|
||||||
if (url.scheme() == QLatin1String("file")) {
|
|
||||||
QFile file(url.toLocalFile());
|
|
||||||
if (file.open(QIODevice::ReadOnly)) {
|
|
||||||
QPixmap pixmap(url.toLocalFile());
|
|
||||||
button->setIcon(pixmap);
|
|
||||||
} else {
|
|
||||||
qWarning() << QString::fromUtf8("setIconFromFile: %1: %2").arg(
|
|
||||||
file.fileName(), file.errorString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LAYOUTWIDGET_H
|
|
||||||
#define LAYOUTWIDGET_H
|
|
||||||
|
|
||||||
#include <QFrame>
|
|
||||||
#include <QPushButton>
|
|
||||||
#include <QUrl>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
class LayoutWidget : public QFrame
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
Q_PROPERTY(bool leftAnchor READ leftAnchor WRITE setLeftAnchor NOTIFY leftAnchorChanged)
|
|
||||||
Q_PROPERTY(bool rightAnchor READ rightAnchor WRITE setRightAnchor NOTIFY rightAnchorChanged)
|
|
||||||
Q_PROPERTY(bool bottomAnchor READ bottomAnchor WRITE setBottomAnchor NOTIFY bottomAnchorChanged)
|
|
||||||
Q_PROPERTY(bool topAnchor READ topAnchor WRITE setTopAnchor NOTIFY topAnchorChanged)
|
|
||||||
|
|
||||||
Q_PROPERTY(QUrl leftButtonIcon READ icon WRITE setLeftButtonIcon)
|
|
||||||
Q_PROPERTY(QUrl rightButtonIcon READ icon WRITE setRightButtonIcon)
|
|
||||||
Q_PROPERTY(QUrl topButtonIcon READ icon WRITE setTopButtonIcon)
|
|
||||||
Q_PROPERTY(QUrl bottomButtonIcon READ icon WRITE setBottomButtonIcon)
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
void setLeftButtonIcon(const QUrl &url)
|
|
||||||
{ setIcon(m_leftButton, url); }
|
|
||||||
|
|
||||||
void setRightButtonIcon(const QUrl &url)
|
|
||||||
{ setIcon(m_rightButton, url); }
|
|
||||||
|
|
||||||
void setTopButtonIcon(const QUrl &url)
|
|
||||||
{ setIcon(m_topButton, url); }
|
|
||||||
|
|
||||||
void setBottomButtonIcon(const QUrl &url)
|
|
||||||
{ setIcon(m_bottomButton, url); }
|
|
||||||
|
|
||||||
QUrl icon() const {return QUrl(); }
|
|
||||||
|
|
||||||
LayoutWidget(QWidget *parent = 0);
|
|
||||||
~LayoutWidget();
|
|
||||||
|
|
||||||
bool leftAnchor() const { return m_leftAnchor; }
|
|
||||||
bool rightAnchor() const { return m_rightAnchor; }
|
|
||||||
bool topAnchor() const { return m_topAnchor; }
|
|
||||||
bool bottomAnchor() const { return m_bottomAnchor; }
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void setLeftAnchor(bool anchor)
|
|
||||||
{
|
|
||||||
if (anchor == m_leftAnchor)
|
|
||||||
return;
|
|
||||||
m_leftAnchor = anchor;
|
|
||||||
m_leftButton->setChecked(anchor);
|
|
||||||
emit leftAnchorChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
void setRightAnchor(bool anchor)
|
|
||||||
{
|
|
||||||
if (anchor == m_rightAnchor)
|
|
||||||
return;
|
|
||||||
m_rightAnchor = anchor;
|
|
||||||
m_rightButton->setChecked(anchor);
|
|
||||||
emit rightAnchorChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
void setTopAnchor(bool anchor)
|
|
||||||
{
|
|
||||||
if (anchor == m_topAnchor)
|
|
||||||
return;
|
|
||||||
m_topAnchor = anchor;
|
|
||||||
m_topButton->setChecked(anchor);
|
|
||||||
emit topAnchorChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
void setBottomAnchor(bool anchor)
|
|
||||||
{
|
|
||||||
if (anchor == m_bottomAnchor)
|
|
||||||
return;
|
|
||||||
m_bottomAnchor = anchor;
|
|
||||||
m_bottomButton->setChecked(anchor);
|
|
||||||
emit bottomAnchorChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
signals:
|
|
||||||
//void colorChanged(const QColor &color);
|
|
||||||
void fill();
|
|
||||||
void topAnchorChanged();
|
|
||||||
void bottomAnchorChanged();
|
|
||||||
void leftAnchorChanged();
|
|
||||||
void rightAnchorChanged();
|
|
||||||
|
|
||||||
private:
|
|
||||||
void setIcon(QPushButton *button, QUrl url);
|
|
||||||
bool m_leftAnchor, m_rightAnchor, m_topAnchor, m_bottomAnchor;
|
|
||||||
QPushButton *m_leftButton;
|
|
||||||
QPushButton *m_rightButton;
|
|
||||||
QPushButton *m_topButton;
|
|
||||||
QPushButton *m_bottomButton;
|
|
||||||
QPushButton *m_middleButton;
|
|
||||||
};
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -2,12 +2,6 @@ VPATH += $$PWD
|
|||||||
|
|
||||||
SOURCES += propertyeditorview.cpp \
|
SOURCES += propertyeditorview.cpp \
|
||||||
qmlanchorbindingproxy.cpp \
|
qmlanchorbindingproxy.cpp \
|
||||||
resetwidget.cpp \
|
|
||||||
qlayoutobject.cpp \
|
|
||||||
basiclayouts.cpp \
|
|
||||||
basicwidgets.cpp \
|
|
||||||
behaviordialog.cpp \
|
|
||||||
layoutwidget.cpp \
|
|
||||||
filewidget.cpp \
|
filewidget.cpp \
|
||||||
propertyeditorvalue.cpp \
|
propertyeditorvalue.cpp \
|
||||||
fontwidget.cpp \
|
fontwidget.cpp \
|
||||||
@@ -15,19 +9,13 @@ SOURCES += propertyeditorview.cpp \
|
|||||||
siblingcombobox.cpp \
|
siblingcombobox.cpp \
|
||||||
propertyeditortransaction.cpp \
|
propertyeditortransaction.cpp \
|
||||||
propertyeditorcontextobject.cpp \
|
propertyeditorcontextobject.cpp \
|
||||||
quickpropertyeditorview.cpp \
|
quick2propertyeditorview.cpp \
|
||||||
gradientlineqmladaptor.cpp \
|
gradientlineqmladaptor.cpp \
|
||||||
propertyeditorqmlbackend.cpp \
|
propertyeditorqmlbackend.cpp \
|
||||||
propertyeditorwidget.cpp
|
propertyeditorwidget.cpp
|
||||||
|
|
||||||
HEADERS += propertyeditorview.h \
|
HEADERS += propertyeditorview.h \
|
||||||
qmlanchorbindingproxy.h \
|
qmlanchorbindingproxy.h \
|
||||||
resetwidget.h \
|
|
||||||
qlayoutobject.h \
|
|
||||||
basiclayouts.h \
|
|
||||||
basicwidgets.h \
|
|
||||||
behaviordialog.h \
|
|
||||||
layoutwidget.h \
|
|
||||||
filewidget.h \
|
filewidget.h \
|
||||||
propertyeditorvalue.h \
|
propertyeditorvalue.h \
|
||||||
fontwidget.h \
|
fontwidget.h \
|
||||||
@@ -36,12 +24,11 @@ HEADERS += propertyeditorview.h \
|
|||||||
propertyeditortransaction.h \
|
propertyeditortransaction.h \
|
||||||
designerpropertymap.h \
|
designerpropertymap.h \
|
||||||
propertyeditorcontextobject.h \
|
propertyeditorcontextobject.h \
|
||||||
quickpropertyeditorview.h \
|
quick2propertyeditorview.h \
|
||||||
gradientlineqmladaptor.h \
|
gradientlineqmladaptor.h \
|
||||||
propertyeditorqmlbackend.h \
|
propertyeditorqmlbackend.h \
|
||||||
propertyeditorwidget.h
|
propertyeditorwidget.h
|
||||||
|
|
||||||
QT += declarative
|
QT += qml quick
|
||||||
|
|
||||||
RESOURCES += propertyeditor.qrc
|
RESOURCES += propertyeditor.qrc
|
||||||
FORMS += behaviordialog.ui
|
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ PropertyEditorContextObject::PropertyEditorContextObject(QObject *parent) :
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int PropertyEditorContextObject::majorVersion() const
|
int PropertyEditorContextObject::majorVersion() const
|
||||||
{
|
{
|
||||||
return m_majorVersion;
|
return m_majorVersion;
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QDeclarativePropertyMap>
|
#include <QQmlPropertyMap>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
@@ -53,7 +53,7 @@ class PropertyEditorContextObject : public QObject
|
|||||||
Q_PROPERTY(int majorVersion READ majorVersion WRITE setMajorVersion NOTIFY majorVersionChanged)
|
Q_PROPERTY(int majorVersion READ majorVersion WRITE setMajorVersion NOTIFY majorVersionChanged)
|
||||||
Q_PROPERTY(int minorVersion READ minorVersion WRITE setMinorVersion NOTIFY minorVersionChanged)
|
Q_PROPERTY(int minorVersion READ minorVersion WRITE setMinorVersion NOTIFY minorVersionChanged)
|
||||||
|
|
||||||
Q_PROPERTY(QDeclarativePropertyMap* backendValues READ backendValues WRITE setBackendValues NOTIFY backendValuesChanged)
|
Q_PROPERTY(QQmlPropertyMap* backendValues READ backendValues WRITE setBackendValues NOTIFY backendValuesChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PropertyEditorContextObject(QObject *parent = 0);
|
PropertyEditorContextObject(QObject *parent = 0);
|
||||||
@@ -66,7 +66,7 @@ public:
|
|||||||
bool isBaseState() const { return m_isBaseState; }
|
bool isBaseState() const { return m_isBaseState; }
|
||||||
bool selectionChanged() const { return m_selectionChanged; }
|
bool selectionChanged() const { return m_selectionChanged; }
|
||||||
|
|
||||||
QDeclarativePropertyMap* backendValues() const { return m_backendValues; }
|
QQmlPropertyMap* backendValues() const { return m_backendValues; }
|
||||||
|
|
||||||
Q_INVOKABLE QString convertColorToString(const QColor &color) { return color.name(); }
|
Q_INVOKABLE QString convertColorToString(const QColor &color) { return color.name(); }
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ public slots:
|
|||||||
emit selectionChangedChanged();
|
emit selectionChangedChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setBackendValues(QDeclarativePropertyMap* newBackendValues)
|
void setBackendValues(QQmlPropertyMap* newBackendValues)
|
||||||
{
|
{
|
||||||
if (newBackendValues == m_backendValues)
|
if (newBackendValues == m_backendValues)
|
||||||
return;
|
return;
|
||||||
@@ -165,7 +165,7 @@ private:
|
|||||||
bool m_isBaseState;
|
bool m_isBaseState;
|
||||||
bool m_selectionChanged;
|
bool m_selectionChanged;
|
||||||
|
|
||||||
QDeclarativePropertyMap* m_backendValues;
|
QQmlPropertyMap* m_backendValues;
|
||||||
|
|
||||||
int m_majorVersion;
|
int m_majorVersion;
|
||||||
int m_minorVersion;
|
int m_minorVersion;
|
||||||
|
|||||||
@@ -52,7 +52,8 @@ enum {
|
|||||||
debug = false
|
debug = false
|
||||||
};
|
};
|
||||||
|
|
||||||
const char resourcePropertyEditorPath[] = ":/propertyeditor";
|
const char propertyEditorPath[] = "/propertyEditorQmlSources";
|
||||||
|
const char resourcePropertyEditorPath[] = ":/propertyEditorQmlSources";
|
||||||
|
|
||||||
static QmlJS::SimpleReaderNode::Ptr s_templateConfiguration = QmlJS::SimpleReaderNode::Ptr();
|
static QmlJS::SimpleReaderNode::Ptr s_templateConfiguration = QmlJS::SimpleReaderNode::Ptr();
|
||||||
|
|
||||||
@@ -118,7 +119,7 @@ static inline QString sharedDirPath()
|
|||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
PropertyEditorQmlBackend::PropertyEditorQmlBackend(PropertyEditorView *propertyEditor) :
|
PropertyEditorQmlBackend::PropertyEditorQmlBackend(PropertyEditorView *propertyEditor) :
|
||||||
m_view(new QuickPropertyEditorView), m_propertyEditorTransaction(new PropertyEditorTransaction(propertyEditor)), m_dummyPropertyEditorValue(new PropertyEditorValue()),
|
m_view(new Quick2PropertyEditorView), m_propertyEditorTransaction(new PropertyEditorTransaction(propertyEditor)), m_dummyPropertyEditorValue(new PropertyEditorValue()),
|
||||||
m_contextObject(new PropertyEditorContextObject())
|
m_contextObject(new PropertyEditorContextObject())
|
||||||
{
|
{
|
||||||
Q_ASSERT(QFileInfo(":/images/button_normal.png").exists());
|
Q_ASSERT(QFileInfo(":/images/button_normal.png").exists());
|
||||||
@@ -203,7 +204,7 @@ void PropertyEditorQmlBackend::setValue(const QmlObjectNode & qmlObjectNode, con
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QDeclarativeContext *PropertyEditorQmlBackend::context() {
|
QQmlContext *PropertyEditorQmlBackend::context() {
|
||||||
return m_view->rootContext();
|
return m_view->rootContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,7 +339,7 @@ void PropertyEditorQmlBackend::initialSetup(const TypeName &typeName, const QUrl
|
|||||||
}
|
}
|
||||||
|
|
||||||
QString PropertyEditorQmlBackend::propertyEditorResourcesPath() {
|
QString PropertyEditorQmlBackend::propertyEditorResourcesPath() {
|
||||||
return sharedDirPath() + QLatin1String("/propertyeditor");
|
return sharedDirPath() + QLatin1String(propertyEditorPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString PropertyEditorQmlBackend::templateGeneration(NodeMetaInfo type,
|
QString PropertyEditorQmlBackend::templateGeneration(NodeMetaInfo type,
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
#include "designerpropertymap.h"
|
#include "designerpropertymap.h"
|
||||||
#include "propertyeditorvalue.h"
|
#include "propertyeditorvalue.h"
|
||||||
#include "propertyeditorcontextobject.h"
|
#include "propertyeditorcontextobject.h"
|
||||||
#include "quickpropertyeditorview.h"
|
#include "quick2propertyeditorview.h"
|
||||||
|
|
||||||
#include <nodemetainfo.h>
|
#include <nodemetainfo.h>
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ public:
|
|||||||
void initialSetup(const TypeName &typeName, const QUrl &qmlSpecificsFile, PropertyEditorView *propertyEditor);
|
void initialSetup(const TypeName &typeName, const QUrl &qmlSpecificsFile, PropertyEditorView *propertyEditor);
|
||||||
void setValue(const QmlObjectNode &fxObjectNode, const PropertyName &name, const QVariant &value);
|
void setValue(const QmlObjectNode &fxObjectNode, const PropertyName &name, const QVariant &value);
|
||||||
|
|
||||||
QDeclarativeContext *context();
|
QQmlContext *context();
|
||||||
PropertyEditorContextObject* contextObject();
|
PropertyEditorContextObject* contextObject();
|
||||||
QWidget *widget();
|
QWidget *widget();
|
||||||
void setSource(const QUrl& url);
|
void setSource(const QUrl& url);
|
||||||
@@ -86,7 +86,7 @@ private:
|
|||||||
static QString fixTypeNameForPanes(const QString &typeName);
|
static QString fixTypeNameForPanes(const QString &typeName);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QuickPropertyEditorView *m_view;
|
Quick2PropertyEditorView *m_view;
|
||||||
Internal::QmlAnchorBindingProxy m_backendAnchorBinding;
|
Internal::QmlAnchorBindingProxy m_backendAnchorBinding;
|
||||||
DesignerPropertyMap<PropertyEditorValue> m_backendValuesPropertyMap;
|
DesignerPropertyMap<PropertyEditorValue> m_backendValuesPropertyMap;
|
||||||
QScopedPointer<PropertyEditorTransaction> m_propertyEditorTransaction;
|
QScopedPointer<PropertyEditorTransaction> m_propertyEditorTransaction;
|
||||||
|
|||||||
@@ -266,7 +266,7 @@ void PropertyEditorValue::registerDeclarativeTypes()
|
|||||||
{
|
{
|
||||||
qmlRegisterType<PropertyEditorValue>("Bauhaus",1,0,"PropertyEditorValue");
|
qmlRegisterType<PropertyEditorValue>("Bauhaus",1,0,"PropertyEditorValue");
|
||||||
qmlRegisterType<PropertyEditorNodeWrapper>("Bauhaus",1,0,"PropertyEditorNodeWrapper");
|
qmlRegisterType<PropertyEditorNodeWrapper>("Bauhaus",1,0,"PropertyEditorNodeWrapper");
|
||||||
qmlRegisterType<QDeclarativePropertyMap>("Bauhaus",1,0,"QDeclarativePropertyMap");
|
qmlRegisterType<QQmlPropertyMap>("Bauhaus",1,0,"QQmlPropertyMap");
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyEditorNodeWrapper::PropertyEditorNodeWrapper(PropertyEditorValue* parent) : QObject(parent), m_valuesPropertyMap(this)
|
PropertyEditorNodeWrapper::PropertyEditorNodeWrapper(PropertyEditorValue* parent) : QObject(parent), m_valuesPropertyMap(this)
|
||||||
@@ -306,7 +306,7 @@ QmlDesigner::PropertyName PropertyEditorNodeWrapper::propertyName() const
|
|||||||
return m_editorValue->name();
|
return m_editorValue->name();
|
||||||
}
|
}
|
||||||
|
|
||||||
QDeclarativePropertyMap* PropertyEditorNodeWrapper::properties()
|
QQmlPropertyMap *PropertyEditorNodeWrapper::properties()
|
||||||
{
|
{
|
||||||
return &m_valuesPropertyMap;
|
return &m_valuesPropertyMap;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,8 @@
|
|||||||
#include <qmldesignercorelib_global.h>
|
#include <qmldesignercorelib_global.h>
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QDeclarativePropertyMap>
|
#include <QQmlPropertyMap>
|
||||||
#include <qdeclarative.h>
|
#include <QtQml>
|
||||||
#include <modelnode.h>
|
#include <modelnode.h>
|
||||||
|
|
||||||
class PropertyEditorValue;
|
class PropertyEditorValue;
|
||||||
@@ -43,7 +43,7 @@ class PropertyEditorNodeWrapper : public QObject {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
Q_PROPERTY(bool exists READ exists NOTIFY existsChanged)
|
Q_PROPERTY(bool exists READ exists NOTIFY existsChanged)
|
||||||
Q_PROPERTY(QDeclarativePropertyMap* properties READ properties NOTIFY propertiesChanged)
|
Q_PROPERTY(QQmlPropertyMap* properties READ properties NOTIFY propertiesChanged)
|
||||||
Q_PROPERTY(QString type READ type NOTIFY typeChanged)
|
Q_PROPERTY(QString type READ type NOTIFY typeChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -51,7 +51,7 @@ public:
|
|||||||
PropertyEditorNodeWrapper(PropertyEditorValue* parent);
|
PropertyEditorNodeWrapper(PropertyEditorValue* parent);
|
||||||
bool exists();
|
bool exists();
|
||||||
QString type();
|
QString type();
|
||||||
QDeclarativePropertyMap* properties();
|
QQmlPropertyMap* properties();
|
||||||
QmlDesigner::ModelNode parentModelNode() const;
|
QmlDesigner::ModelNode parentModelNode() const;
|
||||||
QmlDesigner::PropertyName propertyName() const;
|
QmlDesigner::PropertyName propertyName() const;
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ private:
|
|||||||
void setup();
|
void setup();
|
||||||
|
|
||||||
QmlDesigner::ModelNode m_modelNode;
|
QmlDesigner::ModelNode m_modelNode;
|
||||||
QDeclarativePropertyMap m_valuesPropertyMap;
|
QQmlPropertyMap m_valuesPropertyMap;
|
||||||
PropertyEditorValue* m_editorValue;
|
PropertyEditorValue* m_editorValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -152,7 +152,7 @@ private: //variables
|
|||||||
|
|
||||||
QML_DECLARE_TYPE(PropertyEditorValue)
|
QML_DECLARE_TYPE(PropertyEditorValue)
|
||||||
QML_DECLARE_TYPE(PropertyEditorNodeWrapper)
|
QML_DECLARE_TYPE(PropertyEditorNodeWrapper)
|
||||||
QML_DECLARE_TYPE(QDeclarativePropertyMap)
|
QML_DECLARE_TYPE(QQmlPropertyMap)
|
||||||
|
|
||||||
|
|
||||||
#endif // PROPERTYEDITORVALUE_H
|
#endif // PROPERTYEDITORVALUE_H
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ PropertyEditorView::PropertyEditorView(QWidget *parent) :
|
|||||||
|
|
||||||
m_stackedWidget->insertWidget(0, new QWidget(m_stackedWidget));
|
m_stackedWidget->insertWidget(0, new QWidget(m_stackedWidget));
|
||||||
|
|
||||||
QuickPropertyEditorView::registerQmlTypes();
|
Quick2PropertyEditorView::registerQmlTypes();
|
||||||
setQmlDir(PropertyEditorQmlBackend::propertyEditorResourcesPath());
|
setQmlDir(PropertyEditorQmlBackend::propertyEditorResourcesPath());
|
||||||
m_stackedWidget->setWindowTitle(tr("Properties"));
|
m_stackedWidget->setWindowTitle(tr("Properties"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,112 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** 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 Digia. For licensing terms and
|
||||||
|
** conditions see http://qt.digia.com/licensing. For further information
|
||||||
|
** use the contact form at http://qt.digia.com/contact-us.
|
||||||
|
**
|
||||||
|
** GNU Lesser General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
** General Public License version 2.1 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||||
|
** packaging of this file. Please review the following information to
|
||||||
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||||
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||||
|
**
|
||||||
|
** In addition, as a special exception, Digia gives you certain additional
|
||||||
|
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||||
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "quick2propertyeditorview.h"
|
||||||
|
|
||||||
|
#include "propertyeditorvalue.h"
|
||||||
|
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
void Quick2PropertyEditorView::execute()
|
||||||
|
{
|
||||||
|
m_view.setSource(m_source);
|
||||||
|
|
||||||
|
if (!m_source.isEmpty()) {
|
||||||
|
m_view.setSource(m_source);
|
||||||
|
connect(&m_view, SIGNAL(statusChanged(QQuickView::Status)), this, SLOT(continueExecute()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Quick2PropertyEditorView::Quick2PropertyEditorView(QWidget *parent) :
|
||||||
|
QWidget(parent)
|
||||||
|
{
|
||||||
|
m_containerWidget = createWindowContainer(&m_view);
|
||||||
|
|
||||||
|
QVBoxLayout *layout = new QVBoxLayout(this);
|
||||||
|
setLayout(layout);
|
||||||
|
layout->addWidget(m_containerWidget);
|
||||||
|
layout->setMargin(0);
|
||||||
|
m_view.setResizeMode(QQuickView::SizeRootObjectToView);
|
||||||
|
}
|
||||||
|
|
||||||
|
QUrl Quick2PropertyEditorView::source() const
|
||||||
|
{
|
||||||
|
return m_source;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Quick2PropertyEditorView::setSource(const QUrl& url)
|
||||||
|
{
|
||||||
|
m_source = url;
|
||||||
|
execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
QQmlEngine* Quick2PropertyEditorView::engine()
|
||||||
|
{
|
||||||
|
return m_view.engine();
|
||||||
|
}
|
||||||
|
|
||||||
|
QQmlContext* Quick2PropertyEditorView::rootContext()
|
||||||
|
{
|
||||||
|
return engine()->rootContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
Quick2PropertyEditorView::Status Quick2PropertyEditorView::status() const
|
||||||
|
{
|
||||||
|
return Quick2PropertyEditorView::Status(m_view.status());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Quick2PropertyEditorView::continueExecute()
|
||||||
|
{
|
||||||
|
disconnect(&m_view, SIGNAL(statusChanged(QQuickView::Status)), this, SLOT(continueExecute()));
|
||||||
|
|
||||||
|
if (!m_view.errors().isEmpty()) {
|
||||||
|
QList<QQmlError> errorList = m_view.errors();
|
||||||
|
foreach (const QQmlError &error, errorList) {
|
||||||
|
qWarning() << error;
|
||||||
|
}
|
||||||
|
emit statusChanged(status());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit statusChanged(status());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Quick2PropertyEditorView::registerQmlTypes()
|
||||||
|
{
|
||||||
|
static bool declarativeTypesRegistered = false;
|
||||||
|
if (!declarativeTypesRegistered) {
|
||||||
|
declarativeTypesRegistered = true;
|
||||||
|
PropertyEditorValue::registerDeclarativeTypes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} //QmlDesigner
|
||||||
@@ -27,37 +27,35 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef QUICKPROERTYEDITORVIEW_H
|
#ifndef QUICK2PROERTYEDITORVIEW_H
|
||||||
#define QUICKPROERTYEDITORVIEW_H
|
#define QUICK2PROERTYEDITORVIEW_H
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QDeclarativeEngine>
|
#include <QQuickView>
|
||||||
#include <QDeclarativeContext>
|
#include <QQmlEngine>
|
||||||
|
#include <QQmlContext>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QDeclarativeContext;
|
class QQmlError;
|
||||||
class QDeclarativeError;
|
class QQmlComponent;
|
||||||
class QDeclarativeComponent;
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
class QuickPropertyEditorView : public QWidget
|
class Quick2PropertyEditorView : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
Q_PROPERTY(QUrl source READ source WRITE setSource DESIGNABLE true)
|
Q_PROPERTY(QUrl source READ source WRITE setSource DESIGNABLE true)
|
||||||
public:
|
public:
|
||||||
explicit QuickPropertyEditorView(QWidget *parent = 0);
|
explicit Quick2PropertyEditorView(QWidget *parent = 0);
|
||||||
|
|
||||||
QUrl source() const;
|
QUrl source() const;
|
||||||
void setSource(const QUrl&);
|
void setSource(const QUrl&);
|
||||||
|
|
||||||
QDeclarativeEngine* engine();
|
QQmlEngine* engine();
|
||||||
QDeclarativeContext* rootContext();
|
QQmlContext* rootContext();
|
||||||
|
|
||||||
QWidget *rootWidget() const;
|
|
||||||
|
|
||||||
enum Status { Null, Ready, Loading, Error };
|
enum Status { Null, Ready, Loading, Error };
|
||||||
Status status() const;
|
Status status() const;
|
||||||
@@ -65,23 +63,22 @@ public:
|
|||||||
static void registerQmlTypes();
|
static void registerQmlTypes();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void statusChanged(QuickPropertyEditorView::Status);
|
void statusChanged(Quick2PropertyEditorView::Status);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setRootWidget(QWidget *);
|
|
||||||
void execute();
|
void execute();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void continueExecute();
|
void continueExecute();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QScopedPointer<QWidget> m_root;
|
QWidget *m_containerWidget;
|
||||||
QUrl m_source;
|
QUrl m_source;
|
||||||
QDeclarativeEngine m_engine;
|
QQuickView m_view;
|
||||||
QWeakPointer<QDeclarativeComponent> m_component;
|
QWeakPointer<QQmlComponent> m_component;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} //QmlDesigner
|
} //QmlDesigner
|
||||||
|
|
||||||
#endif // QUICKPROERTYEDITORVIEW_H
|
#endif // QUICK2PROERTYEDITORVIEW_H
|
||||||
@@ -1,175 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#include "quickpropertyeditorview.h"
|
|
||||||
|
|
||||||
#include "basiclayouts.h"
|
|
||||||
#include "basicwidgets.h"
|
|
||||||
#include "resetwidget.h"
|
|
||||||
#include "qlayoutobject.h"
|
|
||||||
#include <qmleditorwidgets/colorwidgets.h>
|
|
||||||
#include "gradientlineqmladaptor.h"
|
|
||||||
#include "behaviordialog.h"
|
|
||||||
#include "fontwidget.h"
|
|
||||||
#include "siblingcombobox.h"
|
|
||||||
#include "originwidget.h"
|
|
||||||
|
|
||||||
#include <QDeclarativeItem>
|
|
||||||
#include <QDeclarativeEngine>
|
|
||||||
#include <QDeclarativeContext>
|
|
||||||
|
|
||||||
namespace QmlDesigner {
|
|
||||||
|
|
||||||
void QuickPropertyEditorView::execute()
|
|
||||||
{
|
|
||||||
if (m_root)
|
|
||||||
delete m_root.data();
|
|
||||||
|
|
||||||
if (m_component)
|
|
||||||
delete m_component.data();
|
|
||||||
|
|
||||||
if (!m_source.isEmpty()) {
|
|
||||||
m_component = new QDeclarativeComponent(&m_engine, m_source, this);
|
|
||||||
if (!m_component->isLoading())
|
|
||||||
continueExecute();
|
|
||||||
else
|
|
||||||
connect(m_component.data(), SIGNAL(statusChanged(QDeclarativeComponent::Status)), this, SLOT(continueExecute()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QuickPropertyEditorView::QuickPropertyEditorView(QWidget *parent) :
|
|
||||||
QWidget(parent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QUrl QuickPropertyEditorView::source() const
|
|
||||||
{
|
|
||||||
return m_source;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QuickPropertyEditorView::setSource(const QUrl& url)
|
|
||||||
{
|
|
||||||
m_source = url;
|
|
||||||
execute();
|
|
||||||
}
|
|
||||||
|
|
||||||
QDeclarativeEngine* QuickPropertyEditorView::engine()
|
|
||||||
{
|
|
||||||
return &m_engine;
|
|
||||||
}
|
|
||||||
|
|
||||||
QWidget *QuickPropertyEditorView::rootWidget() const
|
|
||||||
{
|
|
||||||
return m_root.data();
|
|
||||||
}
|
|
||||||
|
|
||||||
QDeclarativeContext* QuickPropertyEditorView::rootContext()
|
|
||||||
{
|
|
||||||
return m_engine.rootContext();
|
|
||||||
}
|
|
||||||
|
|
||||||
QuickPropertyEditorView::Status QuickPropertyEditorView::status() const
|
|
||||||
{
|
|
||||||
if (!m_component)
|
|
||||||
return QuickPropertyEditorView::Null;
|
|
||||||
|
|
||||||
return QuickPropertyEditorView::Status(m_component->status());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void QuickPropertyEditorView::continueExecute()
|
|
||||||
{
|
|
||||||
|
|
||||||
disconnect(m_component.data(), SIGNAL(statusChanged(QDeclarativeComponent::Status)), this, SLOT(continueExecute()));
|
|
||||||
|
|
||||||
if (m_component->isError()) {
|
|
||||||
QList<QDeclarativeError> errorList = m_component->errors();
|
|
||||||
foreach (const QDeclarativeError &error, errorList) {
|
|
||||||
qWarning() << error;
|
|
||||||
}
|
|
||||||
emit statusChanged(status());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
QObject *obj = m_component->create();
|
|
||||||
|
|
||||||
if (m_component->isError()) {
|
|
||||||
QList<QDeclarativeError> errorList = m_component->errors();
|
|
||||||
foreach (const QDeclarativeError &error, errorList) {
|
|
||||||
qWarning() << error;
|
|
||||||
}
|
|
||||||
emit statusChanged(status());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setRootWidget(qobject_cast<QWidget *>(obj));
|
|
||||||
emit statusChanged(status());
|
|
||||||
}
|
|
||||||
|
|
||||||
void QuickPropertyEditorView::setRootWidget(QWidget *widget)
|
|
||||||
{
|
|
||||||
if (m_root.data() == widget)
|
|
||||||
return;
|
|
||||||
|
|
||||||
window()->setAttribute(Qt::WA_OpaquePaintEvent, false);
|
|
||||||
window()->setAttribute(Qt::WA_NoSystemBackground, false);
|
|
||||||
widget->setParent(this);
|
|
||||||
if (isVisible())
|
|
||||||
widget->setVisible(true);
|
|
||||||
resize(widget->size());
|
|
||||||
m_root.reset(widget);
|
|
||||||
|
|
||||||
if (m_root) {
|
|
||||||
QSize initialSize = m_root->size();
|
|
||||||
if (initialSize != size())
|
|
||||||
resize(initialSize);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void QuickPropertyEditorView::registerQmlTypes()
|
|
||||||
{
|
|
||||||
|
|
||||||
static bool declarativeTypesRegistered = false;
|
|
||||||
if (!declarativeTypesRegistered) {
|
|
||||||
declarativeTypesRegistered = true;
|
|
||||||
BasicWidgets::registerDeclarativeTypes();
|
|
||||||
BasicLayouts::registerDeclarativeTypes();
|
|
||||||
ResetWidget::registerDeclarativeType();
|
|
||||||
QLayoutObject::registerDeclarativeType();
|
|
||||||
QmlEditorWidgets::ColorWidgets::registerDeclarativeTypes();
|
|
||||||
BehaviorDialog::registerDeclarativeType();
|
|
||||||
PropertyEditorValue::registerDeclarativeTypes();
|
|
||||||
FontWidget::registerDeclarativeTypes();
|
|
||||||
SiblingComboBox::registerDeclarativeTypes();
|
|
||||||
OriginWidget::registerDeclarativeType();
|
|
||||||
GradientLineQmlAdaptor::registerDeclarativeType();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} //QmlDesigner
|
|
||||||
@@ -1,130 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#include "resetwidget.h"
|
|
||||||
#include "qdeclarative.h"
|
|
||||||
#include <QVBoxLayout>
|
|
||||||
#include <QTableWidget>
|
|
||||||
#include <QHeaderView>
|
|
||||||
#include <QPushButton>
|
|
||||||
|
|
||||||
#include <QDebug>
|
|
||||||
#include <QApplication>
|
|
||||||
|
|
||||||
QML_DECLARE_TYPE(QmlDesigner::ResetWidget)
|
|
||||||
|
|
||||||
namespace QmlDesigner {
|
|
||||||
|
|
||||||
|
|
||||||
ResetWidget::ResetWidget(QWidget *parent) : QGroupBox(parent), m_backendObject(0)
|
|
||||||
{
|
|
||||||
m_vlayout = new QVBoxLayout(this);
|
|
||||||
m_vlayout->setContentsMargins(2,2,2,2);
|
|
||||||
|
|
||||||
QPushButton *b = new QPushButton(this);
|
|
||||||
b->setText(tr("Reset All Properties"));
|
|
||||||
m_vlayout->addWidget(b);
|
|
||||||
|
|
||||||
setLayout(m_vlayout);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetWidget::registerDeclarativeType()
|
|
||||||
{
|
|
||||||
qmlRegisterType<QmlDesigner::ResetWidget>("Bauhaus", 1, 0, "ResetWidget");
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetWidget::resetView()
|
|
||||||
{
|
|
||||||
m_tableWidget->clear();
|
|
||||||
delete m_tableWidget;
|
|
||||||
setupView();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetWidget::setupView()
|
|
||||||
{
|
|
||||||
m_tableWidget = new QTableWidget(this);
|
|
||||||
m_vlayout->addWidget(m_tableWidget);
|
|
||||||
|
|
||||||
m_tableWidget->setAlternatingRowColors(true);
|
|
||||||
m_tableWidget->horizontalHeader()->hide();
|
|
||||||
m_tableWidget->verticalHeader()->hide();
|
|
||||||
m_tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
|
||||||
m_tableWidget->setShowGrid(false);
|
|
||||||
m_tableWidget->setSortingEnabled(true);
|
|
||||||
m_tableWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
|
|
||||||
|
|
||||||
const QMetaObject *metaObject = m_backendObject->metaObject();
|
|
||||||
int count = metaObject->propertyCount();
|
|
||||||
|
|
||||||
m_tableWidget->setColumnCount(3);
|
|
||||||
m_tableWidget->setRowCount(count);
|
|
||||||
for (int i=0;i<count;i++) {
|
|
||||||
QMetaProperty metaProperty = metaObject->property(i);
|
|
||||||
addPropertyItem(metaProperty.name(), i);
|
|
||||||
}
|
|
||||||
m_tableWidget->resizeRowsToContents();
|
|
||||||
m_tableWidget->resizeColumnsToContents();
|
|
||||||
m_tableWidget->sortItems(0);
|
|
||||||
m_tableWidget->setColumnWidth(2, 40);
|
|
||||||
parentWidget()->resize(parentWidget()->width(), count * 28);
|
|
||||||
qApp->processEvents();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetWidget::addPropertyItem(const QString &name, int row)
|
|
||||||
{
|
|
||||||
QTableWidgetItem *newItem = new QTableWidgetItem(name);
|
|
||||||
m_tableWidget->setItem(row, 0, newItem);
|
|
||||||
ResetWidgetPushButton *b = new ResetWidgetPushButton(m_tableWidget);
|
|
||||||
b->setName(name);
|
|
||||||
b->setText("reset");
|
|
||||||
connect(b, SIGNAL(pressed(QString)), this, SLOT(buttonPressed(QString)));
|
|
||||||
b->setMaximumHeight(15);
|
|
||||||
b->setMinimumHeight(10);
|
|
||||||
m_tableWidget->setCellWidget(row, 2, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetWidget::buttonPressed(const QString &)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
ResetWidgetPushButton::ResetWidgetPushButton(QWidget *parent) : QPushButton(parent)
|
|
||||||
{
|
|
||||||
connect(this, SIGNAL(pressed()), this, SLOT(myPressed()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetWidgetPushButton::myPressed()
|
|
||||||
{
|
|
||||||
emit pressed(m_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
** Contact: http://www.qt-project.org/legal
|
|
||||||
**
|
|
||||||
** 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 Digia. For licensing terms and
|
|
||||||
** conditions see http://qt.digia.com/licensing. For further information
|
|
||||||
** use the contact form at http://qt.digia.com/contact-us.
|
|
||||||
**
|
|
||||||
** GNU Lesser General Public License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
||||||
** General Public License version 2.1 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
||||||
** packaging of this file. Please review the following information to
|
|
||||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
||||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
||||||
**
|
|
||||||
** In addition, as a special exception, Digia gives you certain additional
|
|
||||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
|
||||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef ResetWidget_h
|
|
||||||
#define ResetWidget_h
|
|
||||||
|
|
||||||
#include <QGroupBox>
|
|
||||||
#include <QPushButton>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
class QListWidget;
|
|
||||||
class QVBoxLayout;
|
|
||||||
class QTableWidget;
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
namespace QmlDesigner {
|
|
||||||
|
|
||||||
class ResetWidget : public QGroupBox
|
|
||||||
{
|
|
||||||
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
Q_PROPERTY(QObject *backendObject READ backendObject WRITE setBackendObject)
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void resetView();
|
|
||||||
|
|
||||||
public:
|
|
||||||
ResetWidget(QWidget *parent = 0);
|
|
||||||
QObject* backendObject()
|
|
||||||
{
|
|
||||||
return m_backendObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setBackendObject(QObject* backendObject)
|
|
||||||
{
|
|
||||||
m_backendObject = backendObject;
|
|
||||||
setupView();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void registerDeclarativeType();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void buttonPressed(const QString &name);
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
void setupView();
|
|
||||||
|
|
||||||
void addPropertyItem(const QString &name, int row);
|
|
||||||
|
|
||||||
QObject* m_backendObject;
|
|
||||||
QVBoxLayout *m_vlayout;
|
|
||||||
QTableWidget *m_tableWidget;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class ResetWidgetPushButton : public QPushButton
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void myPressed();
|
|
||||||
void setName(const QString &name)
|
|
||||||
{ m_name = name; }
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void pressed(const QString &name);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ResetWidgetPushButton(QWidget *parent = 0);
|
|
||||||
private:
|
|
||||||
QString m_name;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif //ResetWidget_h
|
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 2.1
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
property variant flickable: this;
|
property variant flickable: this;
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
QT *= qml quick
|
||||||
|
|
||||||
VPATH += $$PWD
|
VPATH += $$PWD
|
||||||
|
|
||||||
SOURCES += stateseditorwidget.cpp \
|
SOURCES += stateseditorwidget.cpp \
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace QmlDesigner {
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
StatesEditorImageProvider::StatesEditorImageProvider()
|
StatesEditorImageProvider::StatesEditorImageProvider()
|
||||||
: QDeclarativeImageProvider(QDeclarativeImageProvider::Image)
|
: QQuickImageProvider(QQuickImageProvider::Image)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
#include"abstractview.h"
|
#include"abstractview.h"
|
||||||
|
|
||||||
#include <QDeclarativeImageProvider>
|
#include <QQuickImageProvider>
|
||||||
#include <QWeakPointer>
|
#include <QWeakPointer>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
@@ -40,7 +40,7 @@ namespace Internal {
|
|||||||
|
|
||||||
class StatesEditorView;
|
class StatesEditorView;
|
||||||
|
|
||||||
class StatesEditorImageProvider : public QDeclarativeImageProvider
|
class StatesEditorImageProvider : public QQuickImageProvider
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
StatesEditorImageProvider();
|
StatesEditorImageProvider();
|
||||||
|
|||||||
@@ -398,6 +398,9 @@ void StatesEditorView::currentStateChanged(const ModelNode &node)
|
|||||||
|
|
||||||
void StatesEditorView::instancesPreviewImageChanged(const QVector<ModelNode> &nodeList)
|
void StatesEditorView::instancesPreviewImageChanged(const QVector<ModelNode> &nodeList)
|
||||||
{
|
{
|
||||||
|
if (!model())
|
||||||
|
return;
|
||||||
|
|
||||||
int minimumIndex = 10000;
|
int minimumIndex = 10000;
|
||||||
int maximumIndex = -1;
|
int maximumIndex = -1;
|
||||||
foreach (const ModelNode &node, nodeList) {
|
foreach (const ModelNode &node, nodeList) {
|
||||||
|
|||||||
@@ -38,10 +38,10 @@
|
|||||||
|
|
||||||
#include <QBoxLayout>
|
#include <QBoxLayout>
|
||||||
|
|
||||||
#include <QDeclarativeView>
|
#include <QQuickView>
|
||||||
#include <QDeclarativeContext>
|
#include <QQmlContext>
|
||||||
#include <QDeclarativeEngine>
|
#include <QQmlEngine>
|
||||||
#include <QDeclarativeItem>
|
#include <QQuickItem>
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
debug = false
|
debug = false
|
||||||
@@ -51,15 +51,15 @@ namespace QmlDesigner {
|
|||||||
|
|
||||||
int StatesEditorWidget::currentStateInternalId() const
|
int StatesEditorWidget::currentStateInternalId() const
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_declarativeView->rootObject());
|
Q_ASSERT(m_quickView->rootObject());
|
||||||
Q_ASSERT(m_declarativeView->rootObject()->property("currentStateInternalId").isValid());
|
Q_ASSERT(m_quickView->rootObject()->property("currentStateInternalId").isValid());
|
||||||
|
|
||||||
return m_declarativeView->rootObject()->property("currentStateInternalId").toInt();
|
return m_quickView->rootObject()->property("currentStateInternalId").toInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatesEditorWidget::setCurrentStateInternalId(int internalId)
|
void StatesEditorWidget::setCurrentStateInternalId(int internalId)
|
||||||
{
|
{
|
||||||
m_declarativeView->rootObject()->setProperty("currentStateInternalId", internalId);
|
m_quickView->rootObject()->setProperty("currentStateInternalId", internalId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatesEditorWidget::setNodeInstanceView(NodeInstanceView *nodeInstanceView)
|
void StatesEditorWidget::setNodeInstanceView(NodeInstanceView *nodeInstanceView)
|
||||||
@@ -69,54 +69,56 @@ void StatesEditorWidget::setNodeInstanceView(NodeInstanceView *nodeInstanceView)
|
|||||||
|
|
||||||
void StatesEditorWidget::showAddNewStatesButton(bool showAddNewStatesButton)
|
void StatesEditorWidget::showAddNewStatesButton(bool showAddNewStatesButton)
|
||||||
{
|
{
|
||||||
m_declarativeView->rootContext()->setContextProperty("canAddNewStates", showAddNewStatesButton);
|
m_quickView->rootContext()->setContextProperty("canAddNewStates", showAddNewStatesButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, StatesEditorModel *statesEditorModel):
|
StatesEditorWidget::StatesEditorWidget(StatesEditorView *statesEditorView, StatesEditorModel *statesEditorModel):
|
||||||
QWidget(),
|
QWidget(),
|
||||||
m_declarativeView(new QDeclarativeView(this)),
|
m_quickView(new QQuickView()),
|
||||||
m_statesEditorView(statesEditorView),
|
m_statesEditorView(statesEditorView),
|
||||||
m_imageProvider(0)
|
m_imageProvider(0)
|
||||||
{
|
{
|
||||||
m_imageProvider = new Internal::StatesEditorImageProvider;
|
m_imageProvider = new Internal::StatesEditorImageProvider;
|
||||||
m_imageProvider->setNodeInstanceView(statesEditorView->nodeInstanceView());
|
m_imageProvider->setNodeInstanceView(statesEditorView->nodeInstanceView());
|
||||||
m_declarativeView->engine()->addImageProvider(
|
m_quickView->engine()->addImageProvider(
|
||||||
QLatin1String("qmldesigner_stateseditor"), m_imageProvider);
|
QLatin1String("qmldesigner_stateseditor"), m_imageProvider);
|
||||||
|
|
||||||
m_declarativeView->setAcceptDrops(false);
|
//m_quickView->setAcceptDrops(false);
|
||||||
|
|
||||||
QVBoxLayout *layout = new QVBoxLayout(this);
|
QVBoxLayout *layout = new QVBoxLayout(this);
|
||||||
setMinimumHeight(160);
|
setMinimumHeight(160);
|
||||||
layout->setMargin(0);
|
layout->setMargin(0);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
layout->addWidget(m_declarativeView.data());
|
QWidget *container = createWindowContainer(m_quickView.data());
|
||||||
|
layout->addWidget(container);
|
||||||
|
|
||||||
m_declarativeView->setResizeMode(QDeclarativeView::SizeRootObjectToView);
|
m_quickView->setResizeMode(QQuickView::SizeRootObjectToView);
|
||||||
|
|
||||||
m_declarativeView->rootContext()->setContextProperty(QLatin1String("statesEditorModel"), statesEditorModel);
|
m_quickView->rootContext()->setContextProperty(QLatin1String("statesEditorModel"), statesEditorModel);
|
||||||
QColor highlightColor = palette().highlight().color();
|
QColor highlightColor = palette().highlight().color();
|
||||||
if (0.5*highlightColor.saturationF()+0.75-highlightColor.valueF() < 0)
|
if (0.5*highlightColor.saturationF()+0.75-highlightColor.valueF() < 0)
|
||||||
highlightColor.setHsvF(highlightColor.hsvHueF(),0.1 + highlightColor.saturationF()*2.0, highlightColor.valueF());
|
highlightColor.setHsvF(highlightColor.hsvHueF(),0.1 + highlightColor.saturationF()*2.0, highlightColor.valueF());
|
||||||
m_declarativeView->rootContext()->setContextProperty(QLatin1String("highlightColor"), highlightColor);
|
m_quickView->rootContext()->setContextProperty(QLatin1String("highlightColor"), highlightColor);
|
||||||
|
|
||||||
m_declarativeView->rootContext()->setContextProperty("canAddNewStates", true);
|
m_quickView->rootContext()->setContextProperty("canAddNewStates", true);
|
||||||
|
|
||||||
// Work around ASSERT in the internal QGraphicsScene that happens when
|
// Work around ASSERT in the internal QGraphicsScene that happens when
|
||||||
// the scene is created + items set dirty in one event loop run (BAUHAUS-459)
|
// the scene is created + items set dirty in one event loop run (BAUHAUS-459)
|
||||||
//QApplication::processEvents();
|
//QApplication::processEvents();
|
||||||
|
|
||||||
m_declarativeView->setSource(QUrl("qrc:/stateseditor/stateslist.qml"));
|
m_quickView->setSource(QUrl("qrc:/stateseditor/stateslist.qml"));
|
||||||
|
|
||||||
if (!m_declarativeView->rootObject())
|
if (!m_quickView->rootObject())
|
||||||
throw InvalidQmlSourceException(__LINE__, __FUNCTION__, __FILE__);
|
throw InvalidQmlSourceException(__LINE__, __FUNCTION__, __FILE__);
|
||||||
|
|
||||||
m_declarativeView->setFocusPolicy(Qt::ClickFocus);
|
|
||||||
QEvent event(QEvent::WindowActivate);
|
|
||||||
QApplication::sendEvent(m_declarativeView->scene(), &event);
|
|
||||||
|
|
||||||
connect(m_declarativeView->rootObject(), SIGNAL(currentStateInternalIdChanged()), statesEditorView, SLOT(synchonizeCurrentStateFromWidget()));
|
QEvent event(QEvent::WindowActivate);
|
||||||
connect(m_declarativeView->rootObject(), SIGNAL(createNewState()), statesEditorView, SLOT(createNewState()));
|
QApplication::sendEvent(m_quickView.data(), &event);
|
||||||
connect(m_declarativeView->rootObject(), SIGNAL(deleteState(int)), statesEditorView, SLOT(removeState(int)));
|
|
||||||
|
|
||||||
|
connect(m_quickView->rootObject(), SIGNAL(currentStateInternalIdChanged()), statesEditorView, SLOT(synchonizeCurrentStateFromWidget()));
|
||||||
|
connect(m_quickView->rootObject(), SIGNAL(createNewState()), statesEditorView, SLOT(createNewState()));
|
||||||
|
connect(m_quickView->rootObject(), SIGNAL(deleteState(int)), statesEditorView, SLOT(removeState(int)));
|
||||||
|
|
||||||
setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred));
|
setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred));
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QDeclarativeView;
|
class QQuickView;
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
@@ -65,7 +65,7 @@ public:
|
|||||||
void showAddNewStatesButton(bool showAddNewStatesButton);
|
void showAddNewStatesButton(bool showAddNewStatesButton);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWeakPointer<QDeclarativeView> m_declarativeView;
|
QWeakPointer<QQuickView> m_quickView;
|
||||||
QWeakPointer<StatesEditorView> m_statesEditorView;
|
QWeakPointer<StatesEditorView> m_statesEditorView;
|
||||||
Internal::StatesEditorImageProvider *m_imageProvider;
|
Internal::StatesEditorImageProvider *m_imageProvider;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 2.1
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: root
|
id: root
|
||||||
|
|||||||
Reference in New Issue
Block a user