Merge remote branch 'origin/2.1'

Conflicts:
	share/qtcreator/templates/mobileapp/app.pro
	share/qtcreator/templates/qmlapp/app.pro
	src/plugins/cpptools/cpptools.pro
This commit is contained in:
dt
2010-10-04 16:07:46 +02:00
386 changed files with 12674 additions and 4573 deletions

View File

@@ -14,6 +14,9 @@ General
Editing
C++ Support
* Added semantic highlighting of types, virtual methods, locals, statics and
member variables (only enabled when running against Qt 4.7.1 and up, for
performance reasons)
* Add new %FILENAME%, %CLASS% placeholders to license template
Project Support

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -1818,21 +1818,7 @@
You use wizards to create and import several types of projects and files, such
as Qt GUI or console applications and Qt Quick applications.
You can also use
wizards to add individual files to your projects. For example, you can create
the following types of files:
\list
\o Qt resource files, which allow you to store binary files in the
application executable
\o \QD forms and Qt QML files, which specify parts of application user
interfaces
\o C++ class, source, or header files
\endlist
You can use wizards also to add individual files to your projects.
The wizards prompt you to enter the settings needed
for that particular type of project and create the necessary files for you.
@@ -1863,6 +1849,14 @@
path.
\image qtcreator-intro-and-location.png
\o Select the Qt versions to use as build targets for your project, and click
\gui{Next}.
\image qtcreator-new-project-qt-versions.png "Target setting dialog"
\note If you have only one Qt version installed, this dialog is skipped.
\o Specify the name of the class you want to create and using the
drop-down menu select its base class type.
@@ -1878,10 +1872,43 @@
\image qtcreator-new-project-summary.png
\endlist
\section1 Adding Files to Projects
You can create the following types of files:
\list
\o Qt resource files, which allow you to store binary files in the
application executable
\o \QD forms and Qt QML files, which specify parts of application user
interfaces
\o C++ class, source, or header files
\o Text files
\endlist
\section2 Creating C++ Classes
The \gui {C++ Class Wizard} allows you to create a C++ header and source file for
a new class that you can add to a C++ project. Specify the class name, base
class, and header and source files for the class.
The wizard supports namespaces. To use a namespace, enter a qualified
class name in the \gui {Class name} field. For example:
MyNamespace::MySubNamespace::MyClass.
\image qtcreator-cpp-class-wizard.png "Enter Class Name dialog"
The names of the header and source file are based on the class name. To change the
default suffix of a file, click \gui Configure.
You can create your own project and class wizards. For more information,
see \l{Adding New Custom Wizards}.
\section1 Displaying Additional File Types in Projects Pane
\section2 Displaying Additional File Types in Projects Pane
Qt Creator determines whether to display files from the project folder
in the \gui Projects pane depending on the file type (.pro, .pri, .cpp,
@@ -1900,6 +1927,35 @@
This also makes the files available in the \gui Locator.
\section1 Adding Subprojects to Projects
When you create a new project, you can add it to another project as a subproject
in the \gui{Project Management} dialog. However, you first have to edit the
.pro file of the parent project to specify that qmake uses the \c subdirs template
to build the project.
The \c subdirs template creates a Makefile for building subprojects. They can be
located either in subdirectories of the project directory or in any other directory.
The location of the targets is specified using the SUBDIRS variable. If the project file
has the same name as the directory, you can just specify the directory name. If the project
name and directory name are different, you must specify the project file name (.pro).
For more information on the SUBDIRS variable, see the
\l{http://doc.qt.nokia.com/4.7/qmake-variable-reference.html#subdirs}{qmake Variable Reference}.
For example, the following code specifies that plugin_coreplugin/plugin_coreplugin.pro
and mylogin.pro belong to the project:
\code
TEMPLATE = subdirs
SUBDIRS = plugin_coreplugin \
../another/plugin/myplugin.pro
\endcode
To specify dependencies, use the \gui{Add Library} wizard. For more information,
see \l{Adding Libraries to qmake Projects}.
*/
@@ -2966,7 +3022,7 @@
\note Shadow building is not supported by the Symbian build system.
Also, shadow building on Windows is not supported for Maemo.
If you only build for one target platform, you can deselect
the \gui{Shadow Build} checkbox.
the \gui{Shadow build} checkbox.
\endlist
\endlist
@@ -2979,6 +3035,23 @@
\image qtcreator-build-steps.png "Build steps"
\section2 Adding Custom Build Steps
To add custom steps to the build settings, select \gui {Add Build Step >
Custom Process Step}.
By default, custom steps are disabled. To activate a custom step, select
the \gui{Enable custom process step} check-box.
\image qtcreator-build-steps-custom.png "Custom Process Step"
You can use any environment variables as values in the fields. For a list
of variable names, click \gui {Build Environment > Details}. You can specify
variables as ${VARNAME} or %VARNAME%. For example, ${BUILDDIR} or %BUILDDIR%.
\note Qt Creator sets SOURCEDIR and BUILDDIR as part of the build environment.
For more information, see \l{Build Environment}.
\section1 Clean Steps
You can use the cleaning process to remove intermediate files. This process
@@ -2990,10 +3063,10 @@
You can define the cleaning steps for your builds in the \gui{Clean Steps}:
\list
\o To add a clean step using make or a custom process, click
\gui{Add clean step} and select the type of step you want to add.
\gui{Add Clean Step} and select the type of step you want to add.
By default, custom steps are disabled. Activate custom steps by
checking the \gui{Enable custom process step} check-box.
By default, custom steps are disabled. To activate a custom step,
select the \gui{Enable custom process step} check-box.
\o To remove a clean step, click \gui{Remove Item}.
\o To change the order of steps, click
\inlineimage qtcreator-movestep.png
@@ -3010,6 +3083,8 @@
variables or add, reset and unset new variables based on your project
requirements.
\image qtcreator-build-environment.png "Build Environment"
*/
@@ -4610,17 +4685,21 @@
\title Managing Sessions
When you exit Qt Creator, a snapshot of your current workspace is stored
as a session.
A session is a collection of:
as a \e session. A session is an arbitrary collection of:
\list
\o Open projects with their dependencies
\o Open projects with their dependencies (including SUBDIRS projects)
\o Open editors
\o Breakpoints and watches
\o Bookmarks
\endlist
If you work on a project and need to switch to another project for a
A session is personal, that is, not meant to be shared. It is not
supposed to reflect the project structure. It contains personal data, such as
bookmarks and breakpoints that are usually not of interest to other developers
working on the same projects.
For example, if you work on a project and need to switch to another project for a
while, you can save your workspace as a session. This makes it easier
to return to working on the first project later.

View File

@@ -31,6 +31,26 @@ defineReplace(qtLibraryName) {
return($$RET)
}
defineTest(minQtVersion) {
maj = $$1
min = $$2
patch = $$3
isEqual(QT_MAJOR_VERSION, $$maj) {
isEqual(QT_MINOR_VERSION, $$min) {
isEqual(QT_PATCH_VERSION, $$patch) {
return(true)
}
greaterThan(QT_PATCH_VERSION, $$patch) {
return(true)
}
}
greaterThan(QT_MINOR_VERSION, $$min) {
return(true)
}
}
return(false)
}
# For use in custom compilers which just copy files
win32:i_flag = i
defineReplace(stripSrcDir) {

View File

@@ -693,7 +693,8 @@ def makeValue(type, init):
type = stripClassTag(type)
if type.find(":") >= 0:
type = "'" + type + "'"
gdb.execute("set $d = (%s*)malloc(sizeof(%s))" % (type, type))
# Avoid malloc symbol clash with QVector
gdb.execute("set $d = (%s*)calloc(sizeof(%s), 1)" % (type, type))
gdb.execute("set *$d = {%s}" % init)
value = parseAndEvaluate("$d").dereference()
#warn(" TYPE: %s" % value.type)

View File

@@ -723,7 +723,8 @@ def qdump__QObject(d, item):
if d.isExpandedIName(item.iname + ".properties"):
# FIXME: Make this global. Don't leak.
variant = "'%sQVariant'" % d.ns
gdb.execute("set $d = (%s*)malloc(sizeof(%s))" % (variant, variant))
# Avoid malloc symbol clash with QVector
gdb.execute("set $d = (%s*)calloc(sizeof(%s), 1)" % (variant, variant))
gdb.execute("set $d.d.is_shared = 0")
with Children(d, [propertyCount, 500]):
@@ -769,7 +770,8 @@ def qdump__QObject(d, item):
# % (d.ns, item.value.address, propertyName)
#exp = '"((\'%sQObject\'*)%s)"' % (d.ns, item.value.address,)
#warn("EXPRESSION: %s" % exp)
value = call(item.value, 'property("%s")' % propertyName)
value = call(item.value, 'property(%s)'
% cleanAddress(metaStringData + metaData[offset]))
value1 = value["d"]
#warn(" CODE: %s" % value1["type"])
# Type 1 and 2 are bool and int. Try to save a few cycles in this case:

View File

@@ -1,2 +0,0 @@
This is Creator's default directory for syntax highlight definitions.
You can download them through the Generic Highlighter options dialog.

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module>
<type name="QmlProject.Project">
<exports>
<export module="QmlProject" version="1.0" type="Project"/>
</exports>
<property name="sourceDirectory" type="string"/>
<property name="importPaths" type="string" isList="true"/>
<property name="content" type="QmlProjectItem" isList="true"/>
@@ -14,14 +17,26 @@
<property name="files" type="string" isList="true"/>
</type>
<type name="QmlProject.QmlFiles" extends="FileFilterBaseItem">
<exports>
<export module="QmlProject" version="1.0" type="QmlFiles"/>
</exports>
</type>
<type name="QmlProject.JavaScriptFiles" extends="FileFilterBaseItem">
<exports>
<export module="QmlProject" version="1.0" type="JavaScriptFiles"/>
</exports>
<property name="filter" type="string"/>
</type>
<type name="QmlProject.ImageFiles" extends="FileFilterBaseItem">
<exports>
<export module="QmlProject" version="1.0" type="ImageFiles"/>
</exports>
<property name="filter" type="string"/>
</type>
<type name="QmlProject.CssFiles" extends="FileFilterBaseItem">
<exports>
<export module="QmlProject" version="1.0" type="CssFiles"/>
</exports>
<property name="filter" type="string"/>
</type>
</module>

View File

@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module>
<type name="QDeclarativeViewer.Screen">
<exports>
<export module="QDeclarativeViewer" version="1.0" type="Screen"/>
</exports>
<enum name="Orientation">
<enumerator name="UnknownOrientation" value="0"/>
<enumerator name="Portrait" value="1"/>

View File

@@ -15,15 +15,15 @@
#include <QtDeclarative/private/qdeclarativeopenmetaobject_p.h>
#include <QtDeclarative/QDeclarativeView>
static QHash<QByteArray, const QDeclarativeType *> qmlTypeByCppName;
static QHash<QByteArray, QByteArray> cppToQml;
static QHash<QByteArray, QList<const QDeclarativeType *> > qmlTypesByCppName;
static QHash<QByteArray, QByteArray> cppToId;
QByteArray convertToQmlType(const QByteArray &cppName)
QByteArray convertToId(const QByteArray &cppName)
{
QByteArray qmlName = cppToQml.value(cppName, cppName);
qmlName.replace("::", ".");
qmlName.replace("/", ".");
return qmlName;
QByteArray idName = cppToId.value(cppName, cppName);
idName.replace("::", ".");
idName.replace("/", ".");
return idName;
}
void erasure(QByteArray *typeName, bool *isList, bool *isPointer)
@@ -41,7 +41,7 @@ void erasure(QByteArray *typeName, bool *isList, bool *isPointer)
erasure(typeName, isList, isPointer);
}
*typeName = convertToQmlType(*typeName);
*typeName = convertToId(*typeName);
}
void processMetaObject(const QMetaObject *meta, QSet<const QMetaObject *> *metas)
@@ -132,7 +132,7 @@ void dump(const QMetaMethod &meth, QXmlStreamWriter *xml)
attributes.append(QXmlStreamAttribute("name", name));
const QString typeName = convertToQmlType(meth.typeName());
const QString typeName = convertToId(meth.typeName());
if (! typeName.isEmpty())
attributes.append(QXmlStreamAttribute("type", typeName));
@@ -187,16 +187,12 @@ public:
void dump(const QMetaObject *meta, QXmlStreamWriter *xml)
{
QByteArray qmlTypeName = convertToQmlType(meta->className());
QByteArray id = convertToId(meta->className());
xml->writeStartElement("type");
QXmlStreamAttributes attributes;
attributes.append(QXmlStreamAttribute("name", qmlTypeName));
if (const QDeclarativeType *qmlTy = qmlTypeByCppName.value(meta->className())) {
attributes.append(QXmlStreamAttribute("version", QString("%1.%2").arg(qmlTy->majorVersion()).arg(qmlTy->minorVersion())));
}
attributes.append(QXmlStreamAttribute("name", id));
for (int index = meta->classInfoCount() - 1 ; index >= 0 ; --index) {
QMetaClassInfo classInfo = meta->classInfo(index);
@@ -206,16 +202,31 @@ void dump(const QMetaObject *meta, QXmlStreamWriter *xml)
}
}
QString version;
if (meta->superClass())
attributes.append(QXmlStreamAttribute("extends", convertToQmlType(meta->superClass()->className())));
if (! version.isEmpty())
attributes.append(QXmlStreamAttribute("version", version));
attributes.append(QXmlStreamAttribute("extends", convertToId(meta->superClass()->className())));
xml->writeAttributes(attributes);
QList<const QDeclarativeType *> qmlTypes = qmlTypesByCppName.value(id);
if (!qmlTypes.isEmpty()) {
xml->writeStartElement("exports");
foreach (const QDeclarativeType *qmlTy, qmlTypes) {
QXmlStreamAttributes moduleAttributes;
const QString qmlTyName = qmlTy->qmlTypeName();
int slashIdx = qmlTyName.lastIndexOf(QLatin1Char('/'));
if (slashIdx == -1)
continue;
const QString moduleName = qmlTyName.left(slashIdx);
const QString typeName = qmlTyName.mid(slashIdx + 1);
moduleAttributes.append(QXmlStreamAttribute("module", moduleName));
moduleAttributes.append(QXmlStreamAttribute("version", QString("%1.%2").arg(qmlTy->majorVersion()).arg(qmlTy->minorVersion())));
moduleAttributes.append(QXmlStreamAttribute("type", typeName));
xml->writeEmptyElement("export");
xml->writeAttributes(moduleAttributes);
}
xml->writeEndElement();
}
for (int index = meta->enumeratorOffset(); index < meta->enumeratorCount(); ++index)
dump(meta->enumerator(index), xml);
@@ -234,7 +245,7 @@ void writeEasingCurve(QXmlStreamWriter *xml)
{
QXmlStreamAttributes attributes;
attributes.append(QXmlStreamAttribute("name", "QEasingCurve"));
attributes.append(QXmlStreamAttribute("extends", "Qt.Easing"));
attributes.append(QXmlStreamAttribute("extends", "QDeclarativeEasingValueType"));
xml->writeAttributes(attributes);
}
@@ -262,8 +273,22 @@ int main(int argc, char *argv[])
if (!pluginImportPath.isEmpty())
engine->addImportPath(pluginImportPath);
bool hasQtQuickModule = false;
{
QByteArray code = "import QtQuick 1.0; Item {}";
QDeclarativeComponent c(engine);
c.setData(code, QUrl("xxx"));
c.create();
if (c.errors().isEmpty()) {
hasQtQuickModule = true;
}
}
QByteArray importCode;
importCode += "import Qt 4.7;\n";
if (hasQtQuickModule) {
importCode += "import QtQuick 1.0;\n";
}
if (pluginImportName.isEmpty()) {
importCode += "import Qt.labs.particles 4.7;\n";
importCode += "import Qt.labs.gestures 4.7;\n";
@@ -284,25 +309,25 @@ int main(int argc, char *argv[])
qDebug() << c.errorString();
}
cppToQml.insert("QString", "string");
cppToQml.insert("QDeclarativeEasingValueType::Type", "Type");
cppToId.insert("QString", "string");
cppToId.insert("QDeclarativeEasingValueType::Type", "Type");
QSet<const QMetaObject *> metas;
metas.insert(FriendlyQObject::qtMeta());
QMultiHash<QByteArray, QByteArray> extensions;
QHash<QByteArray, QSet<QByteArray> > extensions;
foreach (const QDeclarativeType *ty, QDeclarativeMetaType::qmlTypes()) {
qmlTypeByCppName.insert(ty->metaObject()->className(), ty);
qmlTypesByCppName[ty->metaObject()->className()].append(ty);
if (ty->isExtendedType()) {
extensions.insert(ty->typeName(), ty->metaObject()->className());
extensions[ty->typeName()].insert(ty->metaObject()->className());
} else {
cppToQml.insert(ty->metaObject()->className(), ty->qmlTypeName());
cppToId.insert(ty->metaObject()->className(), ty->metaObject()->className());
}
processDeclarativeType(ty, &metas);
}
// Adjust qml names of extended objects.
// Adjust ids of extended objects.
// The chain ends up being:
// __extended__.originalname - the base object
// __extension_0_.originalname - first extension
@@ -310,14 +335,19 @@ int main(int argc, char *argv[])
// __extension_n-2_.originalname - second to last extension
// originalname - last extension
foreach (const QByteArray &extendedCpp, extensions.keys()) {
const QByteArray extendedQml = cppToQml.value(extendedCpp);
cppToQml.insert(extendedCpp, "__extended__." + extendedQml);
QList<QByteArray> extensionCppNames = extensions.values(extendedCpp);
for (int i = 0; i < extensionCppNames.size() - 1; ++i) {
QByteArray adjustedName = QString("__extension__%1.%2").arg(QString::number(i), QString(extendedQml)).toAscii();
cppToQml.insert(extensionCppNames.value(i), adjustedName);
const QByteArray extendedId = cppToId.value(extendedCpp);
cppToId.insert(extendedCpp, "__extended__." + extendedId);
QSet<QByteArray> extensionCppNames = extensions.value(extendedCpp);
int c = 0;
foreach (const QByteArray &extensionCppName, extensionCppNames) {
if (c != extensionCppNames.size() - 1) {
QByteArray adjustedName = QString("__extension__%1.%2").arg(QString::number(c), QString(extendedId)).toAscii();
cppToId.insert(extensionCppName, adjustedName);
} else {
cppToId.insert(extensionCppName, extendedId);
}
++c;
}
cppToQml.insert(extensionCppNames.last(), extendedQml);
}
foreach (const QDeclarativeType *ty, QDeclarativeMetaType::qmlTypes()) {
@@ -350,13 +380,13 @@ int main(int argc, char *argv[])
QMap<QString, const QMetaObject *> nameToMeta;
foreach (const QMetaObject *meta, metas) {
nameToMeta.insert(convertToQmlType(meta->className()), meta);
nameToMeta.insert(convertToId(meta->className()), meta);
}
foreach (const QMetaObject *meta, nameToMeta) {
dump(meta, &xml);
}
// define QEasingCurve as an extension of Qt.Easing
// define QEasingCurve as an extension of QDeclarativeEasingValueType
writeEasingCurve(&xml);
xml.writeEndElement();

View File

@@ -29,7 +29,7 @@
#include "abstractformeditortool.h"
#include "qdeclarativeviewobserver.h"
#include "qdeclarativeviewobserver_p.h"
#include "../qdeclarativeviewobserver_p.h"
#include <QDeclarativeEngine>

View File

@@ -28,7 +28,7 @@
**************************************************************************/
#include "rubberbandselectionmanipulator.h"
#include "qdeclarativeviewobserver_p.h"
#include "../qdeclarativeviewobserver_p.h"
#include <QDebug>

View File

@@ -28,7 +28,7 @@
**************************************************************************/
#include "selectionindicator.h"
#include "qdeclarativeviewobserver_p.h"
#include "../qdeclarativeviewobserver_p.h"
#include "qmlobserverconstants.h"
#include <QPen>
@@ -97,11 +97,11 @@ void SelectionIndicator::setItems(const QList<QWeakPointer<QGraphicsObject> > &i
// set selections to also all children if they are not editor items
foreach (QWeakPointer<QGraphicsObject> obj, itemList) {
if (obj.isNull())
foreach (QWeakPointer<QGraphicsObject> object, itemList) {
if (object.isNull())
continue;
QGraphicsItem *item = obj.data();
QGraphicsItem *item = object.data();
QGraphicsPolygonItem *newSelectionIndicatorGraphicsItem = new QGraphicsPolygonItem(m_layerItem.data());
if (!m_indicatorShapeHash.contains(item)) {

View File

@@ -31,7 +31,7 @@
#include "layeritem.h"
//#include "resizehandleitem.h"
#include "qdeclarativeviewobserver_p.h"
#include "../qdeclarativeviewobserver_p.h"
#include <QDeclarativeEngine>

View File

@@ -29,7 +29,7 @@
#include "singleselectionmanipulator.h"
#include "qdeclarativeviewobserver.h"
#include "qdeclarativeviewobserver_p.h"
#include "../qdeclarativeviewobserver_p.h"
#include <QtDebug>
namespace QmlJSDebugger {

View File

@@ -1,5 +1,5 @@
#include "subcomponenteditortool.h"
#include "qdeclarativeviewobserver_p.h"
#include "../qdeclarativeviewobserver_p.h"
#include "subcomponentmasklayeritem.h"
#include "layeritem.h"

View File

@@ -1,5 +1,5 @@
#include "zoomtool.h"
#include "qdeclarativeviewobserver_p.h"
#include "../qdeclarativeviewobserver_p.h"
#include <QMouseEvent>
#include <QWheelEvent>

View File

@@ -57,9 +57,10 @@
#include <QtScript/QScriptValue>
#include <QtCore/QEventLoop>
#include <QtCore/QSet>
#include <private/qdeclarativedebugservice_p.h>
#include <QtCore/QStringList>
#include "qt_private/qdeclarativedebugservice_p.h"
#include "qmljsdebugger_global.h"
QT_FORWARD_DECLARE_CLASS(QScriptContext);
@@ -103,7 +104,7 @@ public:
const QVariant &argument = QVariant());
void messageReceived(const QByteArray &);
void enabledChanged(bool);
void statusChanged(Status status);
public slots:
// void pauses();

View File

@@ -42,7 +42,7 @@
#ifndef QDECLARATIVEDESIGNDEBUGSERVER_H
#define QDECLARATIVEDESIGNDEBUGSERVER_H
#include <private/qdeclarativedebugservice_p.h>
#include "qt_private/qdeclarativedebugservice_p.h"
#include "qmlobserverconstants.h"
#include "qmljsdebugger_global.h"
@@ -70,6 +70,8 @@ public:
void reloaded();
QString idStringForObject(QObject *obj) const;
void sendMessage(const QByteArray &message);
public Q_SLOTS:
void selectedColorChanged(const QColor &color);
void contextPathUpdated(const QStringList &contextPath);
@@ -98,7 +100,7 @@ Q_SIGNALS:
void clearComponentCacheRequested();
protected:
virtual void enabledChanged(bool enabled);
virtual void statusChanged(Status status);
virtual void messageReceived(const QByteArray &);
private:

View File

@@ -0,0 +1,67 @@
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtDeclarative module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** 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, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
**
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QDECLARATIVEDEBUGHELPER_P_H
#define QDECLARATIVEDEBUGHELPER_P_H
#include <QtCore/qglobal.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
class QScriptEngine;
class QDeclarativeEngine;
// Helper methods to access private API through a stable interface
// This is used in the qmljsdebugger library of QtCreator.
class Q_DECLARATIVE_EXPORT QDeclarativeDebugHelper
{
public:
static QScriptEngine *getScriptEngine(QDeclarativeEngine *engine);
static void setAnimationSlowDownFactor(qreal factor);
};
QT_END_NAMESPACE
QT_END_HEADER
#endif // QDECLARATIVEDEBUGHELPER_P_H

View File

@@ -0,0 +1,92 @@
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtDeclarative module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** 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, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
**
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QDECLARATIVEDEBUGSERVICE_H
#define QDECLARATIVEDEBUGSERVICE_H
#include <QtCore/qobject.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeDebugServicePrivate;
class Q_DECLARATIVE_EXPORT QDeclarativeDebugService : public QObject
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativeDebugService)
Q_DISABLE_COPY(QDeclarativeDebugService)
public:
explicit QDeclarativeDebugService(const QString &, QObject *parent = 0);
~QDeclarativeDebugService();
QString name() const;
enum Status { NotConnected, Unavailable, Enabled };
Status status() const;
void sendMessage(const QByteArray &);
static int idForObject(QObject *);
static QObject *objectForId(int);
static QString objectToString(QObject *obj);
static bool isDebuggingEnabled();
static bool hasDebuggingClient();
protected:
virtual void statusChanged(Status);
virtual void messageReceived(const QByteArray &);
private:
friend class QDeclarativeDebugServer;
};
QT_END_NAMESPACE
QT_END_HEADER
#endif // QDECLARATIVEDEBUGSERVICE_H

View File

@@ -40,6 +40,7 @@
****************************************************************************/
#include "jsdebuggeragent.h"
#include "qt_private/qdeclarativedebughelper_p.h"
#include <QtCore/qcoreapplication.h>
#include <QtCore/qset.h>
@@ -49,7 +50,6 @@
#include <QtCore/QUrl>
#include <QtCore/QDateTime>
#include <QtScript/qscriptvalueiterator.h>
#include <private/qdeclarativeengine_p.h>
namespace QmlJSDebugger {
@@ -193,7 +193,7 @@ JSDebuggerAgent::JSDebuggerAgent(QScriptEngine *engine)
JSDebuggerAgent::JSDebuggerAgent(QDeclarativeEngine *engine)
: QDeclarativeDebugService("JSDebugger")
, QScriptEngineAgent(QDeclarativeEnginePrivate::getScriptEngine(engine))
, QScriptEngineAgent(QDeclarativeDebugHelper::getScriptEngine(engine))
, state(NoState)
{}
@@ -511,9 +511,9 @@ void JSDebuggerAgent::continueExec()
loop.quit();
}
void JSDebuggerAgent::enabledChanged(bool on)
void JSDebuggerAgent::statusChanged(Status status)
{
engine()->setAgent(on ? this : 0);
engine()->setAgent((status == QDeclarativeDebugService::Enabled) ? this : 0);
}
} // namespace QmlJSDebugger

View File

@@ -1,17 +0,0 @@
# Try to find location of Qt private headers (see README)
isEmpty(QT_PRIVATE_HEADERS) {
QT_PRIVATE_HEADERS = $$[QT_INSTALL_HEADERS]
}
INCLUDEPATH += \
$${QT_PRIVATE_HEADERS} \
$${QT_PRIVATE_HEADERS}/QtCore \
$${QT_PRIVATE_HEADERS}/QtGui \
$${QT_PRIVATE_HEADERS}/QtScript \
$${QT_PRIVATE_HEADERS}/QtDeclarative
DEPENDPATH += \
$${QT_PRIVATE_HEADERS} \
$${QT_PRIVATE_HEADERS}/QtCore \
$${QT_PRIVATE_HEADERS}/QtGui \
$${QT_PRIVATE_HEADERS}/QtScript \
$${QT_PRIVATE_HEADERS}/QtDeclarative

View File

@@ -60,9 +60,9 @@ QDeclarativeObserverService *QDeclarativeObserverService::instance()
return serviceInstance();
}
void QDeclarativeObserverService::enabledChanged(bool enabled)
void QDeclarativeObserverService::statusChanged(Status status)
{
emit debuggingClientChanged(enabled);
emit debuggingClientChanged((status == Enabled));
}
void QDeclarativeObserverService::messageReceived(const QByteArray &message)
@@ -236,4 +236,12 @@ QString QDeclarativeObserverService::idStringForObject(QObject *obj) const
return idString;
}
void QDeclarativeObserverService::sendMessage(const QByteArray &message)
{
if (status() != Enabled)
return;
QDeclarativeDebugService::sendMessage(message);
}
} // namespace QmlJSDebugger

View File

@@ -39,6 +39,8 @@
#include "qmltoolbar.h"
#include "jsdebuggeragent.h"
#include "qt_private/qdeclarativedebughelper_p.h"
#include <QDeclarativeItem>
#include <QDeclarativeEngine>
#include <QDeclarativeContext>
@@ -47,10 +49,7 @@
#include <QMouseEvent>
#include <QGraphicsObject>
#include <QApplication>
#include <QAbstractAnimation>
#include <private/qdeclarativeengine_p.h>
#include <private/qabstractanimation_p.h>
namespace QmlJSDebugger {
@@ -118,9 +117,6 @@ QDeclarativeViewObserver::QDeclarativeViewObserver(QDeclarativeView *view, QObje
data->createToolbar();
data->_q_changeToSingleSelectTool();
// always start debug mode - that's what this design view is for.
setDebugMode(true);
}
QDeclarativeViewObserver::~QDeclarativeViewObserver()
@@ -626,11 +622,13 @@ void QDeclarativeViewObserver::continueExecution(qreal slowdownFactor)
data->slowdownFactor = slowdownFactor;
static const qreal animSpeedSnapDelta = 0.01f;
bool useStandardSpeed = (qAbs(1.0f - data->slowdownFactor) < animSpeedSnapDelta);
QUnifiedTimer *timer = QUnifiedTimer::instance();
timer->setSlowdownFactor(data->slowdownFactor);
timer->setSlowModeEnabled(!useStandardSpeed);
qreal slowDownFactor = data->slowdownFactor;
if (qAbs(1.0f - slowDownFactor) < animSpeedSnapDelta) {
slowDownFactor = 1.0f;
}
QDeclarativeDebugHelper::setAnimationSlowDownFactor(slowDownFactor);
data->executionPaused = false;
emit executionStarted(data->slowdownFactor);
@@ -639,9 +637,7 @@ void QDeclarativeViewObserver::continueExecution(qreal slowdownFactor)
void QDeclarativeViewObserver::pauseExecution()
{
QUnifiedTimer *timer = QUnifiedTimer::instance();
timer->setSlowdownFactor(0);
timer->setSlowModeEnabled(true);
QDeclarativeDebugHelper::setAnimationSlowDownFactor(0.0f);
data->executionPaused = true;
emit executionPaused();
@@ -796,7 +792,7 @@ void QDeclarativeViewObserverPrivate::createToolbar()
void QDeclarativeViewObserver::setDebugMode(bool isDebugMode)
{
if (isDebugMode && !data->jsDebuggerAgent)
data->jsDebuggerAgent = new JSDebuggerAgent(QDeclarativeEnginePrivate::getScriptEngine(data->view->engine()));
data->jsDebuggerAgent = new JSDebuggerAgent(data->view->engine());
}
} //namespace QmlJSDebugger

View File

@@ -27,8 +27,8 @@
**
**************************************************************************/
#ifndef QDECLARATIVEDESIGNVIEW_P_H
#define QDECLARATIVEDESIGNVIEW_P_H
#ifndef QDECLARATIVEVIEWOBSERVER_P_H
#define QDECLARATIVEVIEWOBSERVER_P_H
#include <QWeakPointer>
#include <QPointF>
@@ -138,4 +138,4 @@ public:
} // namespace QmlJSDebugger
#endif // QDECLARATIVEDESIGNVIEW_P_H
#endif // QDECLARATIVEVIEWOBSERVER_P_H

View File

@@ -1,6 +1,6 @@
QT += declarative script
INCLUDEPATH += $$PWD $$PWD/include editor
DEPENDPATH += $$PWD $$PWD/include editor
INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD $$PWD/include editor $$PWD/qt-private
contains(CONFIG, dll) {
DEFINES += BUILD_QMLJSDEBUGGER_LIB
@@ -8,28 +8,28 @@ contains(CONFIG, dll) {
DEFINES += BUILD_QMLJSDEBUGGER_STATIC_LIB
}
include($$PWD/private_headers.pri)
## Input
HEADERS += \
$$PWD/include/jsdebuggeragent.h \
$$PWD/include/qmljsdebugger_global.h
include/jsdebuggeragent.h \
include/qmljsdebugger_global.h \
include/qt_private/qdeclarativedebughelper_p.h \
include/qt_private/qdeclarativedebugservice_p.h
SOURCES += \
$$PWD/jsdebuggeragent.cpp
jsdebuggeragent.cpp
contains(DEFINES, QMLOBSERVER) {
include($$PWD/editor/editor.pri)
HEADERS += \
$$PWD/include/qdeclarativeviewobserver.h \
$$PWD/include/qdeclarativeobserverservice.h \
$$PWD/include/qmlobserverconstants.h \
$$PWD/qdeclarativeviewobserver_p.h
include/qdeclarativeviewobserver.h \
include/qdeclarativeobserverservice.h \
include/qmlobserverconstants.h \
qdeclarativeviewobserver_p.h
SOURCES += \
$$PWD/qdeclarativeviewobserver.cpp \
$$PWD/qdeclarativeobserverservice.cpp
qdeclarativeviewobserver.cpp \
qdeclarativeobserverservice.cpp
}
OTHER_FILES += $$PWD/qmljsdebugger.pri
OTHER_FILES += qmljsdebugger.pri

View File

@@ -16,8 +16,6 @@ exists($$PWD/qmljsdebugger/qmljsdebugger-lib.pri) {
include($$PWD/../qmljsdebugger/qmljsdebugger-lib.pri)
}
DESTDIR = $$IDE_BIN_PATH
mac {
QMAKE_INFO_PLIST=Info_mac.plist
TARGET=QMLObserver

View File

@@ -80,6 +80,8 @@ QWidget { //This is a special doubleSpinBox that does color coding for states
decimals: 1;
keyboardTracking: false;
enabled: !backendValue.isBound && doubleSpinBox.enabled;
minimum: -1000
maximum: 1000
property bool readingFromBackend: false;
property real valueFromBackend: doubleSpinBox.backendValue.value;

View File

@@ -17,8 +17,7 @@ QScrollArea {
rightMargin: 0;
spacing: 0;
Visibility {}
Transformation {}
Transformation {}
QScrollArea {
}

View File

@@ -9,8 +9,8 @@ QWidget {
property variant caption;
property variant maximumValue: 99
property variant minimumValue: 0
property variant maximumValue: 1000
property variant minimumValue: -1000
property variant step: 1
property bool slider: true
property alias alignment: label.alignment

View File

@@ -13,10 +13,28 @@ PropertyFrame {
leftMargin: 0;
rightMargin: 0;
spacing: 0;
Type {
}
Geometry {
}
Visibility {
}
HorizontalWhiteLine {
maximumHeight: 4;
styleSheet: "QLineEdit {border: 2px solid #707070; min-height: 0px; max-height: 0px;}";
}
Switches {
}
HorizontalWhiteLine {
}
ScrollArea {
styleSheetFile: ":/qmldesigner/scrollbar.css";
widgetResizable: true;
@@ -35,8 +53,6 @@ PropertyFrame {
leftMargin: 0;
rightMargin: 0;
spacing: 0;
Type {
}
WidgetLoader {
id: specificsOne;

View File

@@ -15,10 +15,7 @@ QScrollArea {
bottomMargin: 0;
leftMargin: 0;
rightMargin: 0;
spacing: 0
Geometry {
}
spacing: 0;
Layout {
id: layoutBox;

View File

@@ -35,8 +35,8 @@ QFrame {
id: layoutMode;
checkable: true;
checked: false;
toolTip: qsTr("layout and geometry");
text: qsTr("Geometry");
toolTip: qsTr("layout");
text: qsTr("Layout");
onClicked: {
extendedMode.checked = false;
standardMode.checked = false;

Some files were not shown because too many files have changed in this diff Show More