Merge remote branch 'origin/2.1'
Conflicts: share/qtcreator/templates/mobileapp/app.pro share/qtcreator/templates/qmlapp/app.pro src/plugins/cpptools/cpptools.pro
3
dist/changes-2.1 → dist/changes-2.1.0
vendored
@@ -14,6 +14,9 @@ General
|
|||||||
Editing
|
Editing
|
||||||
|
|
||||||
C++ Support
|
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
|
* Add new %FILENAME%, %CLASS% placeholders to license template
|
||||||
|
|
||||||
Project Support
|
Project Support
|
||||||
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 119 KiB |
BIN
doc/images/qtcreator-build-environment.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
doc/images/qtcreator-build-steps-custom.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 22 KiB |
BIN
doc/images/qtcreator-cpp-class-wizard.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 76 KiB |
@@ -1818,21 +1818,7 @@
|
|||||||
|
|
||||||
You use wizards to create and import several types of projects and files, such
|
You use wizards to create and import several types of projects and files, such
|
||||||
as Qt GUI or console applications and Qt Quick applications.
|
as Qt GUI or console applications and Qt Quick applications.
|
||||||
You can also use
|
You can use wizards also to add individual files to your projects.
|
||||||
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
|
|
||||||
|
|
||||||
The wizards prompt you to enter the settings needed
|
The wizards prompt you to enter the settings needed
|
||||||
for that particular type of project and create the necessary files for you.
|
for that particular type of project and create the necessary files for you.
|
||||||
@@ -1863,6 +1849,14 @@
|
|||||||
path.
|
path.
|
||||||
|
|
||||||
\image qtcreator-intro-and-location.png
|
\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
|
\o Specify the name of the class you want to create and using the
|
||||||
drop-down menu select its base class type.
|
drop-down menu select its base class type.
|
||||||
|
|
||||||
@@ -1878,10 +1872,43 @@
|
|||||||
\image qtcreator-new-project-summary.png
|
\image qtcreator-new-project-summary.png
|
||||||
\endlist
|
\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,
|
You can create your own project and class wizards. For more information,
|
||||||
see \l{Adding New Custom Wizards}.
|
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
|
Qt Creator determines whether to display files from the project folder
|
||||||
in the \gui Projects pane depending on the file type (.pro, .pri, .cpp,
|
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.
|
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.
|
\note Shadow building is not supported by the Symbian build system.
|
||||||
Also, shadow building on Windows is not supported for Maemo.
|
Also, shadow building on Windows is not supported for Maemo.
|
||||||
If you only build for one target platform, you can deselect
|
If you only build for one target platform, you can deselect
|
||||||
the \gui{Shadow Build} checkbox.
|
the \gui{Shadow build} checkbox.
|
||||||
\endlist
|
\endlist
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
@@ -2979,6 +3035,23 @@
|
|||||||
|
|
||||||
\image qtcreator-build-steps.png "Build steps"
|
\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
|
\section1 Clean Steps
|
||||||
|
|
||||||
You can use the cleaning process to remove intermediate files. This process
|
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}:
|
You can define the cleaning steps for your builds in the \gui{Clean Steps}:
|
||||||
\list
|
\list
|
||||||
\o To add a clean step using make or a custom process, click
|
\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
|
By default, custom steps are disabled. To activate a custom step,
|
||||||
checking the \gui{Enable custom process step} check-box.
|
select the \gui{Enable custom process step} check-box.
|
||||||
\o To remove a clean step, click \gui{Remove Item}.
|
\o To remove a clean step, click \gui{Remove Item}.
|
||||||
\o To change the order of steps, click
|
\o To change the order of steps, click
|
||||||
\inlineimage qtcreator-movestep.png
|
\inlineimage qtcreator-movestep.png
|
||||||
@@ -3010,6 +3083,8 @@
|
|||||||
variables or add, reset and unset new variables based on your project
|
variables or add, reset and unset new variables based on your project
|
||||||
requirements.
|
requirements.
|
||||||
|
|
||||||
|
\image qtcreator-build-environment.png "Build Environment"
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -4610,17 +4685,21 @@
|
|||||||
\title Managing Sessions
|
\title Managing Sessions
|
||||||
|
|
||||||
When you exit Qt Creator, a snapshot of your current workspace is stored
|
When you exit Qt Creator, a snapshot of your current workspace is stored
|
||||||
as a session.
|
as a \e session. A session is an arbitrary collection of:
|
||||||
A session is a collection of:
|
|
||||||
|
|
||||||
\list
|
\list
|
||||||
\o Open projects with their dependencies
|
\o Open projects with their dependencies (including SUBDIRS projects)
|
||||||
\o Open editors
|
\o Open editors
|
||||||
\o Breakpoints and watches
|
\o Breakpoints and watches
|
||||||
\o Bookmarks
|
\o Bookmarks
|
||||||
\endlist
|
\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
|
while, you can save your workspace as a session. This makes it easier
|
||||||
to return to working on the first project later.
|
to return to working on the first project later.
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,26 @@ defineReplace(qtLibraryName) {
|
|||||||
return($$RET)
|
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
|
# For use in custom compilers which just copy files
|
||||||
win32:i_flag = i
|
win32:i_flag = i
|
||||||
defineReplace(stripSrcDir) {
|
defineReplace(stripSrcDir) {
|
||||||
|
|||||||
@@ -693,7 +693,8 @@ def makeValue(type, init):
|
|||||||
type = stripClassTag(type)
|
type = stripClassTag(type)
|
||||||
if type.find(":") >= 0:
|
if type.find(":") >= 0:
|
||||||
type = "'" + type + "'"
|
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)
|
gdb.execute("set *$d = {%s}" % init)
|
||||||
value = parseAndEvaluate("$d").dereference()
|
value = parseAndEvaluate("$d").dereference()
|
||||||
#warn(" TYPE: %s" % value.type)
|
#warn(" TYPE: %s" % value.type)
|
||||||
|
|||||||
@@ -723,7 +723,8 @@ def qdump__QObject(d, item):
|
|||||||
if d.isExpandedIName(item.iname + ".properties"):
|
if d.isExpandedIName(item.iname + ".properties"):
|
||||||
# FIXME: Make this global. Don't leak.
|
# FIXME: Make this global. Don't leak.
|
||||||
variant = "'%sQVariant'" % d.ns
|
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")
|
gdb.execute("set $d.d.is_shared = 0")
|
||||||
|
|
||||||
with Children(d, [propertyCount, 500]):
|
with Children(d, [propertyCount, 500]):
|
||||||
@@ -769,7 +770,8 @@ def qdump__QObject(d, item):
|
|||||||
# % (d.ns, item.value.address, propertyName)
|
# % (d.ns, item.value.address, propertyName)
|
||||||
#exp = '"((\'%sQObject\'*)%s)"' % (d.ns, item.value.address,)
|
#exp = '"((\'%sQObject\'*)%s)"' % (d.ns, item.value.address,)
|
||||||
#warn("EXPRESSION: %s" % exp)
|
#warn("EXPRESSION: %s" % exp)
|
||||||
value = call(item.value, 'property("%s")' % propertyName)
|
value = call(item.value, 'property(%s)'
|
||||||
|
% cleanAddress(metaStringData + metaData[offset]))
|
||||||
value1 = value["d"]
|
value1 = value["d"]
|
||||||
#warn(" CODE: %s" % value1["type"])
|
#warn(" CODE: %s" % value1["type"])
|
||||||
# Type 1 and 2 are bool and int. Try to save a few cycles in this case:
|
# Type 1 and 2 are bool and int. Try to save a few cycles in this case:
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
This is Creator's default directory for syntax highlight definitions.
|
|
||||||
You can download them through the Generic Highlighter options dialog.
|
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module>
|
<module>
|
||||||
<type name="QmlProject.Project">
|
<type name="QmlProject.Project">
|
||||||
|
<exports>
|
||||||
|
<export module="QmlProject" version="1.0" type="Project"/>
|
||||||
|
</exports>
|
||||||
<property name="sourceDirectory" type="string"/>
|
<property name="sourceDirectory" type="string"/>
|
||||||
<property name="importPaths" type="string" isList="true"/>
|
<property name="importPaths" type="string" isList="true"/>
|
||||||
<property name="content" type="QmlProjectItem" isList="true"/>
|
<property name="content" type="QmlProjectItem" isList="true"/>
|
||||||
@@ -14,14 +17,26 @@
|
|||||||
<property name="files" type="string" isList="true"/>
|
<property name="files" type="string" isList="true"/>
|
||||||
</type>
|
</type>
|
||||||
<type name="QmlProject.QmlFiles" extends="FileFilterBaseItem">
|
<type name="QmlProject.QmlFiles" extends="FileFilterBaseItem">
|
||||||
|
<exports>
|
||||||
|
<export module="QmlProject" version="1.0" type="QmlFiles"/>
|
||||||
|
</exports>
|
||||||
</type>
|
</type>
|
||||||
<type name="QmlProject.JavaScriptFiles" extends="FileFilterBaseItem">
|
<type name="QmlProject.JavaScriptFiles" extends="FileFilterBaseItem">
|
||||||
|
<exports>
|
||||||
|
<export module="QmlProject" version="1.0" type="JavaScriptFiles"/>
|
||||||
|
</exports>
|
||||||
<property name="filter" type="string"/>
|
<property name="filter" type="string"/>
|
||||||
</type>
|
</type>
|
||||||
<type name="QmlProject.ImageFiles" extends="FileFilterBaseItem">
|
<type name="QmlProject.ImageFiles" extends="FileFilterBaseItem">
|
||||||
|
<exports>
|
||||||
|
<export module="QmlProject" version="1.0" type="ImageFiles"/>
|
||||||
|
</exports>
|
||||||
<property name="filter" type="string"/>
|
<property name="filter" type="string"/>
|
||||||
</type>
|
</type>
|
||||||
<type name="QmlProject.CssFiles" extends="FileFilterBaseItem">
|
<type name="QmlProject.CssFiles" extends="FileFilterBaseItem">
|
||||||
|
<exports>
|
||||||
|
<export module="QmlProject" version="1.0" type="CssFiles"/>
|
||||||
|
</exports>
|
||||||
<property name="filter" type="string"/>
|
<property name="filter" type="string"/>
|
||||||
</type>
|
</type>
|
||||||
</module>
|
</module>
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module>
|
<module>
|
||||||
<type name="QDeclarativeViewer.Screen">
|
<type name="QDeclarativeViewer.Screen">
|
||||||
|
<exports>
|
||||||
|
<export module="QDeclarativeViewer" version="1.0" type="Screen"/>
|
||||||
|
</exports>
|
||||||
<enum name="Orientation">
|
<enum name="Orientation">
|
||||||
<enumerator name="UnknownOrientation" value="0"/>
|
<enumerator name="UnknownOrientation" value="0"/>
|
||||||
<enumerator name="Portrait" value="1"/>
|
<enumerator name="Portrait" value="1"/>
|
||||||
|
|||||||
@@ -15,15 +15,15 @@
|
|||||||
#include <QtDeclarative/private/qdeclarativeopenmetaobject_p.h>
|
#include <QtDeclarative/private/qdeclarativeopenmetaobject_p.h>
|
||||||
#include <QtDeclarative/QDeclarativeView>
|
#include <QtDeclarative/QDeclarativeView>
|
||||||
|
|
||||||
static QHash<QByteArray, const QDeclarativeType *> qmlTypeByCppName;
|
static QHash<QByteArray, QList<const QDeclarativeType *> > qmlTypesByCppName;
|
||||||
static QHash<QByteArray, QByteArray> cppToQml;
|
static QHash<QByteArray, QByteArray> cppToId;
|
||||||
|
|
||||||
QByteArray convertToQmlType(const QByteArray &cppName)
|
QByteArray convertToId(const QByteArray &cppName)
|
||||||
{
|
{
|
||||||
QByteArray qmlName = cppToQml.value(cppName, cppName);
|
QByteArray idName = cppToId.value(cppName, cppName);
|
||||||
qmlName.replace("::", ".");
|
idName.replace("::", ".");
|
||||||
qmlName.replace("/", ".");
|
idName.replace("/", ".");
|
||||||
return qmlName;
|
return idName;
|
||||||
}
|
}
|
||||||
|
|
||||||
void erasure(QByteArray *typeName, bool *isList, bool *isPointer)
|
void erasure(QByteArray *typeName, bool *isList, bool *isPointer)
|
||||||
@@ -41,7 +41,7 @@ void erasure(QByteArray *typeName, bool *isList, bool *isPointer)
|
|||||||
erasure(typeName, isList, isPointer);
|
erasure(typeName, isList, isPointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
*typeName = convertToQmlType(*typeName);
|
*typeName = convertToId(*typeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void processMetaObject(const QMetaObject *meta, QSet<const QMetaObject *> *metas)
|
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));
|
attributes.append(QXmlStreamAttribute("name", name));
|
||||||
|
|
||||||
const QString typeName = convertToQmlType(meth.typeName());
|
const QString typeName = convertToId(meth.typeName());
|
||||||
if (! typeName.isEmpty())
|
if (! typeName.isEmpty())
|
||||||
attributes.append(QXmlStreamAttribute("type", typeName));
|
attributes.append(QXmlStreamAttribute("type", typeName));
|
||||||
|
|
||||||
@@ -187,16 +187,12 @@ public:
|
|||||||
|
|
||||||
void dump(const QMetaObject *meta, QXmlStreamWriter *xml)
|
void dump(const QMetaObject *meta, QXmlStreamWriter *xml)
|
||||||
{
|
{
|
||||||
QByteArray qmlTypeName = convertToQmlType(meta->className());
|
QByteArray id = convertToId(meta->className());
|
||||||
|
|
||||||
xml->writeStartElement("type");
|
xml->writeStartElement("type");
|
||||||
|
|
||||||
QXmlStreamAttributes attributes;
|
QXmlStreamAttributes attributes;
|
||||||
attributes.append(QXmlStreamAttribute("name", qmlTypeName));
|
attributes.append(QXmlStreamAttribute("name", id));
|
||||||
|
|
||||||
if (const QDeclarativeType *qmlTy = qmlTypeByCppName.value(meta->className())) {
|
|
||||||
attributes.append(QXmlStreamAttribute("version", QString("%1.%2").arg(qmlTy->majorVersion()).arg(qmlTy->minorVersion())));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int index = meta->classInfoCount() - 1 ; index >= 0 ; --index) {
|
for (int index = meta->classInfoCount() - 1 ; index >= 0 ; --index) {
|
||||||
QMetaClassInfo classInfo = meta->classInfo(index);
|
QMetaClassInfo classInfo = meta->classInfo(index);
|
||||||
@@ -206,16 +202,31 @@ void dump(const QMetaObject *meta, QXmlStreamWriter *xml)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString version;
|
|
||||||
|
|
||||||
if (meta->superClass())
|
if (meta->superClass())
|
||||||
attributes.append(QXmlStreamAttribute("extends", convertToQmlType(meta->superClass()->className())));
|
attributes.append(QXmlStreamAttribute("extends", convertToId(meta->superClass()->className())));
|
||||||
|
|
||||||
if (! version.isEmpty())
|
|
||||||
attributes.append(QXmlStreamAttribute("version", version));
|
|
||||||
|
|
||||||
xml->writeAttributes(attributes);
|
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)
|
for (int index = meta->enumeratorOffset(); index < meta->enumeratorCount(); ++index)
|
||||||
dump(meta->enumerator(index), xml);
|
dump(meta->enumerator(index), xml);
|
||||||
|
|
||||||
@@ -234,7 +245,7 @@ void writeEasingCurve(QXmlStreamWriter *xml)
|
|||||||
{
|
{
|
||||||
QXmlStreamAttributes attributes;
|
QXmlStreamAttributes attributes;
|
||||||
attributes.append(QXmlStreamAttribute("name", "QEasingCurve"));
|
attributes.append(QXmlStreamAttribute("name", "QEasingCurve"));
|
||||||
attributes.append(QXmlStreamAttribute("extends", "Qt.Easing"));
|
attributes.append(QXmlStreamAttribute("extends", "QDeclarativeEasingValueType"));
|
||||||
xml->writeAttributes(attributes);
|
xml->writeAttributes(attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,8 +273,22 @@ int main(int argc, char *argv[])
|
|||||||
if (!pluginImportPath.isEmpty())
|
if (!pluginImportPath.isEmpty())
|
||||||
engine->addImportPath(pluginImportPath);
|
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;
|
QByteArray importCode;
|
||||||
importCode += "import Qt 4.7;\n";
|
importCode += "import Qt 4.7;\n";
|
||||||
|
if (hasQtQuickModule) {
|
||||||
|
importCode += "import QtQuick 1.0;\n";
|
||||||
|
}
|
||||||
if (pluginImportName.isEmpty()) {
|
if (pluginImportName.isEmpty()) {
|
||||||
importCode += "import Qt.labs.particles 4.7;\n";
|
importCode += "import Qt.labs.particles 4.7;\n";
|
||||||
importCode += "import Qt.labs.gestures 4.7;\n";
|
importCode += "import Qt.labs.gestures 4.7;\n";
|
||||||
@@ -284,25 +309,25 @@ int main(int argc, char *argv[])
|
|||||||
qDebug() << c.errorString();
|
qDebug() << c.errorString();
|
||||||
}
|
}
|
||||||
|
|
||||||
cppToQml.insert("QString", "string");
|
cppToId.insert("QString", "string");
|
||||||
cppToQml.insert("QDeclarativeEasingValueType::Type", "Type");
|
cppToId.insert("QDeclarativeEasingValueType::Type", "Type");
|
||||||
|
|
||||||
QSet<const QMetaObject *> metas;
|
QSet<const QMetaObject *> metas;
|
||||||
|
|
||||||
metas.insert(FriendlyQObject::qtMeta());
|
metas.insert(FriendlyQObject::qtMeta());
|
||||||
|
|
||||||
QMultiHash<QByteArray, QByteArray> extensions;
|
QHash<QByteArray, QSet<QByteArray> > extensions;
|
||||||
foreach (const QDeclarativeType *ty, QDeclarativeMetaType::qmlTypes()) {
|
foreach (const QDeclarativeType *ty, QDeclarativeMetaType::qmlTypes()) {
|
||||||
qmlTypeByCppName.insert(ty->metaObject()->className(), ty);
|
qmlTypesByCppName[ty->metaObject()->className()].append(ty);
|
||||||
if (ty->isExtendedType()) {
|
if (ty->isExtendedType()) {
|
||||||
extensions.insert(ty->typeName(), ty->metaObject()->className());
|
extensions[ty->typeName()].insert(ty->metaObject()->className());
|
||||||
} else {
|
} else {
|
||||||
cppToQml.insert(ty->metaObject()->className(), ty->qmlTypeName());
|
cppToId.insert(ty->metaObject()->className(), ty->metaObject()->className());
|
||||||
}
|
}
|
||||||
processDeclarativeType(ty, &metas);
|
processDeclarativeType(ty, &metas);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adjust qml names of extended objects.
|
// Adjust ids of extended objects.
|
||||||
// The chain ends up being:
|
// The chain ends up being:
|
||||||
// __extended__.originalname - the base object
|
// __extended__.originalname - the base object
|
||||||
// __extension_0_.originalname - first extension
|
// __extension_0_.originalname - first extension
|
||||||
@@ -310,14 +335,19 @@ int main(int argc, char *argv[])
|
|||||||
// __extension_n-2_.originalname - second to last extension
|
// __extension_n-2_.originalname - second to last extension
|
||||||
// originalname - last extension
|
// originalname - last extension
|
||||||
foreach (const QByteArray &extendedCpp, extensions.keys()) {
|
foreach (const QByteArray &extendedCpp, extensions.keys()) {
|
||||||
const QByteArray extendedQml = cppToQml.value(extendedCpp);
|
const QByteArray extendedId = cppToId.value(extendedCpp);
|
||||||
cppToQml.insert(extendedCpp, "__extended__." + extendedQml);
|
cppToId.insert(extendedCpp, "__extended__." + extendedId);
|
||||||
QList<QByteArray> extensionCppNames = extensions.values(extendedCpp);
|
QSet<QByteArray> extensionCppNames = extensions.value(extendedCpp);
|
||||||
for (int i = 0; i < extensionCppNames.size() - 1; ++i) {
|
int c = 0;
|
||||||
QByteArray adjustedName = QString("__extension__%1.%2").arg(QString::number(i), QString(extendedQml)).toAscii();
|
foreach (const QByteArray &extensionCppName, extensionCppNames) {
|
||||||
cppToQml.insert(extensionCppNames.value(i), adjustedName);
|
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()) {
|
foreach (const QDeclarativeType *ty, QDeclarativeMetaType::qmlTypes()) {
|
||||||
@@ -350,13 +380,13 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
QMap<QString, const QMetaObject *> nameToMeta;
|
QMap<QString, const QMetaObject *> nameToMeta;
|
||||||
foreach (const QMetaObject *meta, metas) {
|
foreach (const QMetaObject *meta, metas) {
|
||||||
nameToMeta.insert(convertToQmlType(meta->className()), meta);
|
nameToMeta.insert(convertToId(meta->className()), meta);
|
||||||
}
|
}
|
||||||
foreach (const QMetaObject *meta, nameToMeta) {
|
foreach (const QMetaObject *meta, nameToMeta) {
|
||||||
dump(meta, &xml);
|
dump(meta, &xml);
|
||||||
}
|
}
|
||||||
|
|
||||||
// define QEasingCurve as an extension of Qt.Easing
|
// define QEasingCurve as an extension of QDeclarativeEasingValueType
|
||||||
writeEasingCurve(&xml);
|
writeEasingCurve(&xml);
|
||||||
|
|
||||||
xml.writeEndElement();
|
xml.writeEndElement();
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "abstractformeditortool.h"
|
#include "abstractformeditortool.h"
|
||||||
#include "qdeclarativeviewobserver.h"
|
#include "qdeclarativeviewobserver.h"
|
||||||
#include "qdeclarativeviewobserver_p.h"
|
#include "../qdeclarativeviewobserver_p.h"
|
||||||
|
|
||||||
#include <QDeclarativeEngine>
|
#include <QDeclarativeEngine>
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#include "rubberbandselectionmanipulator.h"
|
#include "rubberbandselectionmanipulator.h"
|
||||||
#include "qdeclarativeviewobserver_p.h"
|
#include "../qdeclarativeviewobserver_p.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#include "selectionindicator.h"
|
#include "selectionindicator.h"
|
||||||
#include "qdeclarativeviewobserver_p.h"
|
#include "../qdeclarativeviewobserver_p.h"
|
||||||
#include "qmlobserverconstants.h"
|
#include "qmlobserverconstants.h"
|
||||||
|
|
||||||
#include <QPen>
|
#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
|
// set selections to also all children if they are not editor items
|
||||||
|
|
||||||
foreach (QWeakPointer<QGraphicsObject> obj, itemList) {
|
foreach (QWeakPointer<QGraphicsObject> object, itemList) {
|
||||||
if (obj.isNull())
|
if (object.isNull())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
QGraphicsItem *item = obj.data();
|
QGraphicsItem *item = object.data();
|
||||||
|
|
||||||
QGraphicsPolygonItem *newSelectionIndicatorGraphicsItem = new QGraphicsPolygonItem(m_layerItem.data());
|
QGraphicsPolygonItem *newSelectionIndicatorGraphicsItem = new QGraphicsPolygonItem(m_layerItem.data());
|
||||||
if (!m_indicatorShapeHash.contains(item)) {
|
if (!m_indicatorShapeHash.contains(item)) {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
#include "layeritem.h"
|
#include "layeritem.h"
|
||||||
|
|
||||||
//#include "resizehandleitem.h"
|
//#include "resizehandleitem.h"
|
||||||
#include "qdeclarativeviewobserver_p.h"
|
#include "../qdeclarativeviewobserver_p.h"
|
||||||
|
|
||||||
#include <QDeclarativeEngine>
|
#include <QDeclarativeEngine>
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "singleselectionmanipulator.h"
|
#include "singleselectionmanipulator.h"
|
||||||
#include "qdeclarativeviewobserver.h"
|
#include "qdeclarativeviewobserver.h"
|
||||||
#include "qdeclarativeviewobserver_p.h"
|
#include "../qdeclarativeviewobserver_p.h"
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
|
|
||||||
namespace QmlJSDebugger {
|
namespace QmlJSDebugger {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "subcomponenteditortool.h"
|
#include "subcomponenteditortool.h"
|
||||||
#include "qdeclarativeviewobserver_p.h"
|
#include "../qdeclarativeviewobserver_p.h"
|
||||||
#include "subcomponentmasklayeritem.h"
|
#include "subcomponentmasklayeritem.h"
|
||||||
#include "layeritem.h"
|
#include "layeritem.h"
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "zoomtool.h"
|
#include "zoomtool.h"
|
||||||
#include "qdeclarativeviewobserver_p.h"
|
#include "../qdeclarativeviewobserver_p.h"
|
||||||
|
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QWheelEvent>
|
#include <QWheelEvent>
|
||||||
|
|||||||
@@ -57,9 +57,10 @@
|
|||||||
#include <QtScript/QScriptValue>
|
#include <QtScript/QScriptValue>
|
||||||
#include <QtCore/QEventLoop>
|
#include <QtCore/QEventLoop>
|
||||||
#include <QtCore/QSet>
|
#include <QtCore/QSet>
|
||||||
#include <private/qdeclarativedebugservice_p.h>
|
|
||||||
#include <QtCore/QStringList>
|
#include <QtCore/QStringList>
|
||||||
|
|
||||||
|
#include "qt_private/qdeclarativedebugservice_p.h"
|
||||||
|
|
||||||
#include "qmljsdebugger_global.h"
|
#include "qmljsdebugger_global.h"
|
||||||
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QScriptContext);
|
QT_FORWARD_DECLARE_CLASS(QScriptContext);
|
||||||
@@ -103,7 +104,7 @@ public:
|
|||||||
const QVariant &argument = QVariant());
|
const QVariant &argument = QVariant());
|
||||||
|
|
||||||
void messageReceived(const QByteArray &);
|
void messageReceived(const QByteArray &);
|
||||||
void enabledChanged(bool);
|
void statusChanged(Status status);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
// void pauses();
|
// void pauses();
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
#ifndef QDECLARATIVEDESIGNDEBUGSERVER_H
|
#ifndef QDECLARATIVEDESIGNDEBUGSERVER_H
|
||||||
#define QDECLARATIVEDESIGNDEBUGSERVER_H
|
#define QDECLARATIVEDESIGNDEBUGSERVER_H
|
||||||
|
|
||||||
#include <private/qdeclarativedebugservice_p.h>
|
#include "qt_private/qdeclarativedebugservice_p.h"
|
||||||
#include "qmlobserverconstants.h"
|
#include "qmlobserverconstants.h"
|
||||||
#include "qmljsdebugger_global.h"
|
#include "qmljsdebugger_global.h"
|
||||||
|
|
||||||
@@ -70,6 +70,8 @@ public:
|
|||||||
void reloaded();
|
void reloaded();
|
||||||
QString idStringForObject(QObject *obj) const;
|
QString idStringForObject(QObject *obj) const;
|
||||||
|
|
||||||
|
void sendMessage(const QByteArray &message);
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void selectedColorChanged(const QColor &color);
|
void selectedColorChanged(const QColor &color);
|
||||||
void contextPathUpdated(const QStringList &contextPath);
|
void contextPathUpdated(const QStringList &contextPath);
|
||||||
@@ -98,7 +100,7 @@ Q_SIGNALS:
|
|||||||
void clearComponentCacheRequested();
|
void clearComponentCacheRequested();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void enabledChanged(bool enabled);
|
virtual void statusChanged(Status status);
|
||||||
virtual void messageReceived(const QByteArray &);
|
virtual void messageReceived(const QByteArray &);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|
||||||
@@ -40,6 +40,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "jsdebuggeragent.h"
|
#include "jsdebuggeragent.h"
|
||||||
|
#include "qt_private/qdeclarativedebughelper_p.h"
|
||||||
|
|
||||||
#include <QtCore/qcoreapplication.h>
|
#include <QtCore/qcoreapplication.h>
|
||||||
#include <QtCore/qset.h>
|
#include <QtCore/qset.h>
|
||||||
@@ -49,7 +50,6 @@
|
|||||||
#include <QtCore/QUrl>
|
#include <QtCore/QUrl>
|
||||||
#include <QtCore/QDateTime>
|
#include <QtCore/QDateTime>
|
||||||
#include <QtScript/qscriptvalueiterator.h>
|
#include <QtScript/qscriptvalueiterator.h>
|
||||||
#include <private/qdeclarativeengine_p.h>
|
|
||||||
|
|
||||||
namespace QmlJSDebugger {
|
namespace QmlJSDebugger {
|
||||||
|
|
||||||
@@ -193,7 +193,7 @@ JSDebuggerAgent::JSDebuggerAgent(QScriptEngine *engine)
|
|||||||
|
|
||||||
JSDebuggerAgent::JSDebuggerAgent(QDeclarativeEngine *engine)
|
JSDebuggerAgent::JSDebuggerAgent(QDeclarativeEngine *engine)
|
||||||
: QDeclarativeDebugService("JSDebugger")
|
: QDeclarativeDebugService("JSDebugger")
|
||||||
, QScriptEngineAgent(QDeclarativeEnginePrivate::getScriptEngine(engine))
|
, QScriptEngineAgent(QDeclarativeDebugHelper::getScriptEngine(engine))
|
||||||
, state(NoState)
|
, state(NoState)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -511,9 +511,9 @@ void JSDebuggerAgent::continueExec()
|
|||||||
loop.quit();
|
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
|
} // namespace QmlJSDebugger
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -60,9 +60,9 @@ QDeclarativeObserverService *QDeclarativeObserverService::instance()
|
|||||||
return serviceInstance();
|
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)
|
void QDeclarativeObserverService::messageReceived(const QByteArray &message)
|
||||||
@@ -236,4 +236,12 @@ QString QDeclarativeObserverService::idStringForObject(QObject *obj) const
|
|||||||
return idString;
|
return idString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QDeclarativeObserverService::sendMessage(const QByteArray &message)
|
||||||
|
{
|
||||||
|
if (status() != Enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QDeclarativeDebugService::sendMessage(message);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QmlJSDebugger
|
} // namespace QmlJSDebugger
|
||||||
|
|||||||
@@ -39,6 +39,8 @@
|
|||||||
#include "qmltoolbar.h"
|
#include "qmltoolbar.h"
|
||||||
#include "jsdebuggeragent.h"
|
#include "jsdebuggeragent.h"
|
||||||
|
|
||||||
|
#include "qt_private/qdeclarativedebughelper_p.h"
|
||||||
|
|
||||||
#include <QDeclarativeItem>
|
#include <QDeclarativeItem>
|
||||||
#include <QDeclarativeEngine>
|
#include <QDeclarativeEngine>
|
||||||
#include <QDeclarativeContext>
|
#include <QDeclarativeContext>
|
||||||
@@ -47,10 +49,7 @@
|
|||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QGraphicsObject>
|
#include <QGraphicsObject>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
|
||||||
#include <QAbstractAnimation>
|
#include <QAbstractAnimation>
|
||||||
#include <private/qdeclarativeengine_p.h>
|
|
||||||
#include <private/qabstractanimation_p.h>
|
|
||||||
|
|
||||||
namespace QmlJSDebugger {
|
namespace QmlJSDebugger {
|
||||||
|
|
||||||
@@ -118,9 +117,6 @@ QDeclarativeViewObserver::QDeclarativeViewObserver(QDeclarativeView *view, QObje
|
|||||||
data->createToolbar();
|
data->createToolbar();
|
||||||
|
|
||||||
data->_q_changeToSingleSelectTool();
|
data->_q_changeToSingleSelectTool();
|
||||||
|
|
||||||
// always start debug mode - that's what this design view is for.
|
|
||||||
setDebugMode(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QDeclarativeViewObserver::~QDeclarativeViewObserver()
|
QDeclarativeViewObserver::~QDeclarativeViewObserver()
|
||||||
@@ -626,11 +622,13 @@ void QDeclarativeViewObserver::continueExecution(qreal slowdownFactor)
|
|||||||
|
|
||||||
data->slowdownFactor = slowdownFactor;
|
data->slowdownFactor = slowdownFactor;
|
||||||
static const qreal animSpeedSnapDelta = 0.01f;
|
static const qreal animSpeedSnapDelta = 0.01f;
|
||||||
bool useStandardSpeed = (qAbs(1.0f - data->slowdownFactor) < animSpeedSnapDelta);
|
|
||||||
|
|
||||||
QUnifiedTimer *timer = QUnifiedTimer::instance();
|
qreal slowDownFactor = data->slowdownFactor;
|
||||||
timer->setSlowdownFactor(data->slowdownFactor);
|
if (qAbs(1.0f - slowDownFactor) < animSpeedSnapDelta) {
|
||||||
timer->setSlowModeEnabled(!useStandardSpeed);
|
slowDownFactor = 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDeclarativeDebugHelper::setAnimationSlowDownFactor(slowDownFactor);
|
||||||
data->executionPaused = false;
|
data->executionPaused = false;
|
||||||
|
|
||||||
emit executionStarted(data->slowdownFactor);
|
emit executionStarted(data->slowdownFactor);
|
||||||
@@ -639,9 +637,7 @@ void QDeclarativeViewObserver::continueExecution(qreal slowdownFactor)
|
|||||||
|
|
||||||
void QDeclarativeViewObserver::pauseExecution()
|
void QDeclarativeViewObserver::pauseExecution()
|
||||||
{
|
{
|
||||||
QUnifiedTimer *timer = QUnifiedTimer::instance();
|
QDeclarativeDebugHelper::setAnimationSlowDownFactor(0.0f);
|
||||||
timer->setSlowdownFactor(0);
|
|
||||||
timer->setSlowModeEnabled(true);
|
|
||||||
data->executionPaused = true;
|
data->executionPaused = true;
|
||||||
|
|
||||||
emit executionPaused();
|
emit executionPaused();
|
||||||
@@ -796,7 +792,7 @@ void QDeclarativeViewObserverPrivate::createToolbar()
|
|||||||
void QDeclarativeViewObserver::setDebugMode(bool isDebugMode)
|
void QDeclarativeViewObserver::setDebugMode(bool isDebugMode)
|
||||||
{
|
{
|
||||||
if (isDebugMode && !data->jsDebuggerAgent)
|
if (isDebugMode && !data->jsDebuggerAgent)
|
||||||
data->jsDebuggerAgent = new JSDebuggerAgent(QDeclarativeEnginePrivate::getScriptEngine(data->view->engine()));
|
data->jsDebuggerAgent = new JSDebuggerAgent(data->view->engine());
|
||||||
}
|
}
|
||||||
|
|
||||||
} //namespace QmlJSDebugger
|
} //namespace QmlJSDebugger
|
||||||
|
|||||||
@@ -27,8 +27,8 @@
|
|||||||
**
|
**
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#ifndef QDECLARATIVEDESIGNVIEW_P_H
|
#ifndef QDECLARATIVEVIEWOBSERVER_P_H
|
||||||
#define QDECLARATIVEDESIGNVIEW_P_H
|
#define QDECLARATIVEVIEWOBSERVER_P_H
|
||||||
|
|
||||||
#include <QWeakPointer>
|
#include <QWeakPointer>
|
||||||
#include <QPointF>
|
#include <QPointF>
|
||||||
@@ -138,4 +138,4 @@ public:
|
|||||||
|
|
||||||
} // namespace QmlJSDebugger
|
} // namespace QmlJSDebugger
|
||||||
|
|
||||||
#endif // QDECLARATIVEDESIGNVIEW_P_H
|
#endif // QDECLARATIVEVIEWOBSERVER_P_H
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
QT += declarative script
|
QT += declarative script
|
||||||
INCLUDEPATH += $$PWD $$PWD/include editor
|
INCLUDEPATH += $$PWD/include
|
||||||
DEPENDPATH += $$PWD $$PWD/include editor
|
DEPENDPATH += $$PWD $$PWD/include editor $$PWD/qt-private
|
||||||
|
|
||||||
contains(CONFIG, dll) {
|
contains(CONFIG, dll) {
|
||||||
DEFINES += BUILD_QMLJSDEBUGGER_LIB
|
DEFINES += BUILD_QMLJSDEBUGGER_LIB
|
||||||
@@ -8,28 +8,28 @@ contains(CONFIG, dll) {
|
|||||||
DEFINES += BUILD_QMLJSDEBUGGER_STATIC_LIB
|
DEFINES += BUILD_QMLJSDEBUGGER_STATIC_LIB
|
||||||
}
|
}
|
||||||
|
|
||||||
include($$PWD/private_headers.pri)
|
|
||||||
|
|
||||||
## Input
|
## Input
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
$$PWD/include/jsdebuggeragent.h \
|
include/jsdebuggeragent.h \
|
||||||
$$PWD/include/qmljsdebugger_global.h
|
include/qmljsdebugger_global.h \
|
||||||
|
include/qt_private/qdeclarativedebughelper_p.h \
|
||||||
|
include/qt_private/qdeclarativedebugservice_p.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
$$PWD/jsdebuggeragent.cpp
|
jsdebuggeragent.cpp
|
||||||
|
|
||||||
contains(DEFINES, QMLOBSERVER) {
|
contains(DEFINES, QMLOBSERVER) {
|
||||||
include($$PWD/editor/editor.pri)
|
include($$PWD/editor/editor.pri)
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
$$PWD/include/qdeclarativeviewobserver.h \
|
include/qdeclarativeviewobserver.h \
|
||||||
$$PWD/include/qdeclarativeobserverservice.h \
|
include/qdeclarativeobserverservice.h \
|
||||||
$$PWD/include/qmlobserverconstants.h \
|
include/qmlobserverconstants.h \
|
||||||
$$PWD/qdeclarativeviewobserver_p.h
|
qdeclarativeviewobserver_p.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
$$PWD/qdeclarativeviewobserver.cpp \
|
qdeclarativeviewobserver.cpp \
|
||||||
$$PWD/qdeclarativeobserverservice.cpp
|
qdeclarativeobserverservice.cpp
|
||||||
}
|
}
|
||||||
|
|
||||||
OTHER_FILES += $$PWD/qmljsdebugger.pri
|
OTHER_FILES += qmljsdebugger.pri
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ exists($$PWD/qmljsdebugger/qmljsdebugger-lib.pri) {
|
|||||||
include($$PWD/../qmljsdebugger/qmljsdebugger-lib.pri)
|
include($$PWD/../qmljsdebugger/qmljsdebugger-lib.pri)
|
||||||
}
|
}
|
||||||
|
|
||||||
DESTDIR = $$IDE_BIN_PATH
|
|
||||||
|
|
||||||
mac {
|
mac {
|
||||||
QMAKE_INFO_PLIST=Info_mac.plist
|
QMAKE_INFO_PLIST=Info_mac.plist
|
||||||
TARGET=QMLObserver
|
TARGET=QMLObserver
|
||||||
|
|||||||
@@ -80,6 +80,8 @@ QWidget { //This is a special doubleSpinBox that does color coding for states
|
|||||||
decimals: 1;
|
decimals: 1;
|
||||||
keyboardTracking: false;
|
keyboardTracking: false;
|
||||||
enabled: !backendValue.isBound && doubleSpinBox.enabled;
|
enabled: !backendValue.isBound && doubleSpinBox.enabled;
|
||||||
|
minimum: -1000
|
||||||
|
maximum: 1000
|
||||||
|
|
||||||
property bool readingFromBackend: false;
|
property bool readingFromBackend: false;
|
||||||
property real valueFromBackend: doubleSpinBox.backendValue.value;
|
property real valueFromBackend: doubleSpinBox.backendValue.value;
|
||||||
@@ -17,8 +17,7 @@ QScrollArea {
|
|||||||
rightMargin: 0;
|
rightMargin: 0;
|
||||||
spacing: 0;
|
spacing: 0;
|
||||||
|
|
||||||
Visibility {}
|
Transformation {}
|
||||||
Transformation {}
|
|
||||||
|
|
||||||
QScrollArea {
|
QScrollArea {
|
||||||
}
|
}
|
||||||
@@ -9,8 +9,8 @@ QWidget {
|
|||||||
|
|
||||||
property variant caption;
|
property variant caption;
|
||||||
|
|
||||||
property variant maximumValue: 99
|
property variant maximumValue: 1000
|
||||||
property variant minimumValue: 0
|
property variant minimumValue: -1000
|
||||||
property variant step: 1
|
property variant step: 1
|
||||||
property bool slider: true
|
property bool slider: true
|
||||||
property alias alignment: label.alignment
|
property alias alignment: label.alignment
|
||||||
@@ -13,10 +13,28 @@ PropertyFrame {
|
|||||||
leftMargin: 0;
|
leftMargin: 0;
|
||||||
rightMargin: 0;
|
rightMargin: 0;
|
||||||
spacing: 0;
|
spacing: 0;
|
||||||
|
|
||||||
|
Type {
|
||||||
|
}
|
||||||
|
|
||||||
|
Geometry {
|
||||||
|
}
|
||||||
|
|
||||||
|
Visibility {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
HorizontalWhiteLine {
|
||||||
|
maximumHeight: 4;
|
||||||
|
styleSheet: "QLineEdit {border: 2px solid #707070; min-height: 0px; max-height: 0px;}";
|
||||||
|
}
|
||||||
|
|
||||||
Switches {
|
Switches {
|
||||||
}
|
}
|
||||||
|
|
||||||
HorizontalWhiteLine {
|
HorizontalWhiteLine {
|
||||||
}
|
}
|
||||||
|
|
||||||
ScrollArea {
|
ScrollArea {
|
||||||
styleSheetFile: ":/qmldesigner/scrollbar.css";
|
styleSheetFile: ":/qmldesigner/scrollbar.css";
|
||||||
widgetResizable: true;
|
widgetResizable: true;
|
||||||
@@ -35,8 +53,6 @@ PropertyFrame {
|
|||||||
leftMargin: 0;
|
leftMargin: 0;
|
||||||
rightMargin: 0;
|
rightMargin: 0;
|
||||||
spacing: 0;
|
spacing: 0;
|
||||||
Type {
|
|
||||||
}
|
|
||||||
|
|
||||||
WidgetLoader {
|
WidgetLoader {
|
||||||
id: specificsOne;
|
id: specificsOne;
|
||||||
@@ -15,10 +15,7 @@ QScrollArea {
|
|||||||
bottomMargin: 0;
|
bottomMargin: 0;
|
||||||
leftMargin: 0;
|
leftMargin: 0;
|
||||||
rightMargin: 0;
|
rightMargin: 0;
|
||||||
spacing: 0
|
spacing: 0;
|
||||||
|
|
||||||
Geometry {
|
|
||||||
}
|
|
||||||
|
|
||||||
Layout {
|
Layout {
|
||||||
id: layoutBox;
|
id: layoutBox;
|
||||||
@@ -35,8 +35,8 @@ QFrame {
|
|||||||
id: layoutMode;
|
id: layoutMode;
|
||||||
checkable: true;
|
checkable: true;
|
||||||
checked: false;
|
checked: false;
|
||||||
toolTip: qsTr("layout and geometry");
|
toolTip: qsTr("layout");
|
||||||
text: qsTr("Geometry");
|
text: qsTr("Layout");
|
||||||
onClicked: {
|
onClicked: {
|
||||||
extendedMode.checked = false;
|
extendedMode.checked = false;
|
||||||
standardMode.checked = false;
|
standardMode.checked = false;
|
||||||