diff --git a/README b/README index 0bf72533022de0056f511183f48a2a7cfb53ca94..83ee26c0746be38587781ffcd8a23434f1ff6b2f 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Qt Creator 2.0.91 +Qt Creator 2.1.81 =============== Qt Creator is a crossplatform C++ IDE for development with the Qt framework. diff --git a/dist/changes-2.1 b/dist/changes-2.1.0 similarity index 90% rename from dist/changes-2.1 rename to dist/changes-2.1.0 index b4fd82af8aac74e5948386ef27f74d3a0d00954e..41d204e81d8a87f0f34f69d88cfec971ab55eb71 100644 --- a/dist/changes-2.1 +++ b/dist/changes-2.1.0 @@ -14,13 +14,16 @@ 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 * Add option for adding subprojects to projects in the New wizard * Add context-menu command for removing subprojects in the Edit mode, Projects view - * Add a wizard for adding other than Qt libraries to project files + * Add a wizard for adding other than Qt libraries to project files Debugging * Fix console debugging with MinGW/gdb diff --git a/doc/images/qtcreator-breakdown.png b/doc/images/qtcreator-breakdown.png index 3a8bde3ded32e8c82f915df182e4d1658d818de4..d1aed6228d580aa4a09050ee235f56e1dd963602 100644 Binary files a/doc/images/qtcreator-breakdown.png and b/doc/images/qtcreator-breakdown.png differ diff --git a/doc/images/qtcreator-build-environment.png b/doc/images/qtcreator-build-environment.png new file mode 100644 index 0000000000000000000000000000000000000000..fe00b2e98e2c4c0e53d0ee40e3f632381092b14f Binary files /dev/null and b/doc/images/qtcreator-build-environment.png differ diff --git a/doc/images/qtcreator-build-steps-custom.png b/doc/images/qtcreator-build-steps-custom.png new file mode 100644 index 0000000000000000000000000000000000000000..27e1be044b33f6a63f147c5581f835961c162bbe Binary files /dev/null and b/doc/images/qtcreator-build-steps-custom.png differ diff --git a/doc/images/qtcreator-build-steps.png b/doc/images/qtcreator-build-steps.png index c629428f4ccd8eb0c50a55733fcd0a1ffbb4669d..7e506f515084acc224f3fe65b5b79c2adf7a35ec 100644 Binary files a/doc/images/qtcreator-build-steps.png and b/doc/images/qtcreator-build-steps.png differ diff --git a/doc/images/qtcreator-clean-steps.png b/doc/images/qtcreator-clean-steps.png index 778f06891668fc2b01c4e6f9faefce95fffa241d..6f99b3a998dc584827b64f0d3cafd34308c2119b 100644 Binary files a/doc/images/qtcreator-clean-steps.png and b/doc/images/qtcreator-clean-steps.png differ diff --git a/doc/images/qtcreator-cpp-class-wizard.png b/doc/images/qtcreator-cpp-class-wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3483f0e9e4f8363d59d0cb34c9a4194ac787a9 Binary files /dev/null and b/doc/images/qtcreator-cpp-class-wizard.png differ diff --git a/doc/images/qtcreator-gs-build-example-open.png b/doc/images/qtcreator-gs-build-example-open.png index 27fce0197b0e20d96c7adb57dd8e5e0d561e28a8..6e8229cc2ed2e8357c514eb5e17daea871833693 100644 Binary files a/doc/images/qtcreator-gs-build-example-open.png and b/doc/images/qtcreator-gs-build-example-open.png differ diff --git a/doc/images/qtcreator-show-subprojects.png b/doc/images/qtcreator-show-subprojects.png new file mode 100644 index 0000000000000000000000000000000000000000..695a2f9c8950e7fe10fe9c4194b8bd1710584e45 Binary files /dev/null and b/doc/images/qtcreator-show-subprojects.png differ diff --git a/doc/images/qtcreator-welcome-session.png b/doc/images/qtcreator-welcome-session.png index 0c0f5036ff0ef1adb12170d66a4466455d13c330..4293c52a232ea994cebbd88f45e15c383d00dba4 100644 Binary files a/doc/images/qtcreator-welcome-session.png and b/doc/images/qtcreator-welcome-session.png differ diff --git a/doc/qt-html-templates.qdocconf b/doc/qt-html-templates.qdocconf index 9af13c63316634ebd04ba233b71c1bc232fa0031..ac94225b4619ed80875410c86e110ec1fd5b5037 100644 --- a/doc/qt-html-templates.qdocconf +++ b/doc/qt-html-templates.qdocconf @@ -21,7 +21,7 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \ " </div>\n" \ " <div id=\"shortCut\">\n" \ " <ul>\n" \ - " <li class=\"shortCut-topleft-inactive\"><span><a href=\"index.html\">Qt Creator 2.0.91 </a></span></li>\n" \ + " <li class=\"shortCut-topleft-inactive\"><span><a href=\"index.html\">Qt Creator 2.1.81 </a></span></li>\n" \ " <li class=\"shortCut-topleft-active\"><a href=\"http://doc.qt.nokia.com\">ALL VERSIONS" \ " </a></li>\n" \ " </ul>\n" \ diff --git a/doc/qtcreator.qdoc b/doc/qtcreator.qdoc index 352597582bceaa66b9a494984753917f2e05e889..9e94de8078683f24bf2d9d225a9fda14336b1693 100644 --- a/doc/qtcreator.qdoc +++ b/doc/qtcreator.qdoc @@ -39,7 +39,7 @@ \title Qt Creator Manual - \section1 Version 2.0.91 + \section1 Version 2.1.81 Qt Creator provides a cross-platform, complete integrated development environment (IDE) for application developers to create applications for @@ -588,17 +588,24 @@ \section1 Browsing Project Contents The sidebar is available in the \gui Edit and \gui Debug modes. - Use the sidebar to browse files, projects and bookmarks. + Use the sidebar to browse projects, files, and bookmarks, and to view + the class hierarchy. \image qtcreator-sidebar.png You can select the content of the sidebar in the sidebar menu: \list \o \gui Projects shows a list of projects open in the current session. - \o \gui{File System} shows the content of the currently selected - directory. - \o \gui Bookmarks shows all bookmarks for the current session. \o \gui{Open Documents} shows currently open files. + \o \gui Bookmarks shows all bookmarks for the current session. + \o \gui{File System} shows all files in the currently selected + directory. + \o \gui {Class View} shows the class hierarchy of the currently + open projects. + \o \gui Outline shows the element hierarchy of a QML file. + \o \gui {Type Hierarchy} shows the base classes of a class. For + more information, see \l{Viewing Type Hierarchy}. + \endlist You can change the view of the sidebar in the following ways: @@ -612,6 +619,8 @@ . \endlist + The additional options in each view are described in the following + sections. \section2 Viewing Project Files @@ -625,20 +634,53 @@ needed right-click an item in the project tree. For example, through the menu of the project root directory you can, among other actions, build, re-build, clean and run the project. - \o To list all files in a project, click + \o To hide the categories and sort project files alphabetically, click \inlineimage qtcreator-filter.png - and select \gui{Simplify tree}. + and select \gui{Simplify Tree}. \o To hide source files which are automatically generated by the build system, during a build, click \inlineimage qtcreator-filter.png - and select \gui{Hide generated files}. - \o To toggle the synchronization of your project tree with the file - opened in the editor, click + and select \gui{Hide Generated Files}. + \o To keep the position in the project tree synchronized with the file + currently opened in the editor, click \inlineimage qtcreator-synchronizefocus.png . \o To see the absolute path of a file, move the mouse pointer over the file name. \endlist + \section2 Viewing the File System + + If you cannot see a file in the \gui Projects view, switch to the + \gui {File System} view, which shows all the files in the file system. + + To keep the position in the tree synchronized with the file + opened in the editor, click + \inlineimage qtcreator-synchronizefocus.png + . + + \section2 Viewing the Class Hierarchy + + The \gui {Class View} shows the class hierarchy of the currently + open projects. To organize the view by subprojects, click + \inlineimage qtcreator-show-subprojects.png + . + + \section2 Viewing QML Elements + + The \gui Outline view shows the element hierarchy in a QML file. + + \list + + \o To see a complete list of all bindings, click + \inlineimage qtcreator-filter.png + and select \gui{Show All Bindings}. + + \o To keep the position in the view synchronized with the element + selected in the editor, click + \inlineimage qtcreator-synchronizefocus.png + . + + \endlist \section1 Viewing Output @@ -1776,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. @@ -1821,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. @@ -1836,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, @@ -1858,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}. + */ @@ -2251,6 +2349,27 @@ \endlist + \section1 Validating User Input + + You can specify validation rules for user input. The rules consist of a Boolean + JavaScript expression and an error message. The placeholders in them are + replaced with values before they are evaluated or displayed. + + Consider the following rule used in the \l{Creating Class Wizards} example: + + \code + <validationrules> + <validationrule condition='"%ClassName%" != "QAbstractListModel"'> + <message>%ClassName% cannot be used as class name.</message> + <message xml:lang="de">%ClassName% kann nicht als Klassenname verwendet werden.</message> + </validationrule> + </validationrules> + \endcode + + It ensures that the class name entered by the user does not match the name of + the base class. If the validation fails, a red label displaying the message appears + at the bottom of the wizard page. + \section1 Using Generator Scripts The values entered in the wizard page are passed to the script @@ -2903,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 @@ -2916,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 @@ -2927,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 @@ -2947,6 +3083,8 @@ variables or add, reset and unset new variables based on your project requirements. + \image qtcreator-build-environment.png "Build Environment" + */ @@ -4547,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. diff --git a/doc/qtcreator.qdocconf b/doc/qtcreator.qdocconf index 7ea988596da899e70659422006d545129ce963d6..6672a40903c1f3bcfe4035a8e2eb66345f302cf9 100644 --- a/doc/qtcreator.qdocconf +++ b/doc/qtcreator.qdocconf @@ -20,12 +20,12 @@ sources.fileextensions = "qtcreator.qdoc maemodev.qdoc symbiandev.qdoc addressb qhp.projects = QtCreator qhp.QtCreator.file = qtcreator.qhp -qhp.QtCreator.namespace = com.nokia.qtcreator.2091 +qhp.QtCreator.namespace = com.nokia.qtcreator.2181 qhp.QtCreator.virtualFolder = doc qhp.QtCreator.indexTitle = Qt Creator -qhp.QtCreator.filterAttributes = qtcreator 2.0.91 -qhp.QtCreator.customFilters.QtCreator.name = Qt Creator 2.0.91 -qhp.QtCreator.customFilters.QtCreator.filterAttributes = qtcreator 2.0.91 +qhp.QtCreator.filterAttributes = qtcreator 2.1.81 +qhp.QtCreator.customFilters.QtCreator.name = Qt Creator 2.1.81 +qhp.QtCreator.customFilters.QtCreator.filterAttributes = qtcreator 2.1.81 qhp.QtCreator.indexRoot = qhp.QtCreator.extraFiles = style/style.css \ style/style_ie6.css \ diff --git a/qtcreator.pri b/qtcreator.pri index 8b2268ca3ffc886d498b80b323efde0ced17a28c..2994770571f33c7ee291e4608994f66440c4d82d 100644 --- a/qtcreator.pri +++ b/qtcreator.pri @@ -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) { diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index 4d7ef4553a8571a4d9115f3a45554e1d9da38286..b60b5df341b143bbaa422987fa715b7648f98735 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -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) diff --git a/share/qtcreator/gdbmacros/gdbmacros.py b/share/qtcreator/gdbmacros/gdbmacros.py index b3b284e4bdd2004dfa09ae4ebea7378920222f8c..0a0bcec04dc94b283389e6c0f6b50306d387585f 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.py +++ b/share/qtcreator/gdbmacros/gdbmacros.py @@ -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: diff --git a/share/qtcreator/generic-highlighter/README b/share/qtcreator/generic-highlighter/README deleted file mode 100644 index eb1647a377b2e789c4251d51327b7de97fe40e8f..0000000000000000000000000000000000000000 --- a/share/qtcreator/generic-highlighter/README +++ /dev/null @@ -1,2 +0,0 @@ -This is Creator's default directory for syntax highlight definitions. -You can download them through the Generic Highlighter options dialog. diff --git a/share/qtcreator/qml-type-descriptions/qml-builtin-types.xml b/share/qtcreator/qml-type-descriptions/qml-builtin-types.xml index af4b85b552576a12a90a803cad9b2b6902b4abdf..726298b387ed777121fa9122ef449bb123f87be1 100644 --- a/share/qtcreator/qml-type-descriptions/qml-builtin-types.xml +++ b/share/qtcreator/qml-type-descriptions/qml-builtin-types.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <module> - <type name="QAbstractItemModel" extends="Qt.QtObject"> + <type name="QAbstractItemModel" extends="QObject"> <signal name="dataChanged"> <param name="topLeft" type="QModelIndex"/> <param name="bottomRight" type="QModelIndex"/> @@ -86,7 +86,7 @@ <method name="revert"/> </type> <type name="QAbstractListModel" extends="QAbstractItemModel"/> - <type name="QAction" extends="Qt.QtObject"> + <type name="QAction" extends="QObject"> <enum name="MenuRole"> <enumerator name="NoRole" value="0"/> <enumerator name="TextHeuristicRole" value="1"/> @@ -134,13 +134,6 @@ <signal name="toggled"> <param type="bool"/> </signal> - <signal name="activated"> - <param type="int"/> - </signal> - <signal name="activated"/> - <method name="setOn"> - <param name="b" type="bool"/> - </method> <method name="trigger"/> <method name="hover"/> <method name="setChecked"> @@ -157,7 +150,63 @@ <param type="bool"/> </method> </type> - <type name="QDeclarativeAnchorSet" extends="Qt.QtObject"> + <type name="QDeclarativeAbstractAnimation" extends="QObject"> + <exports> + <export module="Qt" version="4.7" type="Animation"/> + <export module="QtQuick" version="1.0" type="Animation"/> + </exports> + <enum name="Loops"> + <enumerator name="Infinite" value="-2"/> + </enum> + <property name="running" type="bool"/> + <property name="paused" type="bool"/> + <property name="alwaysRunToEnd" type="bool"/> + <property name="loops" type="int"/> + <signal name="started"/> + <signal name="completed"/> + <signal name="runningChanged"> + <param type="bool"/> + </signal> + <signal name="pausedChanged"> + <param type="bool"/> + </signal> + <signal name="alwaysRunToEndChanged"> + <param type="bool"/> + </signal> + <signal name="loopCountChanged"> + <param type="int"/> + </signal> + <method name="restart"/> + <method name="start"/> + <method name="pause"/> + <method name="resume"/> + <method name="stop"/> + <method name="complete"/> + </type> + <type name="QDeclarativeAnchorAnimation" extends="QDeclarativeAbstractAnimation"> + <exports> + <export module="QtQuick" version="1.0" type="AnchorAnimation"/> + <export module="Qt" version="4.7" type="AnchorAnimation"/> + </exports> + <property name="targets" type="QDeclarativeItem" isList="true"/> + <property name="duration" type="int"/> + <property name="easing" type="QEasingCurve"/> + <signal name="durationChanged"> + <param type="int"/> + </signal> + <signal name="easingChanged"> + <param type="QEasingCurve"/> + </signal> + </type> + <type name="QDeclarativeAnchorChanges" extends="QDeclarativeStateOperation"> + <exports> + <export module="Qt" version="4.7" type="AnchorChanges"/> + <export module="QtQuick" version="1.0" type="AnchorChanges"/> + </exports> + <property name="target" type="QDeclarativeItem"/> + <property name="anchors" type="QDeclarativeAnchorSet"/> + </type> + <type name="QDeclarativeAnchorSet" extends="QObject"> <property name="left" type="QDeclarativeScriptString"/> <property name="right" type="QDeclarativeScriptString"/> <property name="horizontalCenter" type="QDeclarativeScriptString"/> @@ -166,7 +215,7 @@ <property name="verticalCenter" type="QDeclarativeScriptString"/> <property name="baseline" type="QDeclarativeScriptString"/> </type> - <type name="QDeclarativeAnchors" extends="Qt.QtObject"> + <type name="QDeclarativeAnchors" extends="QObject"> <property name="left" type="QDeclarativeAnchorLine"/> <property name="right" type="QDeclarativeAnchorLine"/> <property name="horizontalCenter" type="QDeclarativeAnchorLine"/> @@ -202,1468 +251,2090 @@ <signal name="horizontalCenterOffsetChanged"/> <signal name="baselineOffsetChanged"/> </type> - <type name="QDeclarativeAnimationGroup" defaultProperty="animations" extends="Qt.Animation"> - <property name="animations" type="Qt.Animation" isList="true"/> + <type name="QDeclarativeAnimatedImage" defaultProperty="data" extends="QDeclarativeImage"> + <exports> + <export module="Qt" version="4.7" type="AnimatedImage"/> + <export module="QtQuick" version="1.0" type="AnimatedImage"/> + </exports> + <property name="playing" type="bool"/> + <property name="paused" type="bool"/> + <property name="currentFrame" type="int"/> + <property name="frameCount" type="int"/> + <property name="sourceSize" type="QSize"/> + <signal name="playingChanged"/> + <signal name="pausedChanged"/> + <signal name="frameChanged"/> + <signal name="sourceSizeChanged"/> + </type> + <type name="QDeclarativeAnimationGroup" defaultProperty="animations" extends="QDeclarativeAbstractAnimation"> + <property name="animations" type="QDeclarativeAbstractAnimation" isList="true"/> </type> - <type name="QDeclarativeBasePositioner" defaultProperty="data" extends="Qt.Item"> + <type name="QDeclarativeBasePositioner" defaultProperty="data" extends="QDeclarativeItem"> <property name="spacing" type="int"/> - <property name="move" type="Qt.Transition"/> - <property name="add" type="Qt.Transition"/> + <property name="move" type="QDeclarativeTransition"/> + <property name="add" type="QDeclarativeTransition"/> <signal name="spacingChanged"/> <signal name="moveChanged"/> <signal name="addChanged"/> </type> - <type name="QDeclarativeCurve" extends="QDeclarativePathElement"> - <property name="x" type="qreal"/> - <property name="y" type="qreal"/> - <signal name="xChanged"/> - <signal name="yChanged"/> + <type name="QDeclarativeBehavior" defaultProperty="animation" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="Behavior"/> + <export module="Qt" version="4.7" type="Behavior"/> + </exports> + <property name="animation" type="QDeclarativeAbstractAnimation"/> + <property name="enabled" type="bool"/> + <signal name="enabledChanged"/> </type> - <type name="QDeclarativeFlickableVisibleArea" extends="Qt.QtObject"> - <property name="xPosition" type="qreal"/> - <property name="yPosition" type="qreal"/> - <property name="widthRatio" type="qreal"/> - <property name="heightRatio" type="qreal"/> - <signal name="pageChanged"/> + <type name="QDeclarativeBind" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="Binding"/> + <export module="Qt" version="4.7" type="Binding"/> + </exports> + <property name="target" type="QObject"/> + <property name="property" type="string"/> + <property name="value" type="QVariant"/> + <property name="when" type="bool"/> + </type> + <type name="QDeclarativeBorderImage" defaultProperty="data" extends="QDeclarativeImageBase"> + <exports> + <export module="QtQuick" version="1.0" type="BorderImage"/> + <export module="Qt" version="4.7" type="BorderImage"/> + </exports> + <enum name="TileMode"> + <enumerator name="Stretch" value="0"/> + <enumerator name="Repeat" value="1"/> + <enumerator name="Round" value="2"/> + </enum> + <property name="border" type="QDeclarativeScaleGrid"/> + <property name="horizontalTileMode" type="TileMode"/> + <property name="verticalTileMode" type="TileMode"/> + <signal name="horizontalTileModeChanged"/> + <signal name="verticalTileModeChanged"/> + </type> + <type name="QDeclarativeColorAnimation" extends="QDeclarativePropertyAnimation"> + <exports> + <export module="Qt" version="4.7" type="ColorAnimation"/> + <export module="QtQuick" version="1.0" type="ColorAnimation"/> + </exports> + <property name="from" type="QColor"/> + <property name="to" type="QColor"/> </type> - <type name="QDeclarativeImageBase" defaultProperty="data" extends="Qt.Item"> + <type name="QDeclarativeColumn" defaultProperty="data" extends="QDeclarativeBasePositioner"> + <exports> + <export module="QtQuick" version="1.0" type="Column"/> + <export module="Qt" version="4.7" type="Column"/> + </exports> + </type> + <type name="QDeclarativeComponent" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="Component"/> + <export module="Qt" version="4.7" type="Component"/> + </exports> <enum name="Status"> <enumerator name="Null" value="0"/> <enumerator name="Ready" value="1"/> <enumerator name="Loading" value="2"/> <enumerator name="Error" value="3"/> </enum> - <property name="status" type="Status"/> - <property name="source" type="QUrl"/> <property name="progress" type="qreal"/> - <property name="asynchronous" type="bool"/> - <property name="sourceSize" type="QSize"/> - <signal name="sourceChanged"> - <param type="QUrl"/> - </signal> - <signal name="sourceSizeChanged"/> + <property name="status" type="Status"/> + <property name="url" type="QUrl"/> <signal name="statusChanged"> - <param type="Status"/> + <param type="QDeclarativeComponent.Status"/> </signal> <signal name="progressChanged"> - <param name="progress" type="qreal"/> - </signal> - <signal name="asynchronousChanged"/> - </type> - <type name="QDeclarativePaintedItem" defaultProperty="data" extends="Qt.Item"> - <property name="contentsSize" type="QSize"/> - <property name="fillColor" type="QColor"/> - <property name="pixelCacheSize" type="int"/> - <property name="smoothCache" type="bool"/> - <property name="contentsScale" type="qreal"/> - <signal name="fillColorChanged"/> - <signal name="contentsSizeChanged"/> - <signal name="contentsScaleChanged"/> - </type> - <type name="QDeclarativePathElement" extends="Qt.QtObject"> - <signal name="changed"/> - </type> - <type name="QDeclarativePen" extends="Qt.QtObject"> - <property name="width" type="int"/> - <property name="color" type="QColor"/> - <signal name="penChanged"/> - </type> - <type name="QDeclarativeScaleGrid" extends="Qt.QtObject"> - <property name="left" type="int"/> - <property name="top" type="int"/> - <property name="right" type="int"/> - <property name="bottom" type="int"/> - <signal name="borderChanged"/> - </type> - <type name="QDeclarativeStateOperation" extends="Qt.QtObject"/> - <type name="QDeclarativeValueType" extends="Qt.QtObject"/> - <type name="QDeclarativeVisualDataModelParts" extends="Qt.QtObject"/> - <type name="QDeclarativeVisualModel" extends="Qt.QtObject"> - <property name="count" type="int"/> - <signal name="countChanged"/> - <signal name="itemsInserted"> - <param name="index" type="int"/> - <param name="count" type="int"/> - </signal> - <signal name="itemsRemoved"> - <param name="index" type="int"/> - <param name="count" type="int"/> - </signal> - <signal name="itemsMoved"> - <param name="from" type="int"/> - <param name="to" type="int"/> - <param name="count" type="int"/> - </signal> - <signal name="modelReset"/> - <signal name="createdItem"> - <param name="index" type="int"/> - <param name="item" type="Qt.Item"/> - </signal> - <signal name="destroyingItem"> - <param name="item" type="Qt.Item"/> + <param type="qreal"/> </signal> + <method name="errorString" type="string"/> </type> - <type name="QDeclarativeWebSettings" extends="Qt.QtObject"> - <property name="standardFontFamily" type="string"/> - <property name="fixedFontFamily" type="string"/> - <property name="serifFontFamily" type="string"/> - <property name="sansSerifFontFamily" type="string"/> - <property name="cursiveFontFamily" type="string"/> - <property name="fantasyFontFamily" type="string"/> - <property name="minimumFontSize" type="int"/> - <property name="minimumLogicalFontSize" type="int"/> - <property name="defaultFontSize" type="int"/> - <property name="defaultFixedFontSize" type="int"/> - <property name="autoLoadImages" type="bool"/> - <property name="javascriptEnabled" type="bool"/> - <property name="javaEnabled" type="bool"/> - <property name="pluginsEnabled" type="bool"/> - <property name="privateBrowsingEnabled" type="bool"/> - <property name="javascriptCanOpenWindows" type="bool"/> - <property name="javascriptCanAccessClipboard" type="bool"/> - <property name="developerExtrasEnabled" type="bool"/> - <property name="linksIncludedInFocusChain" type="bool"/> - <property name="zoomTextOnly" type="bool"/> - <property name="printElementBackgrounds" type="bool"/> - <property name="offlineStorageDatabaseEnabled" type="bool"/> - <property name="offlineWebApplicationCacheEnabled" type="bool"/> - <property name="localStorageDatabaseEnabled" type="bool"/> - <property name="localContentCanAccessRemoteUrls" type="bool"/> + <type name="QDeclarativeConnections" extends="QObject"> + <exports> + <export module="Qt" version="4.7" type="Connections"/> + <export module="Qt" version="4.7" type="Connections"/> + <export module="QtQuick" version="1.0" type="Connections"/> + <export module="QtQuick" version="1.0" type="Connections"/> + </exports> + <property name="target" type="QObject"/> + <property name="ignoreUnknownSignals" type="bool"/> + <signal name="targetChanged"/> </type> - <type name="QGraphicsObject" defaultProperty="children" extends="Qt.QtObject"> - <property name="parent" type="QGraphicsObject"/> - <property name="opacity" type="qreal"/> - <property name="enabled" type="bool"/> - <property name="visible" type="bool"/> - <property name="pos" type="QPointF"/> + <type name="QDeclarativeCurve" extends="QDeclarativePathElement"> <property name="x" type="qreal"/> <property name="y" type="qreal"/> - <property name="z" type="qreal"/> - <property name="rotation" type="qreal"/> - <property name="scale" type="qreal"/> - <property name="transformOriginPoint" type="QPointF"/> - <property name="effect" type="QGraphicsEffect"/> - <property name="children" type="QGraphicsObject" isList="true"/> - <property name="width" type="qreal"/> - <property name="height" type="qreal"/> - <signal name="parentChanged"/> - <signal name="opacityChanged"/> - <signal name="visibleChanged"/> - <signal name="enabledChanged"/> <signal name="xChanged"/> <signal name="yChanged"/> - <signal name="zChanged"/> - <signal name="rotationChanged"/> - <signal name="scaleChanged"/> - <signal name="childrenChanged"/> - <signal name="widthChanged"/> - <signal name="heightChanged"/> </type> - <type name="QGraphicsTransform" extends="Qt.QtObject"/> - <type name="QListModelInterface" extends="Qt.QtObject"> - <signal name="itemsInserted"> - <param name="index" type="int"/> - <param name="count" type="int"/> - </signal> - <signal name="itemsRemoved"> - <param name="index" type="int"/> - <param name="count" type="int"/> - </signal> - <signal name="itemsMoved"> - <param name="from" type="int"/> - <param name="to" type="int"/> - <param name="count" type="int"/> - </signal> - <signal name="itemsChanged"> - <param name="index" type="int"/> - <param name="count" type="int"/> - <param name="roles" type="QList<int>"/> - </signal> - </type> - <type name="QValidator" extends="Qt.QtObject"/> - <type name="Qt"> - <enum name="GlobalColor"> - <enumerator name="color0" value="0"/> - <enumerator name="color1" value="1"/> - <enumerator name="black" value="2"/> - <enumerator name="white" value="3"/> - <enumerator name="darkGray" value="4"/> - <enumerator name="gray" value="5"/> - <enumerator name="lightGray" value="6"/> - <enumerator name="red" value="7"/> - <enumerator name="green" value="8"/> - <enumerator name="blue" value="9"/> - <enumerator name="cyan" value="10"/> - <enumerator name="magenta" value="11"/> - <enumerator name="yellow" value="12"/> - <enumerator name="darkRed" value="13"/> - <enumerator name="darkGreen" value="14"/> - <enumerator name="darkBlue" value="15"/> - <enumerator name="darkCyan" value="16"/> - <enumerator name="darkMagenta" value="17"/> - <enumerator name="darkYellow" value="18"/> - <enumerator name="transparent" value="19"/> - </enum> - <enum name="KeyboardModifiers"> - <enumerator name="NoModifier" value="0"/> - <enumerator name="ShiftModifier" value="33554432"/> - <enumerator name="ControlModifier" value="67108864"/> - <enumerator name="AltModifier" value="134217728"/> - <enumerator name="MetaModifier" value="268435456"/> - <enumerator name="KeypadModifier" value="536870912"/> - <enumerator name="GroupSwitchModifier" value="1073741824"/> - <enumerator name="KeyboardModifierMask" value="-33554432"/> + <type name="QDeclarativeDrag" extends="QObject"> + <exports> + <export module="Qt" version="4.7" type="Drag"/> + <export module="QtQuick" version="1.0" type="Drag"/> + </exports> + <enum name="Axis"> + <enumerator name="XAxis" value="1"/> + <enumerator name="YAxis" value="2"/> + <enumerator name="XandYAxis" value="3"/> </enum> - <enum name="MouseButtons"> - <enumerator name="NoButton" value="0"/> - <enumerator name="LeftButton" value="1"/> - <enumerator name="RightButton" value="2"/> - <enumerator name="MidButton" value="4"/> - <enumerator name="MiddleButton" value="4"/> - <enumerator name="XButton1" value="8"/> - <enumerator name="XButton2" value="16"/> - <enumerator name="MouseButtonMask" value="255"/> + <property name="target" type="QGraphicsObject"/> + <property name="axis" type="Axis"/> + <property name="minimumX" type="qreal"/> + <property name="maximumX" type="qreal"/> + <property name="minimumY" type="qreal"/> + <property name="maximumY" type="qreal"/> + <property name="active" type="bool"/> + <property name="filterChildren" type="bool"/> + <signal name="targetChanged"/> + <signal name="axisChanged"/> + <signal name="minimumXChanged"/> + <signal name="maximumXChanged"/> + <signal name="minimumYChanged"/> + <signal name="maximumYChanged"/> + <signal name="activeChanged"/> + <signal name="filterChildrenChanged"/> + </type> + <type name="QDeclarativeEasingValueType" extends="QDeclarativeValueType"> + <exports> + <export module="Qt" version="4.7" type="Easing"/> + <export module="QtQuick" version="1.0" type="Easing"/> + </exports> + <enum name="Type"> + <enumerator name="Linear" value="0"/> + <enumerator name="InQuad" value="1"/> + <enumerator name="OutQuad" value="2"/> + <enumerator name="InOutQuad" value="3"/> + <enumerator name="OutInQuad" value="4"/> + <enumerator name="InCubic" value="5"/> + <enumerator name="OutCubic" value="6"/> + <enumerator name="InOutCubic" value="7"/> + <enumerator name="OutInCubic" value="8"/> + <enumerator name="InQuart" value="9"/> + <enumerator name="OutQuart" value="10"/> + <enumerator name="InOutQuart" value="11"/> + <enumerator name="OutInQuart" value="12"/> + <enumerator name="InQuint" value="13"/> + <enumerator name="OutQuint" value="14"/> + <enumerator name="InOutQuint" value="15"/> + <enumerator name="OutInQuint" value="16"/> + <enumerator name="InSine" value="17"/> + <enumerator name="OutSine" value="18"/> + <enumerator name="InOutSine" value="19"/> + <enumerator name="OutInSine" value="20"/> + <enumerator name="InExpo" value="21"/> + <enumerator name="OutExpo" value="22"/> + <enumerator name="InOutExpo" value="23"/> + <enumerator name="OutInExpo" value="24"/> + <enumerator name="InCirc" value="25"/> + <enumerator name="OutCirc" value="26"/> + <enumerator name="InOutCirc" value="27"/> + <enumerator name="OutInCirc" value="28"/> + <enumerator name="InElastic" value="29"/> + <enumerator name="OutElastic" value="30"/> + <enumerator name="InOutElastic" value="31"/> + <enumerator name="OutInElastic" value="32"/> + <enumerator name="InBack" value="33"/> + <enumerator name="OutBack" value="34"/> + <enumerator name="InOutBack" value="35"/> + <enumerator name="OutInBack" value="36"/> + <enumerator name="InBounce" value="37"/> + <enumerator name="OutBounce" value="38"/> + <enumerator name="InOutBounce" value="39"/> + <enumerator name="OutInBounce" value="40"/> + <enumerator name="InCurve" value="41"/> + <enumerator name="OutCurve" value="42"/> + <enumerator name="SineCurve" value="43"/> + <enumerator name="CosineCurve" value="44"/> </enum> - <enum name="Orientation"> - <enumerator name="Horizontal" value="1"/> - <enumerator name="Vertical" value="2"/> + <property name="type" type="Type"/> + <property name="amplitude" type="qreal"/> + <property name="overshoot" type="qreal"/> + <property name="period" type="qreal"/> + </type> + <type name="QDeclarativeFlickable" defaultProperty="flickableData" extends="QDeclarativeItem"> + <exports> + <export module="Qt" version="4.7" type="Flickable"/> + <export module="QtQuick" version="1.0" type="Flickable"/> + </exports> + <enum name="BoundsBehavior"> + <enumerator name="StopAtBounds" value="0"/> + <enumerator name="DragOverBounds" value="1"/> + <enumerator name="DragAndOvershootBounds" value="2"/> </enum> - <enum name="Orientations"> - <enumerator name="Horizontal" value="1"/> - <enumerator name="Vertical" value="2"/> + <enum name="FlickableDirection"> + <enumerator name="AutoFlickDirection" value="0"/> + <enumerator name="HorizontalFlick" value="1"/> + <enumerator name="VerticalFlick" value="2"/> + <enumerator name="HorizontalAndVerticalFlick" value="3"/> </enum> - <enum name="FocusPolicy"> - <enumerator name="NoFocus" value="0"/> - <enumerator name="TabFocus" value="1"/> - <enumerator name="ClickFocus" value="2"/> - <enumerator name="StrongFocus" value="11"/> - <enumerator name="WheelFocus" value="15"/> + <property name="contentWidth" type="qreal"/> + <property name="contentHeight" type="qreal"/> + <property name="contentX" type="qreal"/> + <property name="contentY" type="qreal"/> + <property name="contentItem" type="QDeclarativeItem"/> + <property name="horizontalVelocity" type="qreal"/> + <property name="verticalVelocity" type="qreal"/> + <property name="boundsBehavior" type="BoundsBehavior"/> + <property name="maximumFlickVelocity" type="qreal"/> + <property name="flickDeceleration" type="qreal"/> + <property name="moving" type="bool"/> + <property name="movingHorizontally" type="bool"/> + <property name="movingVertically" type="bool"/> + <property name="flicking" type="bool"/> + <property name="flickingHorizontally" type="bool"/> + <property name="flickingVertically" type="bool"/> + <property name="flickableDirection" type="FlickableDirection"/> + <property name="interactive" type="bool"/> + <property name="pressDelay" type="int"/> + <property name="atXEnd" type="bool"/> + <property name="atYEnd" type="bool"/> + <property name="atXBeginning" type="bool"/> + <property name="atYBeginning" type="bool"/> + <property name="visibleArea" type="QDeclarativeFlickableVisibleArea"/> + <property name="flickableData" type="QObject" isList="true"/> + <property name="flickableChildren" type="QGraphicsObject" isList="true"/> + <signal name="contentWidthChanged"/> + <signal name="contentHeightChanged"/> + <signal name="contentXChanged"/> + <signal name="contentYChanged"/> + <signal name="movingChanged"/> + <signal name="movingHorizontallyChanged"/> + <signal name="movingVerticallyChanged"/> + <signal name="flickingChanged"/> + <signal name="flickingHorizontallyChanged"/> + <signal name="flickingVerticallyChanged"/> + <signal name="horizontalVelocityChanged"/> + <signal name="verticalVelocityChanged"/> + <signal name="isAtBoundaryChanged"/> + <signal name="pageChanged"/> + <signal name="flickableDirectionChanged"/> + <signal name="interactiveChanged"/> + <signal name="boundsBehaviorChanged"/> + <signal name="maximumFlickVelocityChanged"/> + <signal name="flickDecelerationChanged"/> + <signal name="pressDelayChanged"/> + <signal name="movementStarted"/> + <signal name="movementEnded"/> + <signal name="flickStarted"/> + <signal name="flickEnded"/> + </type> + <type name="QDeclarativeFlickableVisibleArea" extends="QObject"> + <property name="xPosition" type="qreal"/> + <property name="yPosition" type="qreal"/> + <property name="widthRatio" type="qreal"/> + <property name="heightRatio" type="qreal"/> + <signal name="pageChanged"/> + </type> + <type name="QDeclarativeFlipable" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="Qt" version="4.7" type="Flipable"/> + <export module="QtQuick" version="1.0" type="Flipable"/> + </exports> + <enum name="Side"> + <enumerator name="Front" value="0"/> + <enumerator name="Back" value="1"/> </enum> - <enum name="SortOrder"> - <enumerator name="AscendingOrder" value="0"/> - <enumerator name="DescendingOrder" value="1"/> + <property name="front" type="QGraphicsObject"/> + <property name="back" type="QGraphicsObject"/> + <property name="side" type="Side"/> + <signal name="sideChanged"/> + </type> + <type name="QDeclarativeFlow" defaultProperty="data" extends="QDeclarativeBasePositioner"> + <exports> + <export module="Qt" version="4.7" type="Flow"/> + <export module="QtQuick" version="1.0" type="Flow"/> + </exports> + <enum name="Flow"> + <enumerator name="LeftToRight" value="0"/> + <enumerator name="TopToBottom" value="1"/> </enum> - <enum name="Alignment"> - <enumerator name="AlignLeft" value="1"/> - <enumerator name="AlignLeading" value="1"/> - <enumerator name="AlignRight" value="2"/> - <enumerator name="AlignTrailing" value="2"/> - <enumerator name="AlignHCenter" value="4"/> - <enumerator name="AlignJustify" value="8"/> - <enumerator name="AlignAbsolute" value="16"/> - <enumerator name="AlignHorizontal_Mask" value="31"/> - <enumerator name="AlignTop" value="32"/> - <enumerator name="AlignBottom" value="64"/> - <enumerator name="AlignVCenter" value="128"/> - <enumerator name="AlignVertical_Mask" value="224"/> - <enumerator name="AlignCenter" value="132"/> + <property name="flow" type="Flow"/> + <signal name="flowChanged"/> + </type> + <type name="QDeclarativeFocusPanel" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="Qt" version="4.7" type="FocusPanel"/> + <export module="QtQuick" version="1.0" type="FocusPanel"/> + </exports> + <property name="active" type="bool"/> + <signal name="activeChanged"/> + </type> + <type name="QDeclarativeFocusScope" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="QtQuick" version="1.0" type="FocusScope"/> + <export module="Qt" version="4.7" type="FocusScope"/> + </exports> + </type> + <type name="QDeclarativeFolderListModel" extends="QAbstractListModel"> + <exports> + <export module="Qt.labs.folderlistmodel" version="1.0" type="FolderListModel"/> + </exports> + <enum name="SortField"> + <enumerator name="Unsorted" value="0"/> + <enumerator name="Name" value="1"/> + <enumerator name="Time" value="2"/> + <enumerator name="Size" value="3"/> + <enumerator name="Type" value="4"/> </enum> - <enum name="TextElideMode"> - <enumerator name="ElideLeft" value="0"/> - <enumerator name="ElideRight" value="1"/> - <enumerator name="ElideMiddle" value="2"/> - <enumerator name="ElideNone" value="3"/> + <property name="folder" type="QUrl"/> + <property name="parentFolder" type="QUrl"/> + <property name="nameFilters" type="QStringList"/> + <property name="sortField" type="SortField"/> + <property name="sortReversed" type="bool"/> + <property name="showDirs" type="bool"/> + <property name="showDotAndDotDot" type="bool"/> + <property name="showOnlyReadable" type="bool"/> + <property name="count" type="int"/> + <signal name="folderChanged"/> + <method name="isFolder" type="bool"> + <param name="index" type="int"/> + </method> + </type> + <type name="QDeclarativeFontLoader" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="FontLoader"/> + <export module="Qt" version="4.7" type="FontLoader"/> + </exports> + <enum name="Status"> + <enumerator name="Null" value="0"/> + <enumerator name="Ready" value="1"/> + <enumerator name="Loading" value="2"/> + <enumerator name="Error" value="3"/> </enum> - <enum name="WindowType"> - <enumerator name="Widget" value="0"/> - <enumerator name="Window" value="1"/> - <enumerator name="Dialog" value="3"/> - <enumerator name="Sheet" value="5"/> - <enumerator name="Drawer" value="7"/> - <enumerator name="Popup" value="9"/> - <enumerator name="Tool" value="11"/> - <enumerator name="ToolTip" value="13"/> - <enumerator name="SplashScreen" value="15"/> - <enumerator name="Desktop" value="17"/> - <enumerator name="SubWindow" value="18"/> - <enumerator name="WindowType_Mask" value="255"/> - <enumerator name="MSWindowsFixedSizeDialogHint" value="256"/> - <enumerator name="MSWindowsOwnDC" value="512"/> - <enumerator name="X11BypassWindowManagerHint" value="1024"/> - <enumerator name="FramelessWindowHint" value="2048"/> - <enumerator name="WindowTitleHint" value="4096"/> - <enumerator name="WindowSystemMenuHint" value="8192"/> - <enumerator name="WindowMinimizeButtonHint" value="16384"/> - <enumerator name="WindowMaximizeButtonHint" value="32768"/> - <enumerator name="WindowMinMaxButtonsHint" value="49152"/> - <enumerator name="WindowContextHelpButtonHint" value="65536"/> - <enumerator name="WindowShadeButtonHint" value="131072"/> - <enumerator name="WindowStaysOnTopHint" value="262144"/> - <enumerator name="CustomizeWindowHint" value="33554432"/> - <enumerator name="WindowStaysOnBottomHint" value="67108864"/> - <enumerator name="WindowCloseButtonHint" value="134217728"/> - <enumerator name="MacWindowToolBarButtonHint" value="268435456"/> - <enumerator name="BypassGraphicsProxyWidget" value="536870912"/> - <enumerator name="WindowOkButtonHint" value="524288"/> - <enumerator name="WindowCancelButtonHint" value="1048576"/> - <enumerator name="WindowSoftkeysVisibleHint" value="1073741824"/> - <enumerator name="WindowSoftkeysRespondHint" value="-2147483648"/> - <enumerator name="WMouseNoMask" value="524288"/> - <enumerator name="WDestructiveClose" value="1048576"/> - <enumerator name="WStaticContents" value="2097152"/> - <enumerator name="WGroupLeader" value="4194304"/> - <enumerator name="WShowModal" value="8388608"/> - <enumerator name="WNoMousePropagation" value="16777216"/> - <enumerator name="WType_TopLevel" value="1"/> - <enumerator name="WType_Dialog" value="3"/> - <enumerator name="WType_Popup" value="9"/> - <enumerator name="WType_Desktop" value="17"/> - <enumerator name="WType_Mask" value="255"/> - <enumerator name="WStyle_Customize" value="0"/> - <enumerator name="WStyle_NormalBorder" value="0"/> - <enumerator name="WStyle_DialogBorder" value="256"/> - <enumerator name="WStyle_NoBorder" value="2048"/> - <enumerator name="WStyle_Title" value="4096"/> - <enumerator name="WStyle_SysMenu" value="8192"/> - <enumerator name="WStyle_Minimize" value="16384"/> - <enumerator name="WStyle_Maximize" value="32768"/> - <enumerator name="WStyle_MinMax" value="49152"/> - <enumerator name="WStyle_Tool" value="11"/> - <enumerator name="WStyle_StaysOnTop" value="262144"/> - <enumerator name="WStyle_ContextHelp" value="65536"/> - <enumerator name="WPaintDesktop" value="0"/> - <enumerator name="WPaintClever" value="0"/> - <enumerator name="WX11BypassWM" value="1024"/> - <enumerator name="WWinOwnDC" value="512"/> - <enumerator name="WMacSheet" value="5"/> - <enumerator name="WMacDrawer" value="7"/> - <enumerator name="WStyle_Splash" value="15"/> - <enumerator name="WNoAutoErase" value="0"/> - <enumerator name="WRepaintNoErase" value="0"/> - <enumerator name="WNorthWestGravity" value="2097152"/> - <enumerator name="WType_Modal" value="8388611"/> - <enumerator name="WStyle_Dialog" value="3"/> - <enumerator name="WStyle_NoBorderEx" value="2048"/> - <enumerator name="WResizeNoErase" value="0"/> - <enumerator name="WMacNoSheet" value="0"/> + <property name="source" type="QUrl"/> + <property name="name" type="string"/> + <property name="status" type="Status"/> + <signal name="sourceChanged"/> + <signal name="nameChanged"/> + <signal name="statusChanged"/> + </type> + <type name="QDeclarativeFontValueType" extends="QDeclarativeValueType"> + <exports> + <export module="Qt" version="4.7" type="Font"/> + <export module="QtQuick" version="1.0" type="Font"/> + </exports> + <enum name="FontWeight"> + <enumerator name="Light" value="25"/> + <enumerator name="Normal" value="50"/> + <enumerator name="DemiBold" value="63"/> + <enumerator name="Bold" value="75"/> + <enumerator name="Black" value="87"/> </enum> - <enum name="WindowFlags"> - <enumerator name="Widget" value="0"/> - <enumerator name="Window" value="1"/> - <enumerator name="Dialog" value="3"/> - <enumerator name="Sheet" value="5"/> - <enumerator name="Drawer" value="7"/> - <enumerator name="Popup" value="9"/> - <enumerator name="Tool" value="11"/> - <enumerator name="ToolTip" value="13"/> - <enumerator name="SplashScreen" value="15"/> - <enumerator name="Desktop" value="17"/> - <enumerator name="SubWindow" value="18"/> - <enumerator name="WindowType_Mask" value="255"/> - <enumerator name="MSWindowsFixedSizeDialogHint" value="256"/> - <enumerator name="MSWindowsOwnDC" value="512"/> - <enumerator name="X11BypassWindowManagerHint" value="1024"/> - <enumerator name="FramelessWindowHint" value="2048"/> - <enumerator name="WindowTitleHint" value="4096"/> - <enumerator name="WindowSystemMenuHint" value="8192"/> - <enumerator name="WindowMinimizeButtonHint" value="16384"/> - <enumerator name="WindowMaximizeButtonHint" value="32768"/> - <enumerator name="WindowMinMaxButtonsHint" value="49152"/> - <enumerator name="WindowContextHelpButtonHint" value="65536"/> - <enumerator name="WindowShadeButtonHint" value="131072"/> - <enumerator name="WindowStaysOnTopHint" value="262144"/> - <enumerator name="CustomizeWindowHint" value="33554432"/> - <enumerator name="WindowStaysOnBottomHint" value="67108864"/> - <enumerator name="WindowCloseButtonHint" value="134217728"/> - <enumerator name="MacWindowToolBarButtonHint" value="268435456"/> - <enumerator name="BypassGraphicsProxyWidget" value="536870912"/> - <enumerator name="WindowOkButtonHint" value="524288"/> - <enumerator name="WindowCancelButtonHint" value="1048576"/> - <enumerator name="WindowSoftkeysVisibleHint" value="1073741824"/> - <enumerator name="WindowSoftkeysRespondHint" value="-2147483648"/> - <enumerator name="WMouseNoMask" value="524288"/> - <enumerator name="WDestructiveClose" value="1048576"/> - <enumerator name="WStaticContents" value="2097152"/> - <enumerator name="WGroupLeader" value="4194304"/> - <enumerator name="WShowModal" value="8388608"/> - <enumerator name="WNoMousePropagation" value="16777216"/> - <enumerator name="WType_TopLevel" value="1"/> - <enumerator name="WType_Dialog" value="3"/> - <enumerator name="WType_Popup" value="9"/> - <enumerator name="WType_Desktop" value="17"/> - <enumerator name="WType_Mask" value="255"/> - <enumerator name="WStyle_Customize" value="0"/> - <enumerator name="WStyle_NormalBorder" value="0"/> - <enumerator name="WStyle_DialogBorder" value="256"/> - <enumerator name="WStyle_NoBorder" value="2048"/> - <enumerator name="WStyle_Title" value="4096"/> - <enumerator name="WStyle_SysMenu" value="8192"/> - <enumerator name="WStyle_Minimize" value="16384"/> - <enumerator name="WStyle_Maximize" value="32768"/> - <enumerator name="WStyle_MinMax" value="49152"/> - <enumerator name="WStyle_Tool" value="11"/> - <enumerator name="WStyle_StaysOnTop" value="262144"/> - <enumerator name="WStyle_ContextHelp" value="65536"/> - <enumerator name="WPaintDesktop" value="0"/> - <enumerator name="WPaintClever" value="0"/> - <enumerator name="WX11BypassWM" value="1024"/> - <enumerator name="WWinOwnDC" value="512"/> - <enumerator name="WMacSheet" value="5"/> - <enumerator name="WMacDrawer" value="7"/> - <enumerator name="WStyle_Splash" value="15"/> - <enumerator name="WNoAutoErase" value="0"/> - <enumerator name="WRepaintNoErase" value="0"/> - <enumerator name="WNorthWestGravity" value="2097152"/> - <enumerator name="WType_Modal" value="8388611"/> - <enumerator name="WStyle_Dialog" value="3"/> - <enumerator name="WStyle_NoBorderEx" value="2048"/> - <enumerator name="WResizeNoErase" value="0"/> - <enumerator name="WMacNoSheet" value="0"/> - </enum> - <enum name="WindowState"> - <enumerator name="WindowNoState" value="0"/> - <enumerator name="WindowMinimized" value="1"/> - <enumerator name="WindowMaximized" value="2"/> - <enumerator name="WindowFullScreen" value="4"/> - <enumerator name="WindowActive" value="8"/> + <enum name="Capitalization"> + <enumerator name="MixedCase" value="0"/> + <enumerator name="AllUppercase" value="1"/> + <enumerator name="AllLowercase" value="2"/> + <enumerator name="SmallCaps" value="3"/> + <enumerator name="Capitalize" value="4"/> </enum> - <enum name="WindowStates"> - <enumerator name="WindowNoState" value="0"/> - <enumerator name="WindowMinimized" value="1"/> - <enumerator name="WindowMaximized" value="2"/> - <enumerator name="WindowFullScreen" value="4"/> - <enumerator name="WindowActive" value="8"/> + <property name="family" type="string"/> + <property name="bold" type="bool"/> + <property name="weight" type="FontWeight"/> + <property name="italic" type="bool"/> + <property name="underline" type="bool"/> + <property name="overline" type="bool"/> + <property name="strikeout" type="bool"/> + <property name="pointSize" type="qreal"/> + <property name="pixelSize" type="int"/> + <property name="capitalization" type="Capitalization"/> + <property name="letterSpacing" type="qreal"/> + <property name="wordSpacing" type="qreal"/> + </type> + <type name="QDeclarativeGestureArea" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="Qt.labs.gestures" version="1.0" type="GestureArea"/> + </exports> + <property name="gesture" type="QGesture"/> + </type> + <type name="QDeclarativeGradient" defaultProperty="stops" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="Gradient"/> + <export module="Qt" version="4.7" type="Gradient"/> + </exports> + <property name="stops" type="QDeclarativeGradientStop" isList="true"/> + <signal name="updated"/> + </type> + <type name="QDeclarativeGradientStop" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="GradientStop"/> + <export module="Qt" version="4.7" type="GradientStop"/> + </exports> + <property name="position" type="qreal"/> + <property name="color" type="QColor"/> + </type> + <type name="QDeclarativeGrid" defaultProperty="data" extends="QDeclarativeBasePositioner"> + <exports> + <export module="QtQuick" version="1.0" type="Grid"/> + <export module="Qt" version="4.7" type="Grid"/> + </exports> + <enum name="Flow"> + <enumerator name="LeftToRight" value="0"/> + <enumerator name="TopToBottom" value="1"/> </enum> - <enum name="WidgetAttribute"> - <enumerator name="WA_Disabled" value="0"/> - <enumerator name="WA_UnderMouse" value="1"/> - <enumerator name="WA_MouseTracking" value="2"/> - <enumerator name="WA_ContentsPropagated" value="3"/> - <enumerator name="WA_OpaquePaintEvent" value="4"/> - <enumerator name="WA_NoBackground" value="4"/> - <enumerator name="WA_StaticContents" value="5"/> - <enumerator name="WA_LaidOut" value="7"/> - <enumerator name="WA_PaintOnScreen" value="8"/> - <enumerator name="WA_NoSystemBackground" value="9"/> - <enumerator name="WA_UpdatesDisabled" value="10"/> - <enumerator name="WA_Mapped" value="11"/> - <enumerator name="WA_MacNoClickThrough" value="12"/> - <enumerator name="WA_PaintOutsidePaintEvent" value="13"/> - <enumerator name="WA_InputMethodEnabled" value="14"/> - <enumerator name="WA_WState_Visible" value="15"/> - <enumerator name="WA_WState_Hidden" value="16"/> - <enumerator name="WA_ForceDisabled" value="32"/> - <enumerator name="WA_KeyCompression" value="33"/> - <enumerator name="WA_PendingMoveEvent" value="34"/> - <enumerator name="WA_PendingResizeEvent" value="35"/> - <enumerator name="WA_SetPalette" value="36"/> - <enumerator name="WA_SetFont" value="37"/> - <enumerator name="WA_SetCursor" value="38"/> - <enumerator name="WA_NoChildEventsFromChildren" value="39"/> - <enumerator name="WA_WindowModified" value="41"/> - <enumerator name="WA_Resized" value="42"/> - <enumerator name="WA_Moved" value="43"/> - <enumerator name="WA_PendingUpdate" value="44"/> - <enumerator name="WA_InvalidSize" value="45"/> - <enumerator name="WA_MacBrushedMetal" value="46"/> - <enumerator name="WA_MacMetalStyle" value="46"/> - <enumerator name="WA_CustomWhatsThis" value="47"/> - <enumerator name="WA_LayoutOnEntireRect" value="48"/> - <enumerator name="WA_OutsideWSRange" value="49"/> - <enumerator name="WA_GrabbedShortcut" value="50"/> - <enumerator name="WA_TransparentForMouseEvents" value="51"/> - <enumerator name="WA_PaintUnclipped" value="52"/> - <enumerator name="WA_SetWindowIcon" value="53"/> - <enumerator name="WA_NoMouseReplay" value="54"/> - <enumerator name="WA_DeleteOnClose" value="55"/> - <enumerator name="WA_RightToLeft" value="56"/> - <enumerator name="WA_SetLayoutDirection" value="57"/> - <enumerator name="WA_NoChildEventsForParent" value="58"/> - <enumerator name="WA_ForceUpdatesDisabled" value="59"/> - <enumerator name="WA_WState_Created" value="60"/> - <enumerator name="WA_WState_CompressKeys" value="61"/> - <enumerator name="WA_WState_InPaintEvent" value="62"/> - <enumerator name="WA_WState_Reparented" value="63"/> - <enumerator name="WA_WState_ConfigPending" value="64"/> - <enumerator name="WA_WState_Polished" value="66"/> - <enumerator name="WA_WState_DND" value="67"/> - <enumerator name="WA_WState_OwnSizePolicy" value="68"/> - <enumerator name="WA_WState_ExplicitShowHide" value="69"/> - <enumerator name="WA_ShowModal" value="70"/> - <enumerator name="WA_MouseNoMask" value="71"/> - <enumerator name="WA_GroupLeader" value="72"/> - <enumerator name="WA_NoMousePropagation" value="73"/> - <enumerator name="WA_Hover" value="74"/> - <enumerator name="WA_InputMethodTransparent" value="75"/> - <enumerator name="WA_QuitOnClose" value="76"/> - <enumerator name="WA_KeyboardFocusChange" value="77"/> - <enumerator name="WA_AcceptDrops" value="78"/> - <enumerator name="WA_DropSiteRegistered" value="79"/> - <enumerator name="WA_ForceAcceptDrops" value="79"/> - <enumerator name="WA_WindowPropagation" value="80"/> - <enumerator name="WA_NoX11EventCompression" value="81"/> - <enumerator name="WA_TintedBackground" value="82"/> - <enumerator name="WA_X11OpenGLOverlay" value="83"/> - <enumerator name="WA_AlwaysShowToolTips" value="84"/> - <enumerator name="WA_MacOpaqueSizeGrip" value="85"/> - <enumerator name="WA_SetStyle" value="86"/> - <enumerator name="WA_SetLocale" value="87"/> - <enumerator name="WA_MacShowFocusRect" value="88"/> - <enumerator name="WA_MacNormalSize" value="89"/> - <enumerator name="WA_MacSmallSize" value="90"/> - <enumerator name="WA_MacMiniSize" value="91"/> - <enumerator name="WA_LayoutUsesWidgetRect" value="92"/> - <enumerator name="WA_StyledBackground" value="93"/> - <enumerator name="WA_MSWindowsUseDirect3D" value="94"/> - <enumerator name="WA_CanHostQMdiSubWindowTitleBar" value="95"/> - <enumerator name="WA_MacAlwaysShowToolWindow" value="96"/> - <enumerator name="WA_StyleSheet" value="97"/> - <enumerator name="WA_ShowWithoutActivating" value="98"/> - <enumerator name="WA_X11BypassTransientForHint" value="99"/> - <enumerator name="WA_NativeWindow" value="100"/> - <enumerator name="WA_DontCreateNativeAncestors" value="101"/> - <enumerator name="WA_MacVariableSize" value="102"/> - <enumerator name="WA_DontShowOnScreen" value="103"/> - <enumerator name="WA_X11NetWmWindowTypeDesktop" value="104"/> - <enumerator name="WA_X11NetWmWindowTypeDock" value="105"/> - <enumerator name="WA_X11NetWmWindowTypeToolBar" value="106"/> - <enumerator name="WA_X11NetWmWindowTypeMenu" value="107"/> - <enumerator name="WA_X11NetWmWindowTypeUtility" value="108"/> - <enumerator name="WA_X11NetWmWindowTypeSplash" value="109"/> - <enumerator name="WA_X11NetWmWindowTypeDialog" value="110"/> - <enumerator name="WA_X11NetWmWindowTypeDropDownMenu" value="111"/> - <enumerator name="WA_X11NetWmWindowTypePopupMenu" value="112"/> - <enumerator name="WA_X11NetWmWindowTypeToolTip" value="113"/> - <enumerator name="WA_X11NetWmWindowTypeNotification" value="114"/> - <enumerator name="WA_X11NetWmWindowTypeCombo" value="115"/> - <enumerator name="WA_X11NetWmWindowTypeDND" value="116"/> - <enumerator name="WA_MacFrameworkScaled" value="117"/> - <enumerator name="WA_SetWindowModality" value="118"/> - <enumerator name="WA_WState_WindowOpacitySet" value="119"/> - <enumerator name="WA_TranslucentBackground" value="120"/> - <enumerator name="WA_AcceptTouchEvents" value="121"/> - <enumerator name="WA_WState_AcceptedTouchBeginEvent" value="122"/> - <enumerator name="WA_TouchPadAcceptSingleTouchEvents" value="123"/> - <enumerator name="WA_MergeSoftkeys" value="124"/> - <enumerator name="WA_MergeSoftkeysRecursively" value="125"/> - <enumerator name="WA_X11DoNotAcceptFocus" value="132"/> - <enumerator name="WA_AttributeCount" value="133"/> + <property name="rows" type="int"/> + <property name="columns" type="int"/> + <property name="flow" type="Flow"/> + <signal name="rowsChanged"/> + <signal name="columnsChanged"/> + <signal name="flowChanged"/> + </type> + <type name="QDeclarativeGridView" defaultProperty="data" extends="QDeclarativeFlickable"> + <exports> + <export module="QtQuick" version="1.0" type="GridView"/> + <export module="Qt" version="4.7" type="GridView"/> + </exports> + <enum name="HighlightRangeMode"> + <enumerator name="NoHighlightRange" value="0"/> + <enumerator name="ApplyRange" value="1"/> + <enumerator name="StrictlyEnforceRange" value="2"/> </enum> - <enum name="ApplicationAttribute"> - <enumerator name="AA_ImmediateWidgetCreation" value="0"/> - <enumerator name="AA_MSWindowsUseDirect3DByDefault" value="1"/> - <enumerator name="AA_DontShowIconsInMenus" value="2"/> - <enumerator name="AA_NativeWindows" value="3"/> - <enumerator name="AA_DontCreateNativeWidgetSiblings" value="4"/> - <enumerator name="AA_MacPluginApplication" value="5"/> - <enumerator name="AA_DontUseNativeMenuBar" value="6"/> - <enumerator name="AA_MacDontSwapCtrlAndMeta" value="7"/> - <enumerator name="AA_S60DontConstructApplicationPanes" value="8"/> - <enumerator name="AA_AttributeCount" value="9"/> + <enum name="Flow"> + <enumerator name="LeftToRight" value="0"/> + <enumerator name="TopToBottom" value="1"/> </enum> - <enum name="ImageConversionFlags"> - <enumerator name="ColorMode_Mask" value="3"/> - <enumerator name="AutoColor" value="0"/> - <enumerator name="ColorOnly" value="3"/> - <enumerator name="MonoOnly" value="2"/> - <enumerator name="AlphaDither_Mask" value="12"/> - <enumerator name="ThresholdAlphaDither" value="0"/> - <enumerator name="OrderedAlphaDither" value="4"/> - <enumerator name="DiffuseAlphaDither" value="8"/> - <enumerator name="NoAlpha" value="12"/> - <enumerator name="Dither_Mask" value="48"/> - <enumerator name="DiffuseDither" value="0"/> - <enumerator name="OrderedDither" value="16"/> - <enumerator name="ThresholdDither" value="32"/> - <enumerator name="DitherMode_Mask" value="192"/> - <enumerator name="AutoDither" value="0"/> - <enumerator name="PreferDither" value="64"/> - <enumerator name="AvoidDither" value="128"/> - <enumerator name="NoOpaqueDetection" value="256"/> + <enum name="SnapMode"> + <enumerator name="NoSnap" value="0"/> + <enumerator name="SnapToRow" value="1"/> + <enumerator name="SnapOneRow" value="2"/> </enum> - <enum name="BGMode"> - <enumerator name="TransparentMode" value="0"/> - <enumerator name="OpaqueMode" value="1"/> + <enum name="PositionMode"> + <enumerator name="Beginning" value="0"/> + <enumerator name="Center" value="1"/> + <enumerator name="End" value="2"/> + <enumerator name="Visible" value="3"/> + <enumerator name="Contain" value="4"/> </enum> - <enum name="Key"> - <enumerator name="Key_Escape" value="16777216"/> - <enumerator name="Key_Tab" value="16777217"/> - <enumerator name="Key_Backtab" value="16777218"/> - <enumerator name="Key_Backspace" value="16777219"/> - <enumerator name="Key_Return" value="16777220"/> - <enumerator name="Key_Enter" value="16777221"/> - <enumerator name="Key_Insert" value="16777222"/> - <enumerator name="Key_Delete" value="16777223"/> - <enumerator name="Key_Pause" value="16777224"/> - <enumerator name="Key_Print" value="16777225"/> - <enumerator name="Key_SysReq" value="16777226"/> - <enumerator name="Key_Clear" value="16777227"/> - <enumerator name="Key_Home" value="16777232"/> - <enumerator name="Key_End" value="16777233"/> - <enumerator name="Key_Left" value="16777234"/> - <enumerator name="Key_Up" value="16777235"/> - <enumerator name="Key_Right" value="16777236"/> - <enumerator name="Key_Down" value="16777237"/> - <enumerator name="Key_PageUp" value="16777238"/> - <enumerator name="Key_PageDown" value="16777239"/> - <enumerator name="Key_Shift" value="16777248"/> - <enumerator name="Key_Control" value="16777249"/> - <enumerator name="Key_Meta" value="16777250"/> - <enumerator name="Key_Alt" value="16777251"/> - <enumerator name="Key_CapsLock" value="16777252"/> - <enumerator name="Key_NumLock" value="16777253"/> - <enumerator name="Key_ScrollLock" value="16777254"/> - <enumerator name="Key_F1" value="16777264"/> - <enumerator name="Key_F2" value="16777265"/> - <enumerator name="Key_F3" value="16777266"/> - <enumerator name="Key_F4" value="16777267"/> - <enumerator name="Key_F5" value="16777268"/> - <enumerator name="Key_F6" value="16777269"/> - <enumerator name="Key_F7" value="16777270"/> - <enumerator name="Key_F8" value="16777271"/> - <enumerator name="Key_F9" value="16777272"/> - <enumerator name="Key_F10" value="16777273"/> - <enumerator name="Key_F11" value="16777274"/> - <enumerator name="Key_F12" value="16777275"/> - <enumerator name="Key_F13" value="16777276"/> - <enumerator name="Key_F14" value="16777277"/> - <enumerator name="Key_F15" value="16777278"/> - <enumerator name="Key_F16" value="16777279"/> - <enumerator name="Key_F17" value="16777280"/> - <enumerator name="Key_F18" value="16777281"/> - <enumerator name="Key_F19" value="16777282"/> - <enumerator name="Key_F20" value="16777283"/> - <enumerator name="Key_F21" value="16777284"/> - <enumerator name="Key_F22" value="16777285"/> - <enumerator name="Key_F23" value="16777286"/> - <enumerator name="Key_F24" value="16777287"/> - <enumerator name="Key_F25" value="16777288"/> - <enumerator name="Key_F26" value="16777289"/> - <enumerator name="Key_F27" value="16777290"/> - <enumerator name="Key_F28" value="16777291"/> - <enumerator name="Key_F29" value="16777292"/> - <enumerator name="Key_F30" value="16777293"/> - <enumerator name="Key_F31" value="16777294"/> - <enumerator name="Key_F32" value="16777295"/> - <enumerator name="Key_F33" value="16777296"/> - <enumerator name="Key_F34" value="16777297"/> - <enumerator name="Key_F35" value="16777298"/> - <enumerator name="Key_Super_L" value="16777299"/> - <enumerator name="Key_Super_R" value="16777300"/> - <enumerator name="Key_Menu" value="16777301"/> - <enumerator name="Key_Hyper_L" value="16777302"/> - <enumerator name="Key_Hyper_R" value="16777303"/> - <enumerator name="Key_Help" value="16777304"/> - <enumerator name="Key_Direction_L" value="16777305"/> - <enumerator name="Key_Direction_R" value="16777312"/> - <enumerator name="Key_Space" value="32"/> - <enumerator name="Key_Any" value="32"/> - <enumerator name="Key_Exclam" value="33"/> - <enumerator name="Key_QuoteDbl" value="34"/> - <enumerator name="Key_NumberSign" value="35"/> - <enumerator name="Key_Dollar" value="36"/> - <enumerator name="Key_Percent" value="37"/> - <enumerator name="Key_Ampersand" value="38"/> - <enumerator name="Key_Apostrophe" value="39"/> - <enumerator name="Key_ParenLeft" value="40"/> - <enumerator name="Key_ParenRight" value="41"/> - <enumerator name="Key_Asterisk" value="42"/> - <enumerator name="Key_Plus" value="43"/> - <enumerator name="Key_Comma" value="44"/> - <enumerator name="Key_Minus" value="45"/> - <enumerator name="Key_Period" value="46"/> - <enumerator name="Key_Slash" value="47"/> - <enumerator name="Key_0" value="48"/> - <enumerator name="Key_1" value="49"/> - <enumerator name="Key_2" value="50"/> - <enumerator name="Key_3" value="51"/> - <enumerator name="Key_4" value="52"/> - <enumerator name="Key_5" value="53"/> - <enumerator name="Key_6" value="54"/> - <enumerator name="Key_7" value="55"/> - <enumerator name="Key_8" value="56"/> - <enumerator name="Key_9" value="57"/> - <enumerator name="Key_Colon" value="58"/> - <enumerator name="Key_Semicolon" value="59"/> - <enumerator name="Key_Less" value="60"/> - <enumerator name="Key_Equal" value="61"/> - <enumerator name="Key_Greater" value="62"/> - <enumerator name="Key_Question" value="63"/> - <enumerator name="Key_At" value="64"/> - <enumerator name="Key_A" value="65"/> - <enumerator name="Key_B" value="66"/> - <enumerator name="Key_C" value="67"/> - <enumerator name="Key_D" value="68"/> - <enumerator name="Key_E" value="69"/> - <enumerator name="Key_F" value="70"/> - <enumerator name="Key_G" value="71"/> - <enumerator name="Key_H" value="72"/> - <enumerator name="Key_I" value="73"/> - <enumerator name="Key_J" value="74"/> - <enumerator name="Key_K" value="75"/> - <enumerator name="Key_L" value="76"/> - <enumerator name="Key_M" value="77"/> - <enumerator name="Key_N" value="78"/> - <enumerator name="Key_O" value="79"/> - <enumerator name="Key_P" value="80"/> - <enumerator name="Key_Q" value="81"/> - <enumerator name="Key_R" value="82"/> - <enumerator name="Key_S" value="83"/> - <enumerator name="Key_T" value="84"/> - <enumerator name="Key_U" value="85"/> - <enumerator name="Key_V" value="86"/> - <enumerator name="Key_W" value="87"/> - <enumerator name="Key_X" value="88"/> - <enumerator name="Key_Y" value="89"/> - <enumerator name="Key_Z" value="90"/> - <enumerator name="Key_BracketLeft" value="91"/> - <enumerator name="Key_Backslash" value="92"/> - <enumerator name="Key_BracketRight" value="93"/> - <enumerator name="Key_AsciiCircum" value="94"/> - <enumerator name="Key_Underscore" value="95"/> - <enumerator name="Key_QuoteLeft" value="96"/> - <enumerator name="Key_BraceLeft" value="123"/> - <enumerator name="Key_Bar" value="124"/> - <enumerator name="Key_BraceRight" value="125"/> - <enumerator name="Key_AsciiTilde" value="126"/> - <enumerator name="Key_nobreakspace" value="160"/> - <enumerator name="Key_exclamdown" value="161"/> - <enumerator name="Key_cent" value="162"/> - <enumerator name="Key_sterling" value="163"/> - <enumerator name="Key_currency" value="164"/> - <enumerator name="Key_yen" value="165"/> - <enumerator name="Key_brokenbar" value="166"/> - <enumerator name="Key_section" value="167"/> - <enumerator name="Key_diaeresis" value="168"/> - <enumerator name="Key_copyright" value="169"/> - <enumerator name="Key_ordfeminine" value="170"/> - <enumerator name="Key_guillemotleft" value="171"/> - <enumerator name="Key_notsign" value="172"/> - <enumerator name="Key_hyphen" value="173"/> - <enumerator name="Key_registered" value="174"/> - <enumerator name="Key_macron" value="175"/> - <enumerator name="Key_degree" value="176"/> - <enumerator name="Key_plusminus" value="177"/> - <enumerator name="Key_twosuperior" value="178"/> - <enumerator name="Key_threesuperior" value="179"/> - <enumerator name="Key_acute" value="180"/> - <enumerator name="Key_mu" value="181"/> - <enumerator name="Key_paragraph" value="182"/> - <enumerator name="Key_periodcentered" value="183"/> - <enumerator name="Key_cedilla" value="184"/> - <enumerator name="Key_onesuperior" value="185"/> - <enumerator name="Key_masculine" value="186"/> - <enumerator name="Key_guillemotright" value="187"/> - <enumerator name="Key_onequarter" value="188"/> - <enumerator name="Key_onehalf" value="189"/> - <enumerator name="Key_threequarters" value="190"/> - <enumerator name="Key_questiondown" value="191"/> - <enumerator name="Key_Agrave" value="192"/> - <enumerator name="Key_Aacute" value="193"/> - <enumerator name="Key_Acircumflex" value="194"/> - <enumerator name="Key_Atilde" value="195"/> - <enumerator name="Key_Adiaeresis" value="196"/> - <enumerator name="Key_Aring" value="197"/> - <enumerator name="Key_AE" value="198"/> - <enumerator name="Key_Ccedilla" value="199"/> - <enumerator name="Key_Egrave" value="200"/> - <enumerator name="Key_Eacute" value="201"/> - <enumerator name="Key_Ecircumflex" value="202"/> - <enumerator name="Key_Ediaeresis" value="203"/> - <enumerator name="Key_Igrave" value="204"/> - <enumerator name="Key_Iacute" value="205"/> - <enumerator name="Key_Icircumflex" value="206"/> - <enumerator name="Key_Idiaeresis" value="207"/> - <enumerator name="Key_ETH" value="208"/> - <enumerator name="Key_Ntilde" value="209"/> - <enumerator name="Key_Ograve" value="210"/> - <enumerator name="Key_Oacute" value="211"/> - <enumerator name="Key_Ocircumflex" value="212"/> - <enumerator name="Key_Otilde" value="213"/> - <enumerator name="Key_Odiaeresis" value="214"/> - <enumerator name="Key_multiply" value="215"/> - <enumerator name="Key_Ooblique" value="216"/> - <enumerator name="Key_Ugrave" value="217"/> - <enumerator name="Key_Uacute" value="218"/> - <enumerator name="Key_Ucircumflex" value="219"/> - <enumerator name="Key_Udiaeresis" value="220"/> - <enumerator name="Key_Yacute" value="221"/> - <enumerator name="Key_THORN" value="222"/> - <enumerator name="Key_ssharp" value="223"/> - <enumerator name="Key_division" value="247"/> - <enumerator name="Key_ydiaeresis" value="255"/> - <enumerator name="Key_AltGr" value="16781571"/> - <enumerator name="Key_Multi_key" value="16781600"/> - <enumerator name="Key_Codeinput" value="16781623"/> - <enumerator name="Key_SingleCandidate" value="16781628"/> - <enumerator name="Key_MultipleCandidate" value="16781629"/> - <enumerator name="Key_PreviousCandidate" value="16781630"/> - <enumerator name="Key_Mode_switch" value="16781694"/> - <enumerator name="Key_Kanji" value="16781601"/> - <enumerator name="Key_Muhenkan" value="16781602"/> - <enumerator name="Key_Henkan" value="16781603"/> - <enumerator name="Key_Romaji" value="16781604"/> - <enumerator name="Key_Hiragana" value="16781605"/> - <enumerator name="Key_Katakana" value="16781606"/> - <enumerator name="Key_Hiragana_Katakana" value="16781607"/> - <enumerator name="Key_Zenkaku" value="16781608"/> - <enumerator name="Key_Hankaku" value="16781609"/> - <enumerator name="Key_Zenkaku_Hankaku" value="16781610"/> - <enumerator name="Key_Touroku" value="16781611"/> - <enumerator name="Key_Massyo" value="16781612"/> - <enumerator name="Key_Kana_Lock" value="16781613"/> - <enumerator name="Key_Kana_Shift" value="16781614"/> - <enumerator name="Key_Eisu_Shift" value="16781615"/> - <enumerator name="Key_Eisu_toggle" value="16781616"/> - <enumerator name="Key_Hangul" value="16781617"/> - <enumerator name="Key_Hangul_Start" value="16781618"/> - <enumerator name="Key_Hangul_End" value="16781619"/> - <enumerator name="Key_Hangul_Hanja" value="16781620"/> - <enumerator name="Key_Hangul_Jamo" value="16781621"/> - <enumerator name="Key_Hangul_Romaja" value="16781622"/> - <enumerator name="Key_Hangul_Jeonja" value="16781624"/> - <enumerator name="Key_Hangul_Banja" value="16781625"/> - <enumerator name="Key_Hangul_PreHanja" value="16781626"/> - <enumerator name="Key_Hangul_PostHanja" value="16781627"/> - <enumerator name="Key_Hangul_Special" value="16781631"/> - <enumerator name="Key_Dead_Grave" value="16781904"/> - <enumerator name="Key_Dead_Acute" value="16781905"/> - <enumerator name="Key_Dead_Circumflex" value="16781906"/> - <enumerator name="Key_Dead_Tilde" value="16781907"/> - <enumerator name="Key_Dead_Macron" value="16781908"/> - <enumerator name="Key_Dead_Breve" value="16781909"/> - <enumerator name="Key_Dead_Abovedot" value="16781910"/> - <enumerator name="Key_Dead_Diaeresis" value="16781911"/> - <enumerator name="Key_Dead_Abovering" value="16781912"/> - <enumerator name="Key_Dead_Doubleacute" value="16781913"/> - <enumerator name="Key_Dead_Caron" value="16781914"/> - <enumerator name="Key_Dead_Cedilla" value="16781915"/> - <enumerator name="Key_Dead_Ogonek" value="16781916"/> - <enumerator name="Key_Dead_Iota" value="16781917"/> - <enumerator name="Key_Dead_Voiced_Sound" value="16781918"/> - <enumerator name="Key_Dead_Semivoiced_Sound" value="16781919"/> - <enumerator name="Key_Dead_Belowdot" value="16781920"/> - <enumerator name="Key_Dead_Hook" value="16781921"/> - <enumerator name="Key_Dead_Horn" value="16781922"/> - <enumerator name="Key_Back" value="16777313"/> - <enumerator name="Key_Forward" value="16777314"/> - <enumerator name="Key_Stop" value="16777315"/> - <enumerator name="Key_Refresh" value="16777316"/> - <enumerator name="Key_VolumeDown" value="16777328"/> - <enumerator name="Key_VolumeMute" value="16777329"/> - <enumerator name="Key_VolumeUp" value="16777330"/> - <enumerator name="Key_BassBoost" value="16777331"/> - <enumerator name="Key_BassUp" value="16777332"/> - <enumerator name="Key_BassDown" value="16777333"/> - <enumerator name="Key_TrebleUp" value="16777334"/> - <enumerator name="Key_TrebleDown" value="16777335"/> - <enumerator name="Key_MediaPlay" value="16777344"/> - <enumerator name="Key_MediaStop" value="16777345"/> - <enumerator name="Key_MediaPrevious" value="16777346"/> - <enumerator name="Key_MediaNext" value="16777347"/> - <enumerator name="Key_MediaRecord" value="16777348"/> - <enumerator name="Key_MediaPause" value="16777349"/> - <enumerator name="Key_MediaTogglePlayPause" value="16777350"/> - <enumerator name="Key_HomePage" value="16777360"/> - <enumerator name="Key_Favorites" value="16777361"/> - <enumerator name="Key_Search" value="16777362"/> - <enumerator name="Key_Standby" value="16777363"/> - <enumerator name="Key_OpenUrl" value="16777364"/> - <enumerator name="Key_LaunchMail" value="16777376"/> - <enumerator name="Key_LaunchMedia" value="16777377"/> - <enumerator name="Key_Launch0" value="16777378"/> - <enumerator name="Key_Launch1" value="16777379"/> - <enumerator name="Key_Launch2" value="16777380"/> - <enumerator name="Key_Launch3" value="16777381"/> - <enumerator name="Key_Launch4" value="16777382"/> - <enumerator name="Key_Launch5" value="16777383"/> - <enumerator name="Key_Launch6" value="16777384"/> - <enumerator name="Key_Launch7" value="16777385"/> - <enumerator name="Key_Launch8" value="16777386"/> - <enumerator name="Key_Launch9" value="16777387"/> - <enumerator name="Key_LaunchA" value="16777388"/> - <enumerator name="Key_LaunchB" value="16777389"/> - <enumerator name="Key_LaunchC" value="16777390"/> - <enumerator name="Key_LaunchD" value="16777391"/> - <enumerator name="Key_LaunchE" value="16777392"/> - <enumerator name="Key_LaunchF" value="16777393"/> - <enumerator name="Key_MonBrightnessUp" value="16777394"/> - <enumerator name="Key_MonBrightnessDown" value="16777395"/> - <enumerator name="Key_KeyboardLightOnOff" value="16777396"/> - <enumerator name="Key_KeyboardBrightnessUp" value="16777397"/> - <enumerator name="Key_KeyboardBrightnessDown" value="16777398"/> - <enumerator name="Key_PowerOff" value="16777399"/> - <enumerator name="Key_WakeUp" value="16777400"/> - <enumerator name="Key_Eject" value="16777401"/> - <enumerator name="Key_ScreenSaver" value="16777402"/> - <enumerator name="Key_WWW" value="16777403"/> - <enumerator name="Key_Memo" value="16777404"/> - <enumerator name="Key_LightBulb" value="16777405"/> - <enumerator name="Key_Shop" value="16777406"/> - <enumerator name="Key_History" value="16777407"/> - <enumerator name="Key_AddFavorite" value="16777408"/> - <enumerator name="Key_HotLinks" value="16777409"/> - <enumerator name="Key_BrightnessAdjust" value="16777410"/> - <enumerator name="Key_Finance" value="16777411"/> - <enumerator name="Key_Community" value="16777412"/> - <enumerator name="Key_AudioRewind" value="16777413"/> - <enumerator name="Key_BackForward" value="16777414"/> - <enumerator name="Key_ApplicationLeft" value="16777415"/> - <enumerator name="Key_ApplicationRight" value="16777416"/> - <enumerator name="Key_Book" value="16777417"/> - <enumerator name="Key_CD" value="16777418"/> - <enumerator name="Key_Calculator" value="16777419"/> - <enumerator name="Key_ToDoList" value="16777420"/> - <enumerator name="Key_ClearGrab" value="16777421"/> - <enumerator name="Key_Close" value="16777422"/> - <enumerator name="Key_Copy" value="16777423"/> - <enumerator name="Key_Cut" value="16777424"/> - <enumerator name="Key_Display" value="16777425"/> - <enumerator name="Key_DOS" value="16777426"/> - <enumerator name="Key_Documents" value="16777427"/> - <enumerator name="Key_Excel" value="16777428"/> - <enumerator name="Key_Explorer" value="16777429"/> - <enumerator name="Key_Game" value="16777430"/> - <enumerator name="Key_Go" value="16777431"/> - <enumerator name="Key_iTouch" value="16777432"/> - <enumerator name="Key_LogOff" value="16777433"/> - <enumerator name="Key_Market" value="16777434"/> - <enumerator name="Key_Meeting" value="16777435"/> - <enumerator name="Key_MenuKB" value="16777436"/> - <enumerator name="Key_MenuPB" value="16777437"/> - <enumerator name="Key_MySites" value="16777438"/> - <enumerator name="Key_News" value="16777439"/> - <enumerator name="Key_OfficeHome" value="16777440"/> - <enumerator name="Key_Option" value="16777441"/> - <enumerator name="Key_Paste" value="16777442"/> - <enumerator name="Key_Phone" value="16777443"/> - <enumerator name="Key_Calendar" value="16777444"/> - <enumerator name="Key_Reply" value="16777445"/> - <enumerator name="Key_Reload" value="16777446"/> - <enumerator name="Key_RotateWindows" value="16777447"/> - <enumerator name="Key_RotationPB" value="16777448"/> - <enumerator name="Key_RotationKB" value="16777449"/> - <enumerator name="Key_Save" value="16777450"/> - <enumerator name="Key_Send" value="16777451"/> - <enumerator name="Key_Spell" value="16777452"/> - <enumerator name="Key_SplitScreen" value="16777453"/> - <enumerator name="Key_Support" value="16777454"/> - <enumerator name="Key_TaskPane" value="16777455"/> - <enumerator name="Key_Terminal" value="16777456"/> - <enumerator name="Key_Tools" value="16777457"/> - <enumerator name="Key_Travel" value="16777458"/> - <enumerator name="Key_Video" value="16777459"/> - <enumerator name="Key_Word" value="16777460"/> - <enumerator name="Key_Xfer" value="16777461"/> - <enumerator name="Key_ZoomIn" value="16777462"/> - <enumerator name="Key_ZoomOut" value="16777463"/> - <enumerator name="Key_Away" value="16777464"/> - <enumerator name="Key_Messenger" value="16777465"/> - <enumerator name="Key_WebCam" value="16777466"/> - <enumerator name="Key_MailForward" value="16777467"/> - <enumerator name="Key_Pictures" value="16777468"/> - <enumerator name="Key_Music" value="16777469"/> - <enumerator name="Key_Battery" value="16777470"/> - <enumerator name="Key_Bluetooth" value="16777471"/> - <enumerator name="Key_WLAN" value="16777472"/> - <enumerator name="Key_UWB" value="16777473"/> - <enumerator name="Key_AudioForward" value="16777474"/> - <enumerator name="Key_AudioRepeat" value="16777475"/> - <enumerator name="Key_AudioRandomPlay" value="16777476"/> - <enumerator name="Key_Subtitle" value="16777477"/> - <enumerator name="Key_AudioCycleTrack" value="16777478"/> - <enumerator name="Key_Time" value="16777479"/> - <enumerator name="Key_Hibernate" value="16777480"/> - <enumerator name="Key_View" value="16777481"/> - <enumerator name="Key_TopMenu" value="16777482"/> - <enumerator name="Key_PowerDown" value="16777483"/> - <enumerator name="Key_Suspend" value="16777484"/> - <enumerator name="Key_ContrastAdjust" value="16777485"/> - <enumerator name="Key_LaunchG" value="16777486"/> - <enumerator name="Key_LaunchH" value="16777487"/> - <enumerator name="Key_MediaLast" value="16842751"/> - <enumerator name="Key_Select" value="16842752"/> - <enumerator name="Key_Yes" value="16842753"/> - <enumerator name="Key_No" value="16842754"/> - <enumerator name="Key_Cancel" value="16908289"/> - <enumerator name="Key_Printer" value="16908290"/> - <enumerator name="Key_Execute" value="16908291"/> - <enumerator name="Key_Sleep" value="16908292"/> - <enumerator name="Key_Play" value="16908293"/> - <enumerator name="Key_Zoom" value="16908294"/> - <enumerator name="Key_Context1" value="17825792"/> - <enumerator name="Key_Context2" value="17825793"/> - <enumerator name="Key_Context3" value="17825794"/> - <enumerator name="Key_Context4" value="17825795"/> - <enumerator name="Key_Call" value="17825796"/> - <enumerator name="Key_Hangup" value="17825797"/> - <enumerator name="Key_Flip" value="17825798"/> - <enumerator name="Key_ToggleCallHangup" value="17825799"/> - <enumerator name="Key_VoiceDial" value="17825800"/> - <enumerator name="Key_LastNumberRedial" value="17825801"/> - <enumerator name="Key_Camera" value="17825824"/> - <enumerator name="Key_CameraFocus" value="17825825"/> - <enumerator name="Key_unknown" value="33554431"/> - </enum> - <enum name="ArrowType"> - <enumerator name="NoArrow" value="0"/> - <enumerator name="UpArrow" value="1"/> - <enumerator name="DownArrow" value="2"/> - <enumerator name="LeftArrow" value="3"/> - <enumerator name="RightArrow" value="4"/> - </enum> - <enum name="PenStyle"> - <enumerator name="NoPen" value="0"/> - <enumerator name="SolidLine" value="1"/> - <enumerator name="DashLine" value="2"/> - <enumerator name="DotLine" value="3"/> - <enumerator name="DashDotLine" value="4"/> - <enumerator name="DashDotDotLine" value="5"/> - <enumerator name="CustomDashLine" value="6"/> - </enum> - <enum name="PenCapStyle"> - <enumerator name="FlatCap" value="0"/> - <enumerator name="SquareCap" value="16"/> - <enumerator name="RoundCap" value="32"/> - <enumerator name="MPenCapStyle" value="48"/> - </enum> - <enum name="PenJoinStyle"> - <enumerator name="MiterJoin" value="0"/> - <enumerator name="BevelJoin" value="64"/> - <enumerator name="RoundJoin" value="128"/> - <enumerator name="SvgMiterJoin" value="256"/> - <enumerator name="MPenJoinStyle" value="448"/> - </enum> - <enum name="BrushStyle"> - <enumerator name="NoBrush" value="0"/> - <enumerator name="SolidPattern" value="1"/> - <enumerator name="Dense1Pattern" value="2"/> - <enumerator name="Dense2Pattern" value="3"/> - <enumerator name="Dense3Pattern" value="4"/> - <enumerator name="Dense4Pattern" value="5"/> - <enumerator name="Dense5Pattern" value="6"/> - <enumerator name="Dense6Pattern" value="7"/> - <enumerator name="Dense7Pattern" value="8"/> - <enumerator name="HorPattern" value="9"/> - <enumerator name="VerPattern" value="10"/> - <enumerator name="CrossPattern" value="11"/> - <enumerator name="BDiagPattern" value="12"/> - <enumerator name="FDiagPattern" value="13"/> - <enumerator name="DiagCrossPattern" value="14"/> - <enumerator name="LinearGradientPattern" value="15"/> - <enumerator name="RadialGradientPattern" value="16"/> - <enumerator name="ConicalGradientPattern" value="17"/> - <enumerator name="TexturePattern" value="24"/> - </enum> - <enum name="SizeMode"> - <enumerator name="AbsoluteSize" value="0"/> - <enumerator name="RelativeSize" value="1"/> - </enum> - <enum name="CursorShape"> - <enumerator name="ArrowCursor" value="0"/> - <enumerator name="UpArrowCursor" value="1"/> - <enumerator name="CrossCursor" value="2"/> - <enumerator name="WaitCursor" value="3"/> - <enumerator name="IBeamCursor" value="4"/> - <enumerator name="SizeVerCursor" value="5"/> - <enumerator name="SizeHorCursor" value="6"/> - <enumerator name="SizeBDiagCursor" value="7"/> - <enumerator name="SizeFDiagCursor" value="8"/> - <enumerator name="SizeAllCursor" value="9"/> - <enumerator name="BlankCursor" value="10"/> - <enumerator name="SplitVCursor" value="11"/> - <enumerator name="SplitHCursor" value="12"/> - <enumerator name="PointingHandCursor" value="13"/> - <enumerator name="ForbiddenCursor" value="14"/> - <enumerator name="WhatsThisCursor" value="15"/> - <enumerator name="BusyCursor" value="16"/> - <enumerator name="OpenHandCursor" value="17"/> - <enumerator name="ClosedHandCursor" value="18"/> - <enumerator name="DragCopyCursor" value="19"/> - <enumerator name="DragMoveCursor" value="20"/> - <enumerator name="DragLinkCursor" value="21"/> - <enumerator name="LastCursor" value="21"/> - <enumerator name="BitmapCursor" value="24"/> - <enumerator name="CustomCursor" value="25"/> - </enum> - <enum name="TextFormat"> - <enumerator name="PlainText" value="0"/> - <enumerator name="RichText" value="1"/> - <enumerator name="AutoText" value="2"/> - <enumerator name="LogText" value="3"/> - </enum> - <enum name="AspectRatioMode"> - <enumerator name="IgnoreAspectRatio" value="0"/> - <enumerator name="KeepAspectRatio" value="1"/> - <enumerator name="KeepAspectRatioByExpanding" value="2"/> - </enum> - <enum name="DockWidgetArea"> - <enumerator name="LeftDockWidgetArea" value="1"/> - <enumerator name="RightDockWidgetArea" value="2"/> - <enumerator name="TopDockWidgetArea" value="4"/> - <enumerator name="BottomDockWidgetArea" value="8"/> - <enumerator name="DockWidgetArea_Mask" value="15"/> - <enumerator name="AllDockWidgetAreas" value="15"/> - <enumerator name="NoDockWidgetArea" value="0"/> - </enum> - <enum name="DockWidgetAreas"> - <enumerator name="LeftDockWidgetArea" value="1"/> - <enumerator name="RightDockWidgetArea" value="2"/> - <enumerator name="TopDockWidgetArea" value="4"/> - <enumerator name="BottomDockWidgetArea" value="8"/> - <enumerator name="DockWidgetArea_Mask" value="15"/> - <enumerator name="AllDockWidgetAreas" value="15"/> - <enumerator name="NoDockWidgetArea" value="0"/> - </enum> - <enum name="ToolBarArea"> - <enumerator name="LeftToolBarArea" value="1"/> - <enumerator name="RightToolBarArea" value="2"/> - <enumerator name="TopToolBarArea" value="4"/> - <enumerator name="BottomToolBarArea" value="8"/> - <enumerator name="ToolBarArea_Mask" value="15"/> - <enumerator name="AllToolBarAreas" value="15"/> - <enumerator name="NoToolBarArea" value="0"/> - </enum> - <enum name="ToolBarAreas"> - <enumerator name="LeftToolBarArea" value="1"/> - <enumerator name="RightToolBarArea" value="2"/> - <enumerator name="TopToolBarArea" value="4"/> - <enumerator name="BottomToolBarArea" value="8"/> - <enumerator name="ToolBarArea_Mask" value="15"/> - <enumerator name="AllToolBarAreas" value="15"/> - <enumerator name="NoToolBarArea" value="0"/> - </enum> - <enum name="DateFormat"> - <enumerator name="TextDate" value="0"/> - <enumerator name="ISODate" value="1"/> - <enumerator name="SystemLocaleDate" value="2"/> - <enumerator name="LocalDate" value="2"/> - <enumerator name="LocaleDate" value="3"/> - <enumerator name="SystemLocaleShortDate" value="4"/> - <enumerator name="SystemLocaleLongDate" value="5"/> - <enumerator name="DefaultLocaleShortDate" value="6"/> - <enumerator name="DefaultLocaleLongDate" value="7"/> - </enum> - <enum name="TimeSpec"> - <enumerator name="LocalTime" value="0"/> - <enumerator name="UTC" value="1"/> - <enumerator name="OffsetFromUTC" value="2"/> - </enum> - <enum name="DayOfWeek"> - <enumerator name="Monday" value="1"/> - <enumerator name="Tuesday" value="2"/> - <enumerator name="Wednesday" value="3"/> - <enumerator name="Thursday" value="4"/> - <enumerator name="Friday" value="5"/> - <enumerator name="Saturday" value="6"/> - <enumerator name="Sunday" value="7"/> - </enum> - <enum name="ScrollBarPolicy"> - <enumerator name="ScrollBarAsNeeded" value="0"/> - <enumerator name="ScrollBarAlwaysOff" value="1"/> - <enumerator name="ScrollBarAlwaysOn" value="2"/> + <property name="model" type="QVariant"/> + <property name="delegate" type="QDeclarativeComponent"/> + <property name="currentIndex" type="int"/> + <property name="currentItem" type="QDeclarativeItem"/> + <property name="count" type="int"/> + <property name="highlight" type="QDeclarativeComponent"/> + <property name="highlightItem" type="QDeclarativeItem"/> + <property name="highlightFollowsCurrentItem" type="bool"/> + <property name="highlightMoveDuration" type="int"/> + <property name="preferredHighlightBegin" type="qreal"/> + <property name="preferredHighlightEnd" type="qreal"/> + <property name="highlightRangeMode" type="HighlightRangeMode"/> + <property name="flow" type="Flow"/> + <property name="keyNavigationWraps" type="bool"/> + <property name="cacheBuffer" type="int"/> + <property name="cellWidth" type="int"/> + <property name="cellHeight" type="int"/> + <property name="snapMode" type="SnapMode"/> + <property name="header" type="QDeclarativeComponent"/> + <property name="footer" type="QDeclarativeComponent"/> + <signal name="countChanged"/> + <signal name="currentIndexChanged"/> + <signal name="cellWidthChanged"/> + <signal name="cellHeightChanged"/> + <signal name="highlightChanged"/> + <signal name="highlightItemChanged"/> + <signal name="preferredHighlightBeginChanged"/> + <signal name="preferredHighlightEndChanged"/> + <signal name="highlightRangeModeChanged"/> + <signal name="highlightMoveDurationChanged"/> + <signal name="modelChanged"/> + <signal name="delegateChanged"/> + <signal name="flowChanged"/> + <signal name="keyNavigationWrapsChanged"/> + <signal name="cacheBufferChanged"/> + <signal name="snapModeChanged"/> + <signal name="headerChanged"/> + <signal name="footerChanged"/> + <method name="moveCurrentIndexUp"/> + <method name="moveCurrentIndexDown"/> + <method name="moveCurrentIndexLeft"/> + <method name="moveCurrentIndexRight"/> + <method name="positionViewAtIndex"> + <param name="index" type="int"/> + <param name="mode" type="int"/> + </method> + <method name="indexAt" type="int"> + <param name="x" type="int"/> + <param name="y" type="int"/> + </method> + </type> + <type name="QDeclarativeImage" defaultProperty="data" extends="QDeclarativeImageBase"> + <exports> + <export module="QtQuick" version="1.0" type="Image"/> + <export module="Qt" version="4.7" type="Image"/> + </exports> + <enum name="FillMode"> + <enumerator name="Stretch" value="0"/> + <enumerator name="PreserveAspectFit" value="1"/> + <enumerator name="PreserveAspectCrop" value="2"/> + <enumerator name="Tile" value="3"/> + <enumerator name="TileVertically" value="4"/> + <enumerator name="TileHorizontally" value="5"/> </enum> - <enum name="BackgroundMode"> - <enumerator name="FixedColor" value="0"/> - <enumerator name="FixedPixmap" value="1"/> - <enumerator name="NoBackground" value="2"/> - <enumerator name="PaletteForeground" value="3"/> - <enumerator name="PaletteButton" value="4"/> - <enumerator name="PaletteLight" value="5"/> - <enumerator name="PaletteMidlight" value="6"/> - <enumerator name="PaletteDark" value="7"/> - <enumerator name="PaletteMid" value="8"/> - <enumerator name="PaletteText" value="9"/> - <enumerator name="PaletteBrightText" value="10"/> - <enumerator name="PaletteBase" value="11"/> - <enumerator name="PaletteBackground" value="12"/> - <enumerator name="PaletteShadow" value="13"/> - <enumerator name="PaletteHighlight" value="14"/> - <enumerator name="PaletteHighlightedText" value="15"/> - <enumerator name="PaletteButtonText" value="16"/> - <enumerator name="PaletteLink" value="17"/> - <enumerator name="PaletteLinkVisited" value="18"/> - <enumerator name="X11ParentRelative" value="19"/> + <property name="fillMode" type="FillMode"/> + <property name="paintedWidth" type="qreal"/> + <property name="paintedHeight" type="qreal"/> + <signal name="fillModeChanged"/> + <signal name="paintedGeometryChanged"/> + </type> + <type name="QDeclarativeImageBase" defaultProperty="data" extends="QDeclarativeItem"> + <enum name="Status"> + <enumerator name="Null" value="0"/> + <enumerator name="Ready" value="1"/> + <enumerator name="Loading" value="2"/> + <enumerator name="Error" value="3"/> </enum> - <enum name="CaseSensitivity"> - <enumerator name="CaseInsensitive" value="0"/> - <enumerator name="CaseSensitive" value="1"/> + <property name="status" type="Status"/> + <property name="source" type="QUrl"/> + <property name="progress" type="qreal"/> + <property name="asynchronous" type="bool"/> + <property name="sourceSize" type="QSize"/> + <signal name="sourceChanged"> + <param type="QUrl"/> + </signal> + <signal name="sourceSizeChanged"/> + <signal name="statusChanged"> + <param type="QDeclarativeImageBase.Status"/> + </signal> + <signal name="progressChanged"> + <param name="progress" type="qreal"/> + </signal> + <signal name="asynchronousChanged"/> + </type> + <type name="QDeclarativeItem" defaultProperty="data" extends="QGraphicsObject"> + <exports> + <export module="QtQuick" version="1.0" type="Item"/> + <export module="Qt" version="4.7" type="Item"/> + </exports> + <enum name="TransformOrigin"> + <enumerator name="TopLeft" value="0"/> + <enumerator name="Top" value="1"/> + <enumerator name="TopRight" value="2"/> + <enumerator name="Left" value="3"/> + <enumerator name="Center" value="4"/> + <enumerator name="Right" value="5"/> + <enumerator name="BottomLeft" value="6"/> + <enumerator name="Bottom" value="7"/> + <enumerator name="BottomRight" value="8"/> </enum> - <enum name="Corner"> - <enumerator name="TopLeftCorner" value="0"/> - <enumerator name="TopRightCorner" value="1"/> - <enumerator name="BottomLeftCorner" value="2"/> - <enumerator name="BottomRightCorner" value="3"/> + <property name="parent" type="QDeclarativeItem"/> + <property name="data" type="QObject" isList="true"/> + <property name="resources" type="QObject" isList="true"/> + <property name="states" type="QDeclarativeState" isList="true"/> + <property name="transitions" type="QDeclarativeTransition" isList="true"/> + <property name="state" type="string"/> + <property name="childrenRect" type="QRectF"/> + <property name="anchors" type="QDeclarativeAnchors"/> + <property name="left" type="QDeclarativeAnchorLine"/> + <property name="right" type="QDeclarativeAnchorLine"/> + <property name="horizontalCenter" type="QDeclarativeAnchorLine"/> + <property name="top" type="QDeclarativeAnchorLine"/> + <property name="bottom" type="QDeclarativeAnchorLine"/> + <property name="verticalCenter" type="QDeclarativeAnchorLine"/> + <property name="baseline" type="QDeclarativeAnchorLine"/> + <property name="baselineOffset" type="qreal"/> + <property name="clip" type="bool"/> + <property name="focus" type="bool"/> + <property name="activeFocus" type="bool"/> + <property name="transform" type="QGraphicsTransform" isList="true"/> + <property name="transformOrigin" type="TransformOrigin"/> + <property name="transformOriginPoint" type="QPointF"/> + <property name="smooth" type="bool"/> + <signal name="childrenRectChanged"> + <param type="QRectF"/> + </signal> + <signal name="baselineOffsetChanged"> + <param type="qreal"/> + </signal> + <signal name="stateChanged"> + <param type="string"/> + </signal> + <signal name="focusChanged"> + <param type="bool"/> + </signal> + <signal name="activeFocusChanged"> + <param type="bool"/> + </signal> + <signal name="parentChanged"> + <param type="QDeclarativeItem"/> + </signal> + <signal name="transformOriginChanged"> + <param type="TransformOrigin"/> + </signal> + <signal name="smoothChanged"> + <param type="bool"/> + </signal> + <signal name="clipChanged"> + <param type="bool"/> + </signal> + <method name="mapFromItem" type="QScriptValue"> + <param name="item" type="QScriptValue"/> + <param name="x" type="qreal"/> + <param name="y" type="qreal"/> + </method> + <method name="mapToItem" type="QScriptValue"> + <param name="item" type="QScriptValue"/> + <param name="x" type="qreal"/> + <param name="y" type="qreal"/> + </method> + <method name="forceActiveFocus"/> + <method name="childAt" type="QDeclarativeItem*"> + <param name="x" type="qreal"/> + <param name="y" type="qreal"/> + </method> + </type> + <type name="QDeclarativeKeyNavigationAttached" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="KeyNavigation"/> + <export module="Qt" version="4.7" type="KeyNavigation"/> + </exports> + <enum name="Priority"> + <enumerator name="BeforeItem" value="0"/> + <enumerator name="AfterItem" value="1"/> </enum> - <enum name="ConnectionType"> - <enumerator name="AutoConnection" value="0"/> - <enumerator name="DirectConnection" value="1"/> - <enumerator name="QueuedConnection" value="2"/> - <enumerator name="AutoCompatConnection" value="3"/> - <enumerator name="BlockingQueuedConnection" value="4"/> - <enumerator name="UniqueConnection" value="128"/> + <property name="left" type="QDeclarativeItem"/> + <property name="right" type="QDeclarativeItem"/> + <property name="up" type="QDeclarativeItem"/> + <property name="down" type="QDeclarativeItem"/> + <property name="tab" type="QDeclarativeItem"/> + <property name="backtab" type="QDeclarativeItem"/> + <property name="priority" type="Priority"/> + <signal name="leftChanged"/> + <signal name="rightChanged"/> + <signal name="upChanged"/> + <signal name="downChanged"/> + <signal name="tabChanged"/> + <signal name="backtabChanged"/> + <signal name="priorityChanged"/> + </type> + <type name="QDeclarativeKeysAttached" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="Keys"/> + <export module="Qt" version="4.7" type="Keys"/> + </exports> + <enum name="Priority"> + <enumerator name="BeforeItem" value="0"/> + <enumerator name="AfterItem" value="1"/> </enum> - <enum name="ShortcutContext"> - <enumerator name="WidgetShortcut" value="0"/> - <enumerator name="WindowShortcut" value="1"/> - <enumerator name="ApplicationShortcut" value="2"/> - <enumerator name="WidgetWithChildrenShortcut" value="3"/> + <property name="enabled" type="bool"/> + <property name="forwardTo" type="QDeclarativeItem" isList="true"/> + <property name="priority" type="Priority"/> + <signal name="enabledChanged"/> + <signal name="priorityChanged"/> + <signal name="pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="released"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit0Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit1Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit2Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit3Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit4Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit5Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit6Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit7Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit8Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="digit9Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="leftPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="rightPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="upPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="downPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="tabPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="backtabPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="asteriskPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="numberSignPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="escapePressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="returnPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="enterPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="deletePressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="spacePressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="backPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="cancelPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="selectPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="yesPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="noPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="context1Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="context2Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="context3Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="context4Pressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="callPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="hangupPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="flipPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="menuPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="volumeUpPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + <signal name="volumeDownPressed"> + <param name="event" type="QDeclarativeKeyEvent"/> + </signal> + </type> + <type name="QDeclarativeLayoutItem" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="Qt" version="4.7" type="LayoutItem"/> + <export module="QtQuick" version="1.0" type="LayoutItem"/> + </exports> + <property name="maximumSize" type="QSizeF"/> + <property name="minimumSize" type="QSizeF"/> + <property name="preferredSize" type="QSizeF"/> + <signal name="maximumSizeChanged"/> + <signal name="minimumSizeChanged"/> + <signal name="preferredSizeChanged"/> + </type> + <type name="QDeclarativeListElement" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="ListElement"/> + <export module="Qt" version="4.7" type="ListElement"/> + </exports> + </type> + <type name="QDeclarativeListModel" extends="QListModelInterface"> + <exports> + <export module="Qt" version="4.7" type="ListModel"/> + <export module="QtQuick" version="1.0" type="ListModel"/> + </exports> + <property name="count" type="int"/> + <signal name="countChanged"/> + <method name="clear"/> + <method name="remove"> + <param name="index" type="int"/> + </method> + <method name="append"> + <param type="QScriptValue"/> + </method> + <method name="insert"> + <param name="index" type="int"/> + <param type="QScriptValue"/> + </method> + <method name="get" type="QScriptValue"> + <param name="index" type="int"/> + </method> + <method name="set"> + <param name="index" type="int"/> + <param type="QScriptValue"/> + </method> + <method name="setProperty"> + <param name="index" type="int"/> + <param name="property" type="string"/> + <param name="value" type="QVariant"/> + </method> + <method name="move"> + <param name="from" type="int"/> + <param name="to" type="int"/> + <param name="count" type="int"/> + </method> + <method name="sync"/> + </type> + <type name="QDeclarativeListView" defaultProperty="data" extends="QDeclarativeFlickable"> + <exports> + <export module="Qt" version="4.7" type="ListView"/> + <export module="QtQuick" version="1.0" type="ListView"/> + </exports> + <enum name="HighlightRangeMode"> + <enumerator name="NoHighlightRange" value="0"/> + <enumerator name="ApplyRange" value="1"/> + <enumerator name="StrictlyEnforceRange" value="2"/> </enum> - <enum name="FillRule"> - <enumerator name="OddEvenFill" value="0"/> - <enumerator name="WindingFill" value="1"/> + <enum name="Orientation"> + <enumerator name="Horizontal" value="1"/> + <enumerator name="Vertical" value="2"/> </enum> - <enum name="MaskMode"> - <enumerator name="MaskInColor" value="0"/> - <enumerator name="MaskOutColor" value="1"/> + <enum name="SnapMode"> + <enumerator name="NoSnap" value="0"/> + <enumerator name="SnapToItem" value="1"/> + <enumerator name="SnapOneItem" value="2"/> </enum> - <enum name="ClipOperation"> - <enumerator name="NoClip" value="0"/> - <enumerator name="ReplaceClip" value="1"/> - <enumerator name="IntersectClip" value="2"/> - <enumerator name="UniteClip" value="3"/> + <enum name="PositionMode"> + <enumerator name="Beginning" value="0"/> + <enumerator name="Center" value="1"/> + <enumerator name="End" value="2"/> + <enumerator name="Visible" value="3"/> + <enumerator name="Contain" value="4"/> </enum> - <enum name="ItemSelectionMode"> - <enumerator name="ContainsItemShape" value="0"/> - <enumerator name="IntersectsItemShape" value="1"/> - <enumerator name="ContainsItemBoundingRect" value="2"/> - <enumerator name="IntersectsItemBoundingRect" value="3"/> + <property name="model" type="QVariant"/> + <property name="delegate" type="QDeclarativeComponent"/> + <property name="currentIndex" type="int"/> + <property name="currentItem" type="QDeclarativeItem"/> + <property name="count" type="int"/> + <property name="highlight" type="QDeclarativeComponent"/> + <property name="highlightItem" type="QDeclarativeItem"/> + <property name="highlightFollowsCurrentItem" type="bool"/> + <property name="highlightMoveSpeed" type="qreal"/> + <property name="highlightMoveDuration" type="int"/> + <property name="highlightResizeSpeed" type="qreal"/> + <property name="highlightResizeDuration" type="int"/> + <property name="preferredHighlightBegin" type="qreal"/> + <property name="preferredHighlightEnd" type="qreal"/> + <property name="highlightRangeMode" type="HighlightRangeMode"/> + <property name="spacing" type="qreal"/> + <property name="orientation" type="Orientation"/> + <property name="keyNavigationWraps" type="bool"/> + <property name="cacheBuffer" type="int"/> + <property name="section" type="QDeclarativeViewSection"/> + <property name="currentSection" type="string"/> + <property name="snapMode" type="SnapMode"/> + <property name="header" type="QDeclarativeComponent"/> + <property name="footer" type="QDeclarativeComponent"/> + <signal name="countChanged"/> + <signal name="spacingChanged"/> + <signal name="orientationChanged"/> + <signal name="currentIndexChanged"/> + <signal name="currentSectionChanged"/> + <signal name="highlightMoveSpeedChanged"/> + <signal name="highlightMoveDurationChanged"/> + <signal name="highlightResizeSpeedChanged"/> + <signal name="highlightResizeDurationChanged"/> + <signal name="highlightChanged"/> + <signal name="highlightItemChanged"/> + <signal name="modelChanged"/> + <signal name="delegateChanged"/> + <signal name="highlightFollowsCurrentItemChanged"/> + <signal name="preferredHighlightBeginChanged"/> + <signal name="preferredHighlightEndChanged"/> + <signal name="highlightRangeModeChanged"/> + <signal name="keyNavigationWrapsChanged"/> + <signal name="cacheBufferChanged"/> + <signal name="snapModeChanged"/> + <signal name="headerChanged"/> + <signal name="footerChanged"/> + <method name="incrementCurrentIndex"/> + <method name="decrementCurrentIndex"/> + <method name="positionViewAtIndex"> + <param name="index" type="int"/> + <param name="mode" type="int"/> + </method> + <method name="indexAt" type="int"> + <param name="x" type="int"/> + <param name="y" type="int"/> + </method> + </type> + <type name="QDeclarativeLoader" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="Qt" version="4.7" type="Loader"/> + <export module="QtQuick" version="1.0" type="Loader"/> + </exports> + <enum name="Status"> + <enumerator name="Null" value="0"/> + <enumerator name="Ready" value="1"/> + <enumerator name="Loading" value="2"/> + <enumerator name="Error" value="3"/> </enum> - <enum name="TransformationMode"> - <enumerator name="FastTransformation" value="0"/> - <enumerator name="SmoothTransformation" value="1"/> + <property name="source" type="QUrl"/> + <property name="sourceComponent" type="QDeclarativeComponent"/> + <property name="item" type="QGraphicsObject"/> + <property name="status" type="Status"/> + <property name="progress" type="qreal"/> + <signal name="itemChanged"/> + <signal name="sourceChanged"/> + <signal name="statusChanged"/> + <signal name="progressChanged"/> + <signal name="loaded"/> + </type> + <type name="QDeclarativeMouseArea" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="Qt" version="4.7" type="MouseArea"/> + <export module="QtQuick" version="1.0" type="MouseArea"/> + </exports> + <property name="mouseX" type="qreal"/> + <property name="mouseY" type="qreal"/> + <property name="containsMouse" type="bool"/> + <property name="pressed" type="bool"/> + <property name="enabled" type="bool"/> + <property name="pressedButtons" type="Qt.MouseButtons"/> + <property name="acceptedButtons" type="Qt.MouseButtons"/> + <property name="hoverEnabled" type="bool"/> + <property name="drag" type="QDeclarativeDrag"/> + <signal name="hoveredChanged"/> + <signal name="pressedChanged"/> + <signal name="enabledChanged"/> + <signal name="acceptedButtonsChanged"/> + <signal name="hoverEnabledChanged"/> + <signal name="positionChanged"> + <param name="mouse" type="QDeclarativeMouseEvent"/> + </signal> + <signal name="mousePositionChanged"> + <param name="mouse" type="QDeclarativeMouseEvent"/> + </signal> + <signal name="pressed"> + <param name="mouse" type="QDeclarativeMouseEvent"/> + </signal> + <signal name="pressAndHold"> + <param name="mouse" type="QDeclarativeMouseEvent"/> + </signal> + <signal name="released"> + <param name="mouse" type="QDeclarativeMouseEvent"/> + </signal> + <signal name="clicked"> + <param name="mouse" type="QDeclarativeMouseEvent"/> + </signal> + <signal name="doubleClicked"> + <param name="mouse" type="QDeclarativeMouseEvent"/> + </signal> + <signal name="entered"/> + <signal name="exited"/> + <signal name="canceled"/> + </type> + <type name="QDeclarativeNumberAnimation" extends="QDeclarativePropertyAnimation"> + <exports> + <export module="QtQuick" version="1.0" type="NumberAnimation"/> + <export module="Qt" version="4.7" type="NumberAnimation"/> + </exports> + <property name="from" type="qreal"/> + <property name="to" type="qreal"/> + </type> + <type name="QDeclarativePackage" defaultProperty="data" extends="QObject"> + <exports> + <export module="Qt" version="4.7" type="Package"/> + <export module="QtQuick" version="1.0" type="Package"/> + </exports> + <property name="data" type="QObject" isList="true"/> + </type> + <type name="QDeclarativePaintedItem" defaultProperty="data" extends="QDeclarativeItem"> + <property name="contentsSize" type="QSize"/> + <property name="fillColor" type="QColor"/> + <property name="pixelCacheSize" type="int"/> + <property name="smoothCache" type="bool"/> + <property name="contentsScale" type="qreal"/> + <signal name="fillColorChanged"/> + <signal name="contentsSizeChanged"/> + <signal name="contentsScaleChanged"/> + </type> + <type name="QDeclarativeParallelAnimation" defaultProperty="animations" extends="QDeclarativeAnimationGroup"> + <exports> + <export module="Qt" version="4.7" type="ParallelAnimation"/> + <export module="QtQuick" version="1.0" type="ParallelAnimation"/> + </exports> + </type> + <type name="QDeclarativeParentAnimation" defaultProperty="animations" extends="QDeclarativeAnimationGroup"> + <exports> + <export module="QtQuick" version="1.0" type="ParentAnimation"/> + <export module="Qt" version="4.7" type="ParentAnimation"/> + </exports> + <property name="target" type="QDeclarativeItem"/> + <property name="newParent" type="QDeclarativeItem"/> + <property name="via" type="QDeclarativeItem"/> + <signal name="targetChanged"/> + <signal name="newParentChanged"/> + <signal name="viaChanged"/> + </type> + <type name="QDeclarativeParentChange" extends="QDeclarativeStateOperation"> + <exports> + <export module="QtQuick" version="1.0" type="ParentChange"/> + <export module="Qt" version="4.7" type="ParentChange"/> + </exports> + <property name="target" type="QDeclarativeItem"/> + <property name="parent" type="QDeclarativeItem"/> + <property name="x" type="QDeclarativeScriptString"/> + <property name="y" type="QDeclarativeScriptString"/> + <property name="width" type="QDeclarativeScriptString"/> + <property name="height" type="QDeclarativeScriptString"/> + <property name="scale" type="QDeclarativeScriptString"/> + <property name="rotation" type="QDeclarativeScriptString"/> + </type> + <type name="QDeclarativeParticleMotion" extends="QObject"> + <exports> + <export module="Qt.labs.particles" version="1.0" type="ParticleMotion"/> + </exports> + </type> + <type name="QDeclarativeParticleMotionGravity" extends="QDeclarativeParticleMotion"> + <exports> + <export module="Qt.labs.particles" version="1.0" type="ParticleMotionGravity"/> + </exports> + <property name="xattractor" type="qreal"/> + <property name="yattractor" type="qreal"/> + <property name="acceleration" type="qreal"/> + <signal name="xattractorChanged"/> + <signal name="yattractorChanged"/> + <signal name="accelerationChanged"/> + </type> + <type name="QDeclarativeParticleMotionLinear" extends="QDeclarativeParticleMotion"> + <exports> + <export module="Qt.labs.particles" version="1.0" type="ParticleMotionLinear"/> + </exports> + </type> + <type name="QDeclarativeParticleMotionWander" extends="QDeclarativeParticleMotion"> + <exports> + <export module="Qt.labs.particles" version="1.0" type="ParticleMotionWander"/> + </exports> + <property name="xvariance" type="qreal"/> + <property name="yvariance" type="qreal"/> + <property name="pace" type="qreal"/> + <signal name="xvarianceChanged"/> + <signal name="yvarianceChanged"/> + <signal name="paceChanged"/> + </type> + <type name="QDeclarativeParticles" defaultProperty="motion" extends="QDeclarativeItem"> + <exports> + <export module="Qt.labs.particles" version="1.0" type="Particles"/> + </exports> + <property name="source" type="QUrl"/> + <property name="count" type="int"/> + <property name="emissionRate" type="int"/> + <property name="emissionVariance" type="qreal"/> + <property name="lifeSpan" type="int"/> + <property name="lifeSpanDeviation" type="int"/> + <property name="fadeInDuration" type="int"/> + <property name="fadeOutDuration" type="int"/> + <property name="angle" type="qreal"/> + <property name="angleDeviation" type="qreal"/> + <property name="velocity" type="qreal"/> + <property name="velocityDeviation" type="qreal"/> + <property name="motion" type="QDeclarativeParticleMotion"/> + <signal name="sourceChanged"/> + <signal name="countChanged"/> + <signal name="emissionRateChanged"/> + <signal name="emissionVarianceChanged"/> + <signal name="lifeSpanChanged"/> + <signal name="lifeSpanDeviationChanged"/> + <signal name="fadeInDurationChanged"/> + <signal name="fadeOutDurationChanged"/> + <signal name="angleChanged"/> + <signal name="angleDeviationChanged"/> + <signal name="velocityChanged"/> + <signal name="velocityDeviationChanged"/> + <signal name="emittingChanged"/> + <signal name="motionChanged"/> + <method name="burst"> + <param name="count" type="int"/> + <param name="emissionRate" type="int"/> + </method> + <method name="burst"> + <param name="count" type="int"/> + </method> + </type> + <type name="QDeclarativePath" defaultProperty="pathElements" extends="QObject"> + <exports> + <export module="Qt" version="4.7" type="Path"/> + <export module="QtQuick" version="1.0" type="Path"/> + </exports> + <property name="pathElements" type="QDeclarativePathElement" isList="true"/> + <property name="startX" type="qreal"/> + <property name="startY" type="qreal"/> + <property name="closed" type="bool"/> + <signal name="changed"/> + <signal name="startXChanged"/> + <signal name="startYChanged"/> + </type> + <type name="QDeclarativePathAttribute" extends="QDeclarativePathElement"> + <exports> + <export module="Qt" version="4.7" type="PathAttribute"/> + <export module="QtQuick" version="1.0" type="PathAttribute"/> + </exports> + <property name="name" type="string"/> + <property name="value" type="qreal"/> + <signal name="nameChanged"/> + <signal name="valueChanged"/> + </type> + <type name="QDeclarativePathCubic" extends="QDeclarativeCurve"> + <exports> + <export module="QtQuick" version="1.0" type="PathCubic"/> + <export module="Qt" version="4.7" type="PathCubic"/> + </exports> + <property name="control1X" type="qreal"/> + <property name="control1Y" type="qreal"/> + <property name="control2X" type="qreal"/> + <property name="control2Y" type="qreal"/> + <signal name="control1XChanged"/> + <signal name="control1YChanged"/> + <signal name="control2XChanged"/> + <signal name="control2YChanged"/> + </type> + <type name="QDeclarativePathElement" extends="QObject"> + <signal name="changed"/> + </type> + <type name="QDeclarativePathLine" extends="QDeclarativeCurve"> + <exports> + <export module="QtQuick" version="1.0" type="PathLine"/> + <export module="Qt" version="4.7" type="PathLine"/> + </exports> + </type> + <type name="QDeclarativePathPercent" extends="QDeclarativePathElement"> + <exports> + <export module="Qt" version="4.7" type="PathPercent"/> + <export module="QtQuick" version="1.0" type="PathPercent"/> + </exports> + <property name="value" type="qreal"/> + <signal name="valueChanged"/> + </type> + <type name="QDeclarativePathQuad" extends="QDeclarativeCurve"> + <exports> + <export module="Qt" version="4.7" type="PathQuad"/> + <export module="QtQuick" version="1.0" type="PathQuad"/> + </exports> + <property name="controlX" type="qreal"/> + <property name="controlY" type="qreal"/> + <signal name="controlXChanged"/> + <signal name="controlYChanged"/> + </type> + <type name="QDeclarativePathView" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="QtQuick" version="1.0" type="PathView"/> + <export module="Qt" version="4.7" type="PathView"/> + </exports> + <enum name="HighlightRangeMode"> + <enumerator name="NoHighlightRange" value="0"/> + <enumerator name="ApplyRange" value="1"/> + <enumerator name="StrictlyEnforceRange" value="2"/> </enum> - <enum name="Axis"> - <enumerator name="XAxis" value="0"/> - <enumerator name="YAxis" value="1"/> - <enumerator name="ZAxis" value="2"/> + <property name="model" type="QVariant"/> + <property name="path" type="QDeclarativePath"/> + <property name="currentIndex" type="int"/> + <property name="offset" type="qreal"/> + <property name="highlight" type="QDeclarativeComponent"/> + <property name="highlightItem" type="QDeclarativeItem"/> + <property name="preferredHighlightBegin" type="qreal"/> + <property name="preferredHighlightEnd" type="qreal"/> + <property name="highlightRangeMode" type="HighlightRangeMode"/> + <property name="highlightMoveDuration" type="int"/> + <property name="dragMargin" type="qreal"/> + <property name="flickDeceleration" type="qreal"/> + <property name="interactive" type="bool"/> + <property name="moving" type="bool"/> + <property name="flicking" type="bool"/> + <property name="count" type="int"/> + <property name="delegate" type="QDeclarativeComponent"/> + <property name="pathItemCount" type="int"/> + <signal name="currentIndexChanged"/> + <signal name="offsetChanged"/> + <signal name="modelChanged"/> + <signal name="countChanged"/> + <signal name="pathChanged"/> + <signal name="preferredHighlightBeginChanged"/> + <signal name="preferredHighlightEndChanged"/> + <signal name="highlightRangeModeChanged"/> + <signal name="dragMarginChanged"/> + <signal name="snapPositionChanged"/> + <signal name="delegateChanged"/> + <signal name="pathItemCountChanged"/> + <signal name="flickDecelerationChanged"/> + <signal name="interactiveChanged"/> + <signal name="movingChanged"/> + <signal name="flickingChanged"/> + <signal name="highlightChanged"/> + <signal name="highlightItemChanged"/> + <signal name="highlightMoveDurationChanged"/> + <signal name="movementStarted"/> + <signal name="movementEnded"/> + <signal name="flickStarted"/> + <signal name="flickEnded"/> + <method name="incrementCurrentIndex"/> + <method name="decrementCurrentIndex"/> + </type> + <type name="QDeclarativePauseAnimation" extends="QDeclarativeAbstractAnimation"> + <exports> + <export module="Qt" version="4.7" type="PauseAnimation"/> + <export module="QtQuick" version="1.0" type="PauseAnimation"/> + </exports> + <property name="duration" type="int"/> + <signal name="durationChanged"> + <param type="int"/> + </signal> + </type> + <type name="QDeclarativePen" extends="QObject"> + <property name="width" type="int"/> + <property name="color" type="QColor"/> + <signal name="penChanged"/> + </type> + <type name="QDeclarativePropertyAction" extends="QDeclarativeAbstractAnimation"> + <exports> + <export module="QtQuick" version="1.0" type="PropertyAction"/> + <export module="Qt" version="4.7" type="PropertyAction"/> + </exports> + <property name="target" type="QObject"/> + <property name="property" type="string"/> + <property name="properties" type="string"/> + <property name="targets" type="QObject" isList="true"/> + <property name="exclude" type="QObject" isList="true"/> + <property name="value" type="QVariant"/> + <signal name="valueChanged"> + <param type="QVariant"/> + </signal> + <signal name="propertiesChanged"> + <param type="string"/> + </signal> + <signal name="targetChanged"/> + <signal name="propertyChanged"/> + </type> + <type name="QDeclarativePropertyAnimation" extends="QDeclarativeAbstractAnimation"> + <exports> + <export module="QtQuick" version="1.0" type="PropertyAnimation"/> + <export module="Qt" version="4.7" type="PropertyAnimation"/> + </exports> + <property name="duration" type="int"/> + <property name="from" type="QVariant"/> + <property name="to" type="QVariant"/> + <property name="easing" type="QEasingCurve"/> + <property name="target" type="QObject"/> + <property name="property" type="string"/> + <property name="properties" type="string"/> + <property name="targets" type="QObject" isList="true"/> + <property name="exclude" type="QObject" isList="true"/> + <signal name="durationChanged"> + <param type="int"/> + </signal> + <signal name="fromChanged"> + <param type="QVariant"/> + </signal> + <signal name="toChanged"> + <param type="QVariant"/> + </signal> + <signal name="easingChanged"> + <param type="QEasingCurve"/> + </signal> + <signal name="propertiesChanged"> + <param type="string"/> + </signal> + <signal name="targetChanged"/> + <signal name="propertyChanged"/> + </type> + <type name="QDeclarativePropertyChanges" extends="QDeclarativeStateOperation"> + <exports> + <export module="QtQuick" version="1.0" type="PropertyChanges"/> + <export module="Qt" version="4.7" type="PropertyChanges"/> + </exports> + <property name="target" type="QObject"/> + <property name="restoreEntryValues" type="bool"/> + <property name="explicit" type="bool"/> + </type> + <type name="QDeclarativeRectangle" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="Qt" version="4.7" type="Rectangle"/> + <export module="QtQuick" version="1.0" type="Rectangle"/> + </exports> + <property name="color" type="QColor"/> + <property name="gradient" type="QDeclarativeGradient"/> + <property name="border" type="QDeclarativePen"/> + <property name="radius" type="qreal"/> + <signal name="colorChanged"/> + <signal name="radiusChanged"/> + </type> + <type name="QDeclarativeRepeater" defaultProperty="delegate" extends="QDeclarativeItem"> + <exports> + <export module="Qt" version="4.7" type="Repeater"/> + <export module="QtQuick" version="1.0" type="Repeater"/> + </exports> + <property name="model" type="QVariant"/> + <property name="delegate" type="QDeclarativeComponent"/> + <property name="count" type="int"/> + <signal name="modelChanged"/> + <signal name="delegateChanged"/> + <signal name="countChanged"/> + </type> + <type name="QDeclarativeRotationAnimation" extends="QDeclarativePropertyAnimation"> + <exports> + <export module="QtQuick" version="1.0" type="RotationAnimation"/> + <export module="Qt" version="4.7" type="RotationAnimation"/> + </exports> + <enum name="RotationDirection"> + <enumerator name="Numerical" value="0"/> + <enumerator name="Shortest" value="1"/> + <enumerator name="Clockwise" value="2"/> + <enumerator name="Counterclockwise" value="3"/> </enum> - <enum name="ContextMenuPolicy"> - <enumerator name="NoContextMenu" value="0"/> - <enumerator name="DefaultContextMenu" value="1"/> - <enumerator name="ActionsContextMenu" value="2"/> - <enumerator name="CustomContextMenu" value="3"/> - <enumerator name="PreventContextMenu" value="4"/> + <property name="from" type="qreal"/> + <property name="to" type="qreal"/> + <property name="direction" type="RotationDirection"/> + <signal name="directionChanged"/> + </type> + <type name="QDeclarativeRow" defaultProperty="data" extends="QDeclarativeBasePositioner"> + <exports> + <export module="Qt" version="4.7" type="Row"/> + <export module="QtQuick" version="1.0" type="Row"/> + </exports> + </type> + <type name="QDeclarativeScaleGrid" extends="QObject"> + <property name="left" type="int"/> + <property name="top" type="int"/> + <property name="right" type="int"/> + <property name="bottom" type="int"/> + <signal name="borderChanged"/> + </type> + <type name="QDeclarativeScriptAction" extends="QDeclarativeAbstractAnimation"> + <exports> + <export module="QtQuick" version="1.0" type="ScriptAction"/> + <export module="Qt" version="4.7" type="ScriptAction"/> + </exports> + <property name="script" type="QDeclarativeScriptString"/> + <property name="scriptName" type="string"/> + </type> + <type name="QDeclarativeSequentialAnimation" defaultProperty="animations" extends="QDeclarativeAnimationGroup"> + <exports> + <export module="QtQuick" version="1.0" type="SequentialAnimation"/> + <export module="Qt" version="4.7" type="SequentialAnimation"/> + </exports> + </type> + <type name="QDeclarativeSmoothedAnimation" extends="QDeclarativeNumberAnimation"> + <exports> + <export module="Qt" version="4.7" type="SmoothedAnimation"/> + <export module="QtQuick" version="1.0" type="SmoothedAnimation"/> + </exports> + <enum name="ReversingMode"> + <enumerator name="Eased" value="0"/> + <enumerator name="Immediate" value="1"/> + <enumerator name="Sync" value="2"/> </enum> - <enum name="InputMethodHint"> - <enumerator name="ImhNone" value="0"/> - <enumerator name="ImhHiddenText" value="1"/> - <enumerator name="ImhNoAutoUppercase" value="2"/> - <enumerator name="ImhPreferNumbers" value="4"/> - <enumerator name="ImhPreferUppercase" value="8"/> - <enumerator name="ImhPreferLowercase" value="16"/> - <enumerator name="ImhNoPredictiveText" value="32"/> - <enumerator name="ImhDigitsOnly" value="65536"/> - <enumerator name="ImhFormattedNumbersOnly" value="131072"/> - <enumerator name="ImhUppercaseOnly" value="262144"/> - <enumerator name="ImhLowercaseOnly" value="524288"/> - <enumerator name="ImhDialableCharactersOnly" value="1048576"/> - <enumerator name="ImhEmailCharactersOnly" value="2097152"/> - <enumerator name="ImhUrlCharactersOnly" value="4194304"/> - <enumerator name="ImhExclusiveInputMask" value="-65536"/> + <property name="velocity" type="qreal"/> + <property name="reversingMode" type="ReversingMode"/> + <property name="maximumEasingTime" type="qreal"/> + <signal name="velocityChanged"/> + <signal name="reversingModeChanged"/> + <signal name="maximumEasingTimeChanged"/> + </type> + <type name="QDeclarativeSpringAnimation" extends="QDeclarativeNumberAnimation"> + <exports> + <export module="QtQuick" version="1.0" type="SpringAnimation"/> + <export module="Qt" version="4.7" type="SpringAnimation"/> + </exports> + <property name="velocity" type="qreal"/> + <property name="spring" type="qreal"/> + <property name="damping" type="qreal"/> + <property name="epsilon" type="qreal"/> + <property name="modulus" type="qreal"/> + <property name="mass" type="qreal"/> + <signal name="modulusChanged"/> + <signal name="massChanged"/> + <signal name="syncChanged"/> + </type> + <type name="QDeclarativeState" defaultProperty="changes" extends="QObject"> + <exports> + <export module="Qt" version="4.7" type="State"/> + <export module="QtQuick" version="1.0" type="State"/> + </exports> + <property name="name" type="string"/> + <property name="when" type="QDeclarativeBinding"/> + <property name="extend" type="string"/> + <property name="changes" type="QDeclarativeStateOperation" isList="true"/> + <signal name="completed"/> + </type> + <type name="QDeclarativeStateChangeScript" extends="QDeclarativeStateOperation"> + <exports> + <export module="QtQuick" version="1.0" type="StateChangeScript"/> + <export module="Qt" version="4.7" type="StateChangeScript"/> + </exports> + <property name="script" type="QDeclarativeScriptString"/> + <property name="name" type="string"/> + </type> + <type name="QDeclarativeStateGroup" extends="QObject"> + <exports> + <export module="Qt" version="4.7" type="StateGroup"/> + <export module="QtQuick" version="1.0" type="StateGroup"/> + </exports> + <property name="state" type="string"/> + <property name="states" type="QDeclarativeState" isList="true"/> + <property name="transitions" type="QDeclarativeTransition" isList="true"/> + <signal name="stateChanged"> + <param type="string"/> + </signal> + </type> + <type name="QDeclarativeStateOperation" extends="QObject"/> + <type name="QDeclarativeSystemPalette" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="SystemPalette"/> + <export module="Qt" version="4.7" type="SystemPalette"/> + </exports> + <enum name="ColorGroup"> + <enumerator name="Active" value="0"/> + <enumerator name="Inactive" value="2"/> + <enumerator name="Disabled" value="1"/> </enum> - <enum name="InputMethodHints"> - <enumerator name="ImhNone" value="0"/> - <enumerator name="ImhHiddenText" value="1"/> - <enumerator name="ImhNoAutoUppercase" value="2"/> - <enumerator name="ImhPreferNumbers" value="4"/> - <enumerator name="ImhPreferUppercase" value="8"/> - <enumerator name="ImhPreferLowercase" value="16"/> - <enumerator name="ImhNoPredictiveText" value="32"/> - <enumerator name="ImhDigitsOnly" value="65536"/> - <enumerator name="ImhFormattedNumbersOnly" value="131072"/> - <enumerator name="ImhUppercaseOnly" value="262144"/> - <enumerator name="ImhLowercaseOnly" value="524288"/> - <enumerator name="ImhDialableCharactersOnly" value="1048576"/> - <enumerator name="ImhEmailCharactersOnly" value="2097152"/> - <enumerator name="ImhUrlCharactersOnly" value="4194304"/> - <enumerator name="ImhExclusiveInputMask" value="-65536"/> + <property name="colorGroup" type="QDeclarativeSystemPalette.ColorGroup"/> + <property name="window" type="QColor"/> + <property name="windowText" type="QColor"/> + <property name="base" type="QColor"/> + <property name="text" type="QColor"/> + <property name="alternateBase" type="QColor"/> + <property name="button" type="QColor"/> + <property name="buttonText" type="QColor"/> + <property name="light" type="QColor"/> + <property name="midlight" type="QColor"/> + <property name="dark" type="QColor"/> + <property name="mid" type="QColor"/> + <property name="shadow" type="QColor"/> + <property name="highlight" type="QColor"/> + <property name="highlightedText" type="QColor"/> + <signal name="paletteChanged"/> + </type> + <type name="QDeclarativeText" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="Qt" version="4.7" type="Text"/> + <export module="QtQuick" version="1.0" type="Text"/> + </exports> + <enum name="HAlignment"> + <enumerator name="AlignLeft" value="1"/> + <enumerator name="AlignRight" value="2"/> + <enumerator name="AlignHCenter" value="4"/> </enum> - <enum name="ToolButtonStyle"> - <enumerator name="ToolButtonIconOnly" value="0"/> - <enumerator name="ToolButtonTextOnly" value="1"/> - <enumerator name="ToolButtonTextBesideIcon" value="2"/> - <enumerator name="ToolButtonTextUnderIcon" value="3"/> - <enumerator name="ToolButtonFollowStyle" value="4"/> + <enum name="VAlignment"> + <enumerator name="AlignTop" value="32"/> + <enumerator name="AlignBottom" value="64"/> + <enumerator name="AlignVCenter" value="128"/> </enum> - <enum name="LayoutDirection"> - <enumerator name="LeftToRight" value="0"/> - <enumerator name="RightToLeft" value="1"/> - <enumerator name="LayoutDirectionAuto" value="2"/> + <enum name="TextStyle"> + <enumerator name="Normal" value="0"/> + <enumerator name="Outline" value="1"/> + <enumerator name="Raised" value="2"/> + <enumerator name="Sunken" value="3"/> </enum> - <enum name="DropAction"> - <enumerator name="CopyAction" value="1"/> - <enumerator name="MoveAction" value="2"/> - <enumerator name="LinkAction" value="4"/> - <enumerator name="ActionMask" value="255"/> - <enumerator name="TargetMoveAction" value="32770"/> - <enumerator name="IgnoreAction" value="0"/> + <enum name="TextFormat"> + <enumerator name="PlainText" value="0"/> + <enumerator name="RichText" value="1"/> + <enumerator name="AutoText" value="2"/> + <enumerator name="StyledText" value="4"/> </enum> - <enum name="DropActions"> - <enumerator name="CopyAction" value="1"/> - <enumerator name="MoveAction" value="2"/> - <enumerator name="LinkAction" value="4"/> - <enumerator name="ActionMask" value="255"/> - <enumerator name="TargetMoveAction" value="32770"/> - <enumerator name="IgnoreAction" value="0"/> + <enum name="TextElideMode"> + <enumerator name="ElideLeft" value="0"/> + <enumerator name="ElideRight" value="1"/> + <enumerator name="ElideMiddle" value="2"/> + <enumerator name="ElideNone" value="3"/> </enum> - <enum name="CheckState"> - <enumerator name="Unchecked" value="0"/> - <enumerator name="PartiallyChecked" value="1"/> - <enumerator name="Checked" value="2"/> + <enum name="WrapMode"> + <enumerator name="NoWrap" value="0"/> + <enumerator name="WordWrap" value="1"/> + <enumerator name="WrapAnywhere" value="3"/> + <enumerator name="WrapAtWordBoundaryOrAnywhere" value="4"/> + <enumerator name="Wrap" value="4"/> </enum> - <enum name="ItemFlags"> - <enumerator name="NoItemFlags" value="0"/> - <enumerator name="ItemIsSelectable" value="1"/> - <enumerator name="ItemIsEditable" value="2"/> - <enumerator name="ItemIsDragEnabled" value="4"/> - <enumerator name="ItemIsDropEnabled" value="8"/> - <enumerator name="ItemIsUserCheckable" value="16"/> - <enumerator name="ItemIsEnabled" value="32"/> - <enumerator name="ItemIsTristate" value="64"/> + <property name="text" type="string"/> + <property name="font" type="QFont"/> + <property name="color" type="QColor"/> + <property name="style" type="TextStyle"/> + <property name="styleColor" type="QColor"/> + <property name="horizontalAlignment" type="HAlignment"/> + <property name="verticalAlignment" type="VAlignment"/> + <property name="wrapMode" type="WrapMode"/> + <property name="textFormat" type="TextFormat"/> + <property name="elide" type="TextElideMode"/> + <property name="paintedWidth" type="qreal"/> + <property name="paintedHeight" type="qreal"/> + <signal name="textChanged"> + <param name="text" type="string"/> + </signal> + <signal name="linkActivated"> + <param name="link" type="string"/> + </signal> + <signal name="fontChanged"> + <param name="font" type="QFont"/> + </signal> + <signal name="colorChanged"> + <param name="color" type="QColor"/> + </signal> + <signal name="styleChanged"> + <param name="style" type="TextStyle"/> + </signal> + <signal name="styleColorChanged"> + <param name="color" type="QColor"/> + </signal> + <signal name="horizontalAlignmentChanged"> + <param name="alignment" type="HAlignment"/> + </signal> + <signal name="verticalAlignmentChanged"> + <param name="alignment" type="VAlignment"/> + </signal> + <signal name="wrapModeChanged"/> + <signal name="textFormatChanged"> + <param name="textFormat" type="TextFormat"/> + </signal> + <signal name="elideModeChanged"> + <param name="mode" type="TextElideMode"/> + </signal> + <signal name="paintedSizeChanged"/> + </type> + <type name="QDeclarativeTextEdit" defaultProperty="data" extends="QDeclarativePaintedItem"> + <exports> + <export module="QtQuick" version="1.0" type="TextEdit"/> + <export module="Qt" version="4.7" type="TextEdit"/> + </exports> + <enum name="HAlignment"> + <enumerator name="AlignLeft" value="1"/> + <enumerator name="AlignRight" value="2"/> + <enumerator name="AlignHCenter" value="4"/> </enum> - <enum name="MatchFlags"> - <enumerator name="MatchExactly" value="0"/> - <enumerator name="MatchContains" value="1"/> - <enumerator name="MatchStartsWith" value="2"/> - <enumerator name="MatchEndsWith" value="3"/> - <enumerator name="MatchRegExp" value="4"/> - <enumerator name="MatchWildcard" value="5"/> - <enumerator name="MatchFixedString" value="8"/> - <enumerator name="MatchCaseSensitive" value="16"/> - <enumerator name="MatchWrap" value="32"/> - <enumerator name="MatchRecursive" value="64"/> + <enum name="VAlignment"> + <enumerator name="AlignTop" value="32"/> + <enumerator name="AlignBottom" value="64"/> + <enumerator name="AlignVCenter" value="128"/> </enum> - <enum name="WindowModality"> - <enumerator name="NonModal" value="0"/> - <enumerator name="WindowModal" value="1"/> - <enumerator name="ApplicationModal" value="2"/> + <enum name="TextFormat"> + <enumerator name="PlainText" value="0"/> + <enumerator name="RichText" value="1"/> + <enumerator name="AutoText" value="2"/> </enum> - <enum name="TextInteractionFlag"> - <enumerator name="NoTextInteraction" value="0"/> - <enumerator name="TextSelectableByMouse" value="1"/> - <enumerator name="TextSelectableByKeyboard" value="2"/> - <enumerator name="LinksAccessibleByMouse" value="4"/> - <enumerator name="LinksAccessibleByKeyboard" value="8"/> - <enumerator name="TextEditable" value="16"/> - <enumerator name="TextEditorInteraction" value="19"/> - <enumerator name="TextBrowserInteraction" value="13"/> + <enum name="WrapMode"> + <enumerator name="NoWrap" value="0"/> + <enumerator name="WordWrap" value="1"/> + <enumerator name="WrapAnywhere" value="3"/> + <enumerator name="WrapAtWordBoundaryOrAnywhere" value="4"/> + <enumerator name="Wrap" value="4"/> </enum> - <enum name="TextInteractionFlags"> - <enumerator name="NoTextInteraction" value="0"/> - <enumerator name="TextSelectableByMouse" value="1"/> - <enumerator name="TextSelectableByKeyboard" value="2"/> - <enumerator name="LinksAccessibleByMouse" value="4"/> - <enumerator name="LinksAccessibleByKeyboard" value="8"/> - <enumerator name="TextEditable" value="16"/> - <enumerator name="TextEditorInteraction" value="19"/> - <enumerator name="TextBrowserInteraction" value="13"/> + <property name="text" type="string"/> + <property name="color" type="QColor"/> + <property name="selectionColor" type="QColor"/> + <property name="selectedTextColor" type="QColor"/> + <property name="font" type="QFont"/> + <property name="horizontalAlignment" type="HAlignment"/> + <property name="verticalAlignment" type="VAlignment"/> + <property name="wrapMode" type="WrapMode"/> + <property name="paintedWidth" type="qreal"/> + <property name="paintedHeight" type="qreal"/> + <property name="textFormat" type="TextFormat"/> + <property name="readOnly" type="bool"/> + <property name="cursorVisible" type="bool"/> + <property name="cursorPosition" type="int"/> + <property name="cursorRectangle" type="QRect"/> + <property name="cursorDelegate" type="QDeclarativeComponent"/> + <property name="selectionStart" type="int"/> + <property name="selectionEnd" type="int"/> + <property name="selectedText" type="string"/> + <property name="activeFocusOnPress" type="bool"/> + <property name="persistentSelection" type="bool"/> + <property name="textMargin" type="qreal"/> + <property name="inputMethodHints" type="Qt.InputMethodHints"/> + <property name="selectByMouse" type="bool"/> + <signal name="textChanged"> + <param type="string"/> + </signal> + <signal name="paintedSizeChanged"/> + <signal name="cursorPositionChanged"/> + <signal name="cursorRectangleChanged"/> + <signal name="selectionStartChanged"/> + <signal name="selectionEndChanged"/> + <signal name="selectionChanged"/> + <signal name="colorChanged"> + <param name="color" type="QColor"/> + </signal> + <signal name="selectionColorChanged"> + <param name="color" type="QColor"/> + </signal> + <signal name="selectedTextColorChanged"> + <param name="color" type="QColor"/> + </signal> + <signal name="fontChanged"> + <param name="font" type="QFont"/> + </signal> + <signal name="horizontalAlignmentChanged"> + <param name="alignment" type="HAlignment"/> + </signal> + <signal name="verticalAlignmentChanged"> + <param name="alignment" type="VAlignment"/> + </signal> + <signal name="wrapModeChanged"/> + <signal name="textFormatChanged"> + <param name="textFormat" type="TextFormat"/> + </signal> + <signal name="readOnlyChanged"> + <param name="isReadOnly" type="bool"/> + </signal> + <signal name="cursorVisibleChanged"> + <param name="isCursorVisible" type="bool"/> + </signal> + <signal name="cursorDelegateChanged"/> + <signal name="activeFocusOnPressChanged"> + <param name="activeFocusOnPressed" type="bool"/> + </signal> + <signal name="persistentSelectionChanged"> + <param name="isPersistentSelection" type="bool"/> + </signal> + <signal name="textMarginChanged"> + <param name="textMargin" type="qreal"/> + </signal> + <signal name="selectByMouseChanged"> + <param name="selectByMouse" type="bool"/> + </signal> + <method name="selectAll"/> + <method name="selectWord"/> + <method name="select"> + <param name="start" type="int"/> + <param name="end" type="int"/> + </method> + <method name="cut"/> + <method name="copy"/> + <method name="paste"/> + <method name="openSoftwareInputPanel"/> + <method name="closeSoftwareInputPanel"/> + <method name="positionToRectangle" type="QRectF"> + <param type="int"/> + </method> + <method name="positionAt" type="int"> + <param name="x" type="int"/> + <param name="y" type="int"/> + </method> + <method name="moveCursorSelection"> + <param name="pos" type="int"/> + </method> + </type> + <type name="QDeclarativeTextInput" defaultProperty="data" extends="QDeclarativePaintedItem"> + <exports> + <export module="Qt" version="4.7" type="TextInput"/> + <export module="QtQuick" version="1.0" type="TextInput"/> + </exports> + <enum name="EchoMode"> + <enumerator name="Normal" value="0"/> + <enumerator name="NoEcho" value="1"/> + <enumerator name="Password" value="2"/> + <enumerator name="PasswordEchoOnEdit" value="3"/> </enum> - <enum name="SizeHint"> - <enumerator name="MinimumSize" value="0"/> - <enumerator name="PreferredSize" value="1"/> - <enumerator name="MaximumSize" value="2"/> - <enumerator name="MinimumDescent" value="3"/> - <enumerator name="NSizeHints" value="4"/> + <enum name="HAlignment"> + <enumerator name="AlignLeft" value="1"/> + <enumerator name="AlignRight" value="2"/> + <enumerator name="AlignHCenter" value="4"/> </enum> - </type> - <type name="Qt.AnchorAnimation" version="4.7" extends="Qt.Animation"> - <property name="targets" type="Qt.Item" isList="true"/> - <property name="duration" type="int"/> - <property name="easing" type="QEasingCurve"/> - <signal name="durationChanged"> - <param type="int"/> + <property name="text" type="string"/> + <property name="color" type="QColor"/> + <property name="selectionColor" type="QColor"/> + <property name="selectedTextColor" type="QColor"/> + <property name="font" type="QFont"/> + <property name="horizontalAlignment" type="HAlignment"/> + <property name="readOnly" type="bool"/> + <property name="cursorVisible" type="bool"/> + <property name="cursorPosition" type="int"/> + <property name="cursorRectangle" type="QRect"/> + <property name="cursorDelegate" type="QDeclarativeComponent"/> + <property name="selectionStart" type="int"/> + <property name="selectionEnd" type="int"/> + <property name="selectedText" type="string"/> + <property name="maximumLength" type="int"/> + <property name="validator" type="QValidator"/> + <property name="inputMask" type="string"/> + <property name="inputMethodHints" type="Qt.InputMethodHints"/> + <property name="acceptableInput" type="bool"/> + <property name="echoMode" type="EchoMode"/> + <property name="activeFocusOnPress" type="bool"/> + <property name="passwordCharacter" type="string"/> + <property name="displayText" type="string"/> + <property name="autoScroll" type="bool"/> + <property name="selectByMouse" type="bool"/> + <signal name="textChanged"/> + <signal name="cursorPositionChanged"/> + <signal name="selectionStartChanged"/> + <signal name="selectionEndChanged"/> + <signal name="selectedTextChanged"/> + <signal name="accepted"/> + <signal name="acceptableInputChanged"/> + <signal name="colorChanged"> + <param name="color" type="QColor"/> + </signal> + <signal name="selectionColorChanged"> + <param name="color" type="QColor"/> + </signal> + <signal name="selectedTextColorChanged"> + <param name="color" type="QColor"/> + </signal> + <signal name="fontChanged"> + <param name="font" type="QFont"/> + </signal> + <signal name="horizontalAlignmentChanged"> + <param name="alignment" type="HAlignment"/> + </signal> + <signal name="readOnlyChanged"> + <param name="isReadOnly" type="bool"/> + </signal> + <signal name="cursorVisibleChanged"> + <param name="isCursorVisible" type="bool"/> + </signal> + <signal name="cursorDelegateChanged"/> + <signal name="maximumLengthChanged"> + <param name="maximumLength" type="int"/> + </signal> + <signal name="validatorChanged"/> + <signal name="inputMaskChanged"> + <param name="inputMask" type="string"/> + </signal> + <signal name="echoModeChanged"> + <param name="echoMode" type="EchoMode"/> + </signal> + <signal name="passwordCharacterChanged"/> + <signal name="displayTextChanged"/> + <signal name="activeFocusOnPressChanged"> + <param name="activeFocusOnPress" type="bool"/> </signal> - <signal name="easingChanged"> - <param type="QEasingCurve"/> + <signal name="autoScrollChanged"> + <param name="autoScroll" type="bool"/> + </signal> + <signal name="selectByMouseChanged"> + <param name="selectByMouse" type="bool"/> </signal> + <method name="selectAll"/> + <method name="selectWord"/> + <method name="select"> + <param name="start" type="int"/> + <param name="end" type="int"/> + </method> + <method name="cut"/> + <method name="copy"/> + <method name="paste"/> + <method name="positionAt" type="int"> + <param name="x" type="int"/> + </method> + <method name="positionToRectangle" type="QRectF"> + <param name="pos" type="int"/> + </method> + <method name="moveCursorSelection"> + <param name="pos" type="int"/> + </method> + <method name="openSoftwareInputPanel"/> + <method name="closeSoftwareInputPanel"/> </type> - <type name="Qt.AnchorChanges" version="4.7" extends="QDeclarativeStateOperation"> - <property name="target" type="Qt.Item"/> - <property name="anchors" type="QDeclarativeAnchorSet"/> + <type name="QDeclarativeTimer" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="Timer"/> + <export module="Qt" version="4.7" type="Timer"/> + </exports> + <property name="interval" type="int"/> + <property name="running" type="bool"/> + <property name="repeat" type="bool"/> + <property name="triggeredOnStart" type="bool"/> + <property name="parent" type="QObject"/> + <signal name="triggered"/> + <signal name="runningChanged"/> + <signal name="intervalChanged"/> + <signal name="repeatChanged"/> + <signal name="triggeredOnStartChanged"/> + <method name="start"/> + <method name="stop"/> + <method name="restart"/> </type> - <type name="Qt.AnimatedImage" version="4.7" defaultProperty="data" extends="Qt.Image"> - <property name="playing" type="bool"/> - <property name="paused" type="bool"/> - <property name="currentFrame" type="int"/> - <property name="frameCount" type="int"/> - <property name="sourceSize" type="QSize"/> - <signal name="playingChanged"/> - <signal name="pausedChanged"/> - <signal name="frameChanged"/> - <signal name="sourceSizeChanged"/> + <type name="QDeclarativeTransition" defaultProperty="animations" extends="QObject"> + <exports> + <export module="Qt" version="4.7" type="Transition"/> + <export module="QtQuick" version="1.0" type="Transition"/> + </exports> + <property name="from" type="string"/> + <property name="to" type="string"/> + <property name="reversible" type="bool"/> + <property name="animations" type="QDeclarativeAbstractAnimation" isList="true"/> + <signal name="fromChanged"/> + <signal name="toChanged"/> + <signal name="reversibleChanged"/> </type> - <type name="Qt.Animation" version="4.7" extends="Qt.QtObject"> - <enum name="Loops"> - <enumerator name="Infinite" value="-2"/> + <type name="QDeclarativeTranslate" extends="QGraphicsTransform"> + <exports> + <export module="Qt" version="4.7" type="Translate"/> + <export module="QtQuick" version="1.0" type="Translate"/> + </exports> + <property name="x" type="qreal"/> + <property name="y" type="qreal"/> + <signal name="xChanged"/> + <signal name="yChanged"/> + </type> + <type name="QDeclarativeValueType" extends="QObject"/> + <type name="QDeclarativeVector3dAnimation" extends="QDeclarativePropertyAnimation"> + <exports> + <export module="QtQuick" version="1.0" type="Vector3dAnimation"/> + <export module="Qt" version="4.7" type="Vector3dAnimation"/> + </exports> + <property name="from" type="QVector3D"/> + <property name="to" type="QVector3D"/> + </type> + <type name="QDeclarativeViewSection" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="ViewSection"/> + <export module="Qt" version="4.7" type="ViewSection"/> + </exports> + <enum name="SectionCriteria"> + <enumerator name="FullString" value="0"/> + <enumerator name="FirstCharacter" value="1"/> </enum> - <property name="running" type="bool"/> - <property name="paused" type="bool"/> - <property name="alwaysRunToEnd" type="bool"/> - <property name="loops" type="int"/> - <signal name="started"/> - <signal name="completed"/> - <signal name="runningChanged"> - <param type="bool"/> + <property name="property" type="string"/> + <property name="criteria" type="SectionCriteria"/> + <property name="delegate" type="QDeclarativeComponent"/> + <signal name="propertyChanged"/> + <signal name="criteriaChanged"/> + <signal name="delegateChanged"/> + </type> + <type name="QDeclarativeVisualDataModel" defaultProperty="delegate" extends="QDeclarativeVisualModel"> + <exports> + <export module="QtQuick" version="1.0" type="VisualDataModel"/> + <export module="Qt" version="4.7" type="VisualDataModel"/> + </exports> + <property name="model" type="QVariant"/> + <property name="delegate" type="QDeclarativeComponent"/> + <property name="part" type="string"/> + <property name="parts" type="QObject"/> + <property name="rootIndex" type="QVariant"/> + <signal name="createdPackage"> + <param name="index" type="int"/> + <param name="package" type="QDeclarativePackage"/> </signal> - <signal name="pausedChanged"> - <param type="bool"/> + <signal name="destroyingPackage"> + <param name="package" type="QDeclarativePackage"/> </signal> - <signal name="alwaysRunToEndChanged"> - <param type="bool"/> + <signal name="rootIndexChanged"/> + <method name="modelIndex" type="QVariant"> + <param name="idx" type="int"/> + </method> + <method name="parentModelIndex" type="QVariant"/> + </type> + <type name="QDeclarativeVisualDataModelParts" extends="QObject"/> + <type name="QDeclarativeVisualItemModel" defaultProperty="children" extends="QDeclarativeVisualModel"> + <exports> + <export module="Qt" version="4.7" type="VisualItemModel"/> + <export module="QtQuick" version="1.0" type="VisualItemModel"/> + </exports> + <property name="children" type="QDeclarativeItem" isList="true"/> + <signal name="childrenChanged"/> + </type> + <type name="QDeclarativeVisualModel" extends="QObject"> + <property name="count" type="int"/> + <signal name="countChanged"/> + <signal name="itemsInserted"> + <param name="index" type="int"/> + <param name="count" type="int"/> </signal> - <signal name="loopCountChanged"> - <param type="int"/> + <signal name="itemsRemoved"> + <param name="index" type="int"/> + <param name="count" type="int"/> + </signal> + <signal name="itemsMoved"> + <param name="from" type="int"/> + <param name="to" type="int"/> + <param name="count" type="int"/> + </signal> + <signal name="modelReset"/> + <signal name="createdItem"> + <param name="index" type="int"/> + <param name="item" type="QDeclarativeItem"/> + </signal> + <signal name="destroyingItem"> + <param name="item" type="QDeclarativeItem"/> </signal> - <method name="restart"/> - <method name="start"/> - <method name="pause"/> - <method name="resume"/> - <method name="stop"/> - <method name="complete"/> - </type> - <type name="Qt.Behavior" version="4.7" defaultProperty="animation" extends="Qt.QtObject"> - <property name="animation" type="Qt.Animation"/> - <property name="enabled" type="bool"/> - <signal name="enabledChanged"/> </type> - <type name="Qt.Binding" version="4.7" extends="Qt.QtObject"> - <property name="target" type="Qt.QtObject"/> - <property name="property" type="string"/> - <property name="value" type="QVariant"/> - <property name="when" type="bool"/> + <type name="QDeclarativeWebSettings" extends="QObject"> + <property name="standardFontFamily" type="string"/> + <property name="fixedFontFamily" type="string"/> + <property name="serifFontFamily" type="string"/> + <property name="sansSerifFontFamily" type="string"/> + <property name="cursiveFontFamily" type="string"/> + <property name="fantasyFontFamily" type="string"/> + <property name="minimumFontSize" type="int"/> + <property name="minimumLogicalFontSize" type="int"/> + <property name="defaultFontSize" type="int"/> + <property name="defaultFixedFontSize" type="int"/> + <property name="autoLoadImages" type="bool"/> + <property name="javascriptEnabled" type="bool"/> + <property name="javaEnabled" type="bool"/> + <property name="pluginsEnabled" type="bool"/> + <property name="privateBrowsingEnabled" type="bool"/> + <property name="javascriptCanOpenWindows" type="bool"/> + <property name="javascriptCanAccessClipboard" type="bool"/> + <property name="developerExtrasEnabled" type="bool"/> + <property name="linksIncludedInFocusChain" type="bool"/> + <property name="zoomTextOnly" type="bool"/> + <property name="printElementBackgrounds" type="bool"/> + <property name="offlineStorageDatabaseEnabled" type="bool"/> + <property name="offlineWebApplicationCacheEnabled" type="bool"/> + <property name="localStorageDatabaseEnabled" type="bool"/> + <property name="localContentCanAccessRemoteUrls" type="bool"/> </type> - <type name="Qt.BorderImage" version="4.7" defaultProperty="data" extends="QDeclarativeImageBase"> - <enum name="TileMode"> - <enumerator name="Stretch" value="0"/> - <enumerator name="Repeat" value="1"/> - <enumerator name="Round" value="2"/> + <type name="QDeclarativeWebView" defaultProperty="data" extends="QDeclarativeItem"> + <exports> + <export module="QtWebKit" version="1.0" type="WebView"/> + </exports> + <enum name="Status"> + <enumerator name="Null" value="0"/> + <enumerator name="Ready" value="1"/> + <enumerator name="Loading" value="2"/> + <enumerator name="Error" value="3"/> </enum> - <property name="border" type="QDeclarativeScaleGrid"/> - <property name="horizontalTileMode" type="TileMode"/> - <property name="verticalTileMode" type="TileMode"/> - <signal name="horizontalTileModeChanged"/> - <signal name="verticalTileModeChanged"/> + <property name="title" type="string"/> + <property name="icon" type="QPixmap"/> + <property name="statusText" type="string"/> + <property name="html" type="string"/> + <property name="pressGrabTime" type="int"/> + <property name="preferredWidth" type="int"/> + <property name="preferredHeight" type="int"/> + <property name="url" type="QUrl"/> + <property name="progress" type="qreal"/> + <property name="status" type="Status"/> + <property name="reload" type="QAction"/> + <property name="back" type="QAction"/> + <property name="forward" type="QAction"/> + <property name="stop" type="QAction"/> + <property name="settings" type="QDeclarativeWebSettings"/> + <property name="javaScriptWindowObjects" type="QObject" isList="true"/> + <property name="newWindowComponent" type="QDeclarativeComponent"/> + <property name="newWindowParent" type="QDeclarativeItem"/> + <property name="renderingEnabled" type="bool"/> + <property name="contentsSize" type="QSize"/> + <property name="contentsScale" type="qreal"/> + <signal name="preferredWidthChanged"/> + <signal name="preferredHeightChanged"/> + <signal name="urlChanged"/> + <signal name="progressChanged"/> + <signal name="statusChanged"> + <param type="Status"/> + </signal> + <signal name="titleChanged"> + <param type="string"/> + </signal> + <signal name="iconChanged"/> + <signal name="statusTextChanged"/> + <signal name="htmlChanged"/> + <signal name="pressGrabTimeChanged"/> + <signal name="newWindowComponentChanged"/> + <signal name="newWindowParentChanged"/> + <signal name="renderingEnabledChanged"/> + <signal name="contentsSizeChanged"> + <param type="QSize"/> + </signal> + <signal name="contentsScaleChanged"/> + <signal name="loadStarted"/> + <signal name="loadFinished"/> + <signal name="loadFailed"/> + <signal name="doubleClick"> + <param name="clickX" type="int"/> + <param name="clickY" type="int"/> + </signal> + <signal name="zoomTo"> + <param name="zoom" type="qreal"/> + <param name="centerX" type="int"/> + <param name="centerY" type="int"/> + </signal> + <signal name="alert"> + <param name="message" type="string"/> + </signal> + <method name="evaluateJavaScript" type="QVariant"> + <param type="string"/> + </method> + <method name="heuristicZoom" type="bool"> + <param name="clickX" type="int"/> + <param name="clickY" type="int"/> + <param name="maxzoom" type="qreal"/> + </method> </type> - <type name="Qt.ColorAnimation" version="4.7" extends="Qt.PropertyAnimation"> - <property name="from" type="QColor"/> - <property name="to" type="QColor"/> + <type name="QDeclarativeWorkerScript" extends="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="WorkerScript"/> + <export module="Qt" version="4.7" type="WorkerScript"/> + </exports> + <property name="source" type="QUrl"/> + <signal name="sourceChanged"/> + <signal name="message"> + <param name="messageObject" type="QScriptValue"/> + </signal> + <method name="sendMessage"> + <param type="QScriptValue"/> + </method> </type> - <type name="Qt.Column" version="4.7" defaultProperty="data" extends="QDeclarativeBasePositioner"/> - <type name="Qt.Component" version="4.7" extends="Qt.QtObject"> + <type name="QDeclarativeXmlListModel" defaultProperty="roles" extends="QListModelInterface"> + <exports> + <export module="QtQuick" version="1.0" type="XmlListModel"/> + <export module="Qt" version="4.7" type="XmlListModel"/> + </exports> <enum name="Status"> <enumerator name="Null" value="0"/> <enumerator name="Ready" value="1"/> <enumerator name="Loading" value="2"/> <enumerator name="Error" value="3"/> </enum> - <property name="progress" type="qreal"/> <property name="status" type="Status"/> - <property name="url" type="QUrl"/> + <property name="progress" type="qreal"/> + <property name="source" type="QUrl"/> + <property name="xml" type="string"/> + <property name="query" type="string"/> + <property name="namespaceDeclarations" type="string"/> + <property name="roles" type="QDeclarativeXmlListModelRole" isList="true"/> + <property name="count" type="int"/> <signal name="statusChanged"> - <param type="QDeclarativeComponent.Status"/> + <param type="QDeclarativeXmlListModel.Status"/> </signal> <signal name="progressChanged"> - <param type="qreal"/> + <param name="progress" type="qreal"/> </signal> + <signal name="countChanged"/> + <signal name="sourceChanged"/> + <signal name="xmlChanged"/> + <signal name="queryChanged"/> + <signal name="namespaceDeclarationsChanged"/> + <method name="reload"/> + <method name="get" type="QScriptValue"> + <param name="index" type="int"/> + </method> <method name="errorString" type="string"/> </type> - <type name="Qt.Connections" version="4.7" extends="Qt.QtObject"> - <property name="target" type="Qt.QtObject"/> - <property name="ignoreUnknownSignals" type="bool"/> - <signal name="targetChanged"/> + <type name="QDeclarativeXmlListModelRole" extends="QObject"> + <exports> + <export module="Qt" version="4.7" type="XmlRole"/> + <export module="QtQuick" version="1.0" type="XmlRole"/> + </exports> + <property name="name" type="string"/> + <property name="query" type="string"/> + <property name="isKey" type="bool"/> + <signal name="nameChanged"/> + <signal name="queryChanged"/> + <signal name="isKeyChanged"/> </type> - <type name="Qt.DoubleValidator" version="4.7" extends="QValidator"> + <type name="QDoubleValidator" extends="QValidator"> + <exports> + <export module="QtQuick" version="1.0" type="DoubleValidator"/> + <export module="Qt" version="4.7" type="DoubleValidator"/> + </exports> <enum name="Notation"> <enumerator name="StandardNotation" value="0"/> <enumerator name="ScientificNotation" value="1"/> @@ -1673,1615 +2344,1294 @@ <property name="decimals" type="int"/> <property name="notation" type="Notation"/> </type> - <type name="Qt.Drag" version="4.7" extends="Qt.QtObject"> - <enum name="Axis"> - <enumerator name="XAxis" value="1"/> - <enumerator name="YAxis" value="2"/> - <enumerator name="XandYAxis" value="3"/> - </enum> - <property name="target" type="QGraphicsObject"/> - <property name="axis" type="Axis"/> - <property name="minimumX" type="qreal"/> - <property name="maximumX" type="qreal"/> - <property name="minimumY" type="qreal"/> - <property name="maximumY" type="qreal"/> - <property name="active" type="bool"/> - <property name="filterChildren" type="bool"/> - <signal name="targetChanged"/> + <type name="QGesture" extends="QObject"> + <exports> + <export module="Qt.labs.gestures" version="1.0" type="Gesture"/> + </exports> + <property name="state" type="Qt.GestureState"/> + <property name="gestureType" type="Qt.GestureType"/> + <property name="gestureCancelPolicy" type="QGesture.GestureCancelPolicy"/> + <property name="hotSpot" type="QPointF"/> + <property name="hasHotSpot" type="bool"/> + </type> + <type name="QGraphicsObject" defaultProperty="children" extends="QObject"> + <property name="parent" type="QGraphicsObject"/> + <property name="opacity" type="qreal"/> + <property name="enabled" type="bool"/> + <property name="visible" type="bool"/> + <property name="pos" type="QPointF"/> + <property name="x" type="qreal"/> + <property name="y" type="qreal"/> + <property name="z" type="qreal"/> + <property name="rotation" type="qreal"/> + <property name="scale" type="qreal"/> + <property name="transformOriginPoint" type="QPointF"/> + <property name="effect" type="QGraphicsEffect"/> + <property name="children" type="QGraphicsObject" isList="true"/> + <property name="width" type="qreal"/> + <property name="height" type="qreal"/> + <signal name="parentChanged"/> + <signal name="opacityChanged"/> + <signal name="visibleChanged"/> + <signal name="enabledChanged"/> + <signal name="xChanged"/> + <signal name="yChanged"/> + <signal name="zChanged"/> + <signal name="rotationChanged"/> + <signal name="scaleChanged"/> + <signal name="childrenChanged"/> + <signal name="widthChanged"/> + <signal name="heightChanged"/> + </type> + <type name="QGraphicsRotation" extends="QGraphicsTransform"> + <exports> + <export module="Qt" version="4.7" type="Rotation"/> + <export module="QtQuick" version="1.0" type="Rotation"/> + </exports> + <property name="origin" type="QVector3D"/> + <property name="angle" type="qreal"/> + <property name="axis" type="QVector3D"/> + <signal name="originChanged"/> + <signal name="angleChanged"/> <signal name="axisChanged"/> - <signal name="minimumXChanged"/> - <signal name="maximumXChanged"/> - <signal name="minimumYChanged"/> - <signal name="maximumYChanged"/> - <signal name="activeChanged"/> - <signal name="filterChildrenChanged"/> </type> - <type name="Qt.Easing" version="4.7" extends="QDeclarativeValueType"> - <enum name="Type"> - <enumerator name="Linear" value="0"/> - <enumerator name="InQuad" value="1"/> - <enumerator name="OutQuad" value="2"/> - <enumerator name="InOutQuad" value="3"/> - <enumerator name="OutInQuad" value="4"/> - <enumerator name="InCubic" value="5"/> - <enumerator name="OutCubic" value="6"/> - <enumerator name="InOutCubic" value="7"/> - <enumerator name="OutInCubic" value="8"/> - <enumerator name="InQuart" value="9"/> - <enumerator name="OutQuart" value="10"/> - <enumerator name="InOutQuart" value="11"/> - <enumerator name="OutInQuart" value="12"/> - <enumerator name="InQuint" value="13"/> - <enumerator name="OutQuint" value="14"/> - <enumerator name="InOutQuint" value="15"/> - <enumerator name="OutInQuint" value="16"/> - <enumerator name="InSine" value="17"/> - <enumerator name="OutSine" value="18"/> - <enumerator name="InOutSine" value="19"/> - <enumerator name="OutInSine" value="20"/> - <enumerator name="InExpo" value="21"/> - <enumerator name="OutExpo" value="22"/> - <enumerator name="InOutExpo" value="23"/> - <enumerator name="OutInExpo" value="24"/> - <enumerator name="InCirc" value="25"/> - <enumerator name="OutCirc" value="26"/> - <enumerator name="InOutCirc" value="27"/> - <enumerator name="OutInCirc" value="28"/> - <enumerator name="InElastic" value="29"/> - <enumerator name="OutElastic" value="30"/> - <enumerator name="InOutElastic" value="31"/> - <enumerator name="OutInElastic" value="32"/> - <enumerator name="InBack" value="33"/> - <enumerator name="OutBack" value="34"/> - <enumerator name="InOutBack" value="35"/> - <enumerator name="OutInBack" value="36"/> - <enumerator name="InBounce" value="37"/> - <enumerator name="OutBounce" value="38"/> - <enumerator name="InOutBounce" value="39"/> - <enumerator name="OutInBounce" value="40"/> - <enumerator name="InCurve" value="41"/> - <enumerator name="OutCurve" value="42"/> - <enumerator name="SineCurve" value="43"/> - <enumerator name="CosineCurve" value="44"/> - </enum> - <property name="type" type="Type"/> - <property name="amplitude" type="qreal"/> - <property name="overshoot" type="qreal"/> - <property name="period" type="qreal"/> + <type name="QGraphicsScale" extends="QGraphicsTransform"> + <exports> + <export module="Qt" version="4.7" type="Scale"/> + <export module="QtQuick" version="1.0" type="Scale"/> + </exports> + <property name="origin" type="QVector3D"/> + <property name="xScale" type="qreal"/> + <property name="yScale" type="qreal"/> + <property name="zScale" type="qreal"/> + <signal name="originChanged"/> + <signal name="xScaleChanged"/> + <signal name="yScaleChanged"/> + <signal name="zScaleChanged"/> + <signal name="scaleChanged"/> </type> - <type name="Qt.Flickable" version="4.7" defaultProperty="flickableData" extends="Qt.Item"> - <enum name="BoundsBehavior"> - <enumerator name="StopAtBounds" value="0"/> - <enumerator name="DragOverBounds" value="1"/> - <enumerator name="DragAndOvershootBounds" value="2"/> - </enum> - <enum name="FlickableDirection"> - <enumerator name="AutoFlickDirection" value="0"/> - <enumerator name="HorizontalFlick" value="1"/> - <enumerator name="VerticalFlick" value="2"/> - <enumerator name="HorizontalAndVerticalFlick" value="3"/> - </enum> - <property name="contentWidth" type="qreal"/> - <property name="contentHeight" type="qreal"/> - <property name="contentX" type="qreal"/> - <property name="contentY" type="qreal"/> - <property name="contentItem" type="Qt.Item"/> + <type name="QGraphicsTransform" extends="QObject"/> + <type name="QGraphicsWidget" defaultProperty="children" extends="__extended__.QGraphicsWidget"> + <exports> + <export module="Qt" version="4.7" type="QGraphicsWidget"/> + <export module="QtQuick" version="1.0" type="QGraphicsWidget"/> + </exports> + <property name="anchors" type="QDeclarativeAnchors"/> + <property name="left" type="QDeclarativeAnchorLine"/> + <property name="right" type="QDeclarativeAnchorLine"/> + <property name="horizontalCenter" type="QDeclarativeAnchorLine"/> + <property name="top" type="QDeclarativeAnchorLine"/> + <property name="bottom" type="QDeclarativeAnchorLine"/> + <property name="verticalCenter" type="QDeclarativeAnchorLine"/> + </type> + <type name="QIntValidator" extends="QValidator"> + <exports> + <export module="Qt" version="4.7" type="IntValidator"/> + <export module="QtQuick" version="1.0" type="IntValidator"/> + </exports> + <property name="bottom" type="int"/> + <property name="top" type="int"/> + </type> + <type name="QListModelInterface" extends="QObject"> + <signal name="itemsInserted"> + <param name="index" type="int"/> + <param name="count" type="int"/> + </signal> + <signal name="itemsRemoved"> + <param name="index" type="int"/> + <param name="count" type="int"/> + </signal> + <signal name="itemsMoved"> + <param name="from" type="int"/> + <param name="to" type="int"/> + <param name="count" type="int"/> + </signal> + <signal name="itemsChanged"> + <param name="index" type="int"/> + <param name="count" type="int"/> + <param name="roles" type="QList<int>"/> + </signal> + </type> + <type name="QObject"> + <exports> + <export module="QtQuick" version="1.0" type="QtObject"/> + <export module="Qt" version="4.7" type="QtObject"/> + </exports> + <property name="objectName" type="string"/> + <signal name="destroyed"> + <param type="QObject"/> + </signal> + <signal name="destroyed"/> + <method name="deleteLater"/> + </type> + <type name="QPanGesture" extends="QGesture"> + <exports> + <export module="Qt.labs.gestures" version="1.0" type="PanGesture"/> + </exports> + <property name="lastOffset" type="QPointF"/> + <property name="offset" type="QPointF"/> + <property name="delta" type="QPointF"/> + <property name="acceleration" type="qreal"/> <property name="horizontalVelocity" type="qreal"/> <property name="verticalVelocity" type="qreal"/> - <property name="boundsBehavior" type="BoundsBehavior"/> - <property name="maximumFlickVelocity" type="qreal"/> - <property name="flickDeceleration" type="qreal"/> - <property name="moving" type="bool"/> - <property name="movingHorizontally" type="bool"/> - <property name="movingVertically" type="bool"/> - <property name="flicking" type="bool"/> - <property name="flickingHorizontally" type="bool"/> - <property name="flickingVertically" type="bool"/> - <property name="flickableDirection" type="FlickableDirection"/> - <property name="interactive" type="bool"/> - <property name="pressDelay" type="int"/> - <property name="atXEnd" type="bool"/> - <property name="atYEnd" type="bool"/> - <property name="atXBeginning" type="bool"/> - <property name="atYBeginning" type="bool"/> - <property name="visibleArea" type="QDeclarativeFlickableVisibleArea"/> - <property name="flickableData" type="Qt.QtObject" isList="true"/> - <property name="flickableChildren" type="QGraphicsObject" isList="true"/> - <signal name="contentWidthChanged"/> - <signal name="contentHeightChanged"/> - <signal name="contentXChanged"/> - <signal name="contentYChanged"/> - <signal name="movingChanged"/> - <signal name="movingHorizontallyChanged"/> - <signal name="movingVerticallyChanged"/> - <signal name="flickingChanged"/> - <signal name="flickingHorizontallyChanged"/> - <signal name="flickingVerticallyChanged"/> - <signal name="horizontalVelocityChanged"/> - <signal name="verticalVelocityChanged"/> - <signal name="isAtBoundaryChanged"/> - <signal name="pageChanged"/> - <signal name="flickableDirectionChanged"/> - <signal name="interactiveChanged"/> - <signal name="boundsBehaviorChanged"/> - <signal name="maximumFlickVelocityChanged"/> - <signal name="flickDecelerationChanged"/> - <signal name="pressDelayChanged"/> - <signal name="movementStarted"/> - <signal name="movementEnded"/> - <signal name="flickStarted"/> - <signal name="flickEnded"/> </type> - <type name="Qt.Flipable" version="4.7" defaultProperty="data" extends="Qt.Item"> - <enum name="Side"> - <enumerator name="Front" value="0"/> - <enumerator name="Back" value="1"/> + <type name="QPinchGesture" extends="QGesture"> + <exports> + <export module="Qt.labs.gestures" version="1.0" type="PinchGesture"/> + </exports> + <enum name="ChangeFlag"> + <enumerator name="ScaleFactorChanged" value="1"/> + <enumerator name="RotationAngleChanged" value="2"/> + <enumerator name="CenterPointChanged" value="4"/> + </enum> + <enum name="ChangeFlags"> + <enumerator name="ScaleFactorChanged" value="1"/> + <enumerator name="RotationAngleChanged" value="2"/> + <enumerator name="CenterPointChanged" value="4"/> + </enum> + <property name="totalChangeFlags" type="ChangeFlags"/> + <property name="changeFlags" type="ChangeFlags"/> + <property name="totalScaleFactor" type="qreal"/> + <property name="lastScaleFactor" type="qreal"/> + <property name="scaleFactor" type="qreal"/> + <property name="totalRotationAngle" type="qreal"/> + <property name="lastRotationAngle" type="qreal"/> + <property name="rotationAngle" type="qreal"/> + <property name="startCenterPoint" type="QPointF"/> + <property name="lastCenterPoint" type="QPointF"/> + <property name="centerPoint" type="QPointF"/> + </type> + <type name="QRegExpValidator" extends="QValidator"> + <exports> + <export module="QtQuick" version="1.0" type="RegExpValidator"/> + <export module="Qt" version="4.7" type="RegExpValidator"/> + </exports> + <property name="regExp" type="QRegExp"/> + </type> + <type name="QSwipeGesture" extends="QGesture"> + <exports> + <export module="Qt.labs.gestures" version="1.0" type="SwipeGesture"/> + </exports> + <enum name="SwipeDirection"> + <enumerator name="NoDirection" value="0"/> + <enumerator name="Left" value="1"/> + <enumerator name="Right" value="2"/> + <enumerator name="Up" value="3"/> + <enumerator name="Down" value="4"/> + </enum> + <property name="horizontalDirection" type="SwipeDirection"/> + <property name="verticalDirection" type="SwipeDirection"/> + <property name="swipeAngle" type="qreal"/> + <property name="velocity" type="qreal"/> + </type> + <type name="QTapAndHoldGesture" extends="QGesture"> + <exports> + <export module="Qt.labs.gestures" version="1.0" type="TapAndHoldGesture"/> + </exports> + <property name="position" type="QPointF"/> + </type> + <type name="QTapGesture" extends="QGesture"> + <exports> + <export module="Qt.labs.gestures" version="1.0" type="TapGesture"/> + </exports> + <property name="position" type="QPointF"/> + </type> + <type name="QValidator" extends="QObject"/> + <type name="Qt"> + <enum name="GlobalColor"> + <enumerator name="color0" value="0"/> + <enumerator name="color1" value="1"/> + <enumerator name="black" value="2"/> + <enumerator name="white" value="3"/> + <enumerator name="darkGray" value="4"/> + <enumerator name="gray" value="5"/> + <enumerator name="lightGray" value="6"/> + <enumerator name="red" value="7"/> + <enumerator name="green" value="8"/> + <enumerator name="blue" value="9"/> + <enumerator name="cyan" value="10"/> + <enumerator name="magenta" value="11"/> + <enumerator name="yellow" value="12"/> + <enumerator name="darkRed" value="13"/> + <enumerator name="darkGreen" value="14"/> + <enumerator name="darkBlue" value="15"/> + <enumerator name="darkCyan" value="16"/> + <enumerator name="darkMagenta" value="17"/> + <enumerator name="darkYellow" value="18"/> + <enumerator name="transparent" value="19"/> </enum> - <property name="front" type="QGraphicsObject"/> - <property name="back" type="QGraphicsObject"/> - <property name="side" type="Side"/> - <signal name="sideChanged"/> - </type> - <type name="Qt.Flow" version="4.7" defaultProperty="data" extends="QDeclarativeBasePositioner"> - <enum name="Flow"> - <enumerator name="LeftToRight" value="0"/> - <enumerator name="TopToBottom" value="1"/> + <enum name="KeyboardModifiers"> + <enumerator name="NoModifier" value="0"/> + <enumerator name="ShiftModifier" value="33554432"/> + <enumerator name="ControlModifier" value="67108864"/> + <enumerator name="AltModifier" value="134217728"/> + <enumerator name="MetaModifier" value="268435456"/> + <enumerator name="KeypadModifier" value="536870912"/> + <enumerator name="GroupSwitchModifier" value="1073741824"/> + <enumerator name="KeyboardModifierMask" value="-33554432"/> </enum> - <property name="flow" type="Flow"/> - <signal name="flowChanged"/> - </type> - <type name="Qt.FocusPanel" version="4.7" defaultProperty="data" extends="Qt.Item"> - <property name="active" type="bool"/> - <signal name="activeChanged"/> - </type> - <type name="Qt.FocusScope" version="4.7" defaultProperty="data" extends="Qt.Item"/> - <type name="Qt.Font" version="4.7" extends="QDeclarativeValueType"> - <enum name="FontWeight"> - <enumerator name="Light" value="25"/> - <enumerator name="Normal" value="50"/> - <enumerator name="DemiBold" value="63"/> - <enumerator name="Bold" value="75"/> - <enumerator name="Black" value="87"/> + <enum name="MouseButtons"> + <enumerator name="NoButton" value="0"/> + <enumerator name="LeftButton" value="1"/> + <enumerator name="RightButton" value="2"/> + <enumerator name="MidButton" value="4"/> + <enumerator name="MiddleButton" value="4"/> + <enumerator name="XButton1" value="8"/> + <enumerator name="XButton2" value="16"/> + <enumerator name="MouseButtonMask" value="255"/> </enum> - <enum name="Capitalization"> - <enumerator name="MixedCase" value="0"/> - <enumerator name="AllUppercase" value="1"/> - <enumerator name="AllLowercase" value="2"/> - <enumerator name="SmallCaps" value="3"/> - <enumerator name="Capitalize" value="4"/> + <enum name="Orientation"> + <enumerator name="Horizontal" value="1"/> + <enumerator name="Vertical" value="2"/> </enum> - <property name="family" type="string"/> - <property name="bold" type="bool"/> - <property name="weight" type="FontWeight"/> - <property name="italic" type="bool"/> - <property name="underline" type="bool"/> - <property name="overline" type="bool"/> - <property name="strikeout" type="bool"/> - <property name="pointSize" type="qreal"/> - <property name="pixelSize" type="int"/> - <property name="capitalization" type="Capitalization"/> - <property name="letterSpacing" type="qreal"/> - <property name="wordSpacing" type="qreal"/> - </type> - <type name="Qt.FontLoader" version="4.7" extends="Qt.QtObject"> - <enum name="Status"> - <enumerator name="Null" value="0"/> - <enumerator name="Ready" value="1"/> - <enumerator name="Loading" value="2"/> - <enumerator name="Error" value="3"/> + <enum name="Orientations"> + <enumerator name="Horizontal" value="1"/> + <enumerator name="Vertical" value="2"/> </enum> - <property name="source" type="QUrl"/> - <property name="name" type="string"/> - <property name="status" type="Status"/> - <signal name="nameChanged"/> - <signal name="statusChanged"/> - </type> - <type name="Qt.Gradient" version="4.7" defaultProperty="stops" extends="Qt.QtObject"> - <property name="stops" type="Qt.GradientStop" isList="true"/> - <signal name="updated"/> - </type> - <type name="Qt.GradientStop" version="4.7" extends="Qt.QtObject"> - <property name="position" type="qreal"/> - <property name="color" type="QColor"/> - </type> - <type name="Qt.Grid" version="4.7" defaultProperty="data" extends="QDeclarativeBasePositioner"> - <enum name="Flow"> - <enumerator name="LeftToRight" value="0"/> - <enumerator name="TopToBottom" value="1"/> + <enum name="FocusPolicy"> + <enumerator name="NoFocus" value="0"/> + <enumerator name="TabFocus" value="1"/> + <enumerator name="ClickFocus" value="2"/> + <enumerator name="StrongFocus" value="11"/> + <enumerator name="WheelFocus" value="15"/> </enum> - <property name="rows" type="int"/> - <property name="columns" type="int"/> - <property name="flow" type="Flow"/> - <signal name="rowsChanged"/> - <signal name="columnsChanged"/> - <signal name="flowChanged"/> - </type> - <type name="Qt.GridView" version="4.7" defaultProperty="data" extends="Qt.Flickable"> - <enum name="HighlightRangeMode"> - <enumerator name="NoHighlightRange" value="0"/> - <enumerator name="ApplyRange" value="1"/> - <enumerator name="StrictlyEnforceRange" value="2"/> + <enum name="SortOrder"> + <enumerator name="AscendingOrder" value="0"/> + <enumerator name="DescendingOrder" value="1"/> </enum> - <enum name="Flow"> - <enumerator name="LeftToRight" value="0"/> - <enumerator name="TopToBottom" value="1"/> + <enum name="Alignment"> + <enumerator name="AlignLeft" value="1"/> + <enumerator name="AlignLeading" value="1"/> + <enumerator name="AlignRight" value="2"/> + <enumerator name="AlignTrailing" value="2"/> + <enumerator name="AlignHCenter" value="4"/> + <enumerator name="AlignJustify" value="8"/> + <enumerator name="AlignAbsolute" value="16"/> + <enumerator name="AlignHorizontal_Mask" value="31"/> + <enumerator name="AlignTop" value="32"/> + <enumerator name="AlignBottom" value="64"/> + <enumerator name="AlignVCenter" value="128"/> + <enumerator name="AlignVertical_Mask" value="224"/> + <enumerator name="AlignCenter" value="132"/> </enum> - <enum name="SnapMode"> - <enumerator name="NoSnap" value="0"/> - <enumerator name="SnapToRow" value="1"/> - <enumerator name="SnapOneRow" value="2"/> + <enum name="TextElideMode"> + <enumerator name="ElideLeft" value="0"/> + <enumerator name="ElideRight" value="1"/> + <enumerator name="ElideMiddle" value="2"/> + <enumerator name="ElideNone" value="3"/> </enum> - <enum name="PositionMode"> - <enumerator name="Beginning" value="0"/> - <enumerator name="Center" value="1"/> - <enumerator name="End" value="2"/> - <enumerator name="Visible" value="3"/> - <enumerator name="Contain" value="4"/> + <enum name="WindowType"> + <enumerator name="Widget" value="0"/> + <enumerator name="Window" value="1"/> + <enumerator name="Dialog" value="3"/> + <enumerator name="Sheet" value="5"/> + <enumerator name="Drawer" value="7"/> + <enumerator name="Popup" value="9"/> + <enumerator name="Tool" value="11"/> + <enumerator name="ToolTip" value="13"/> + <enumerator name="SplashScreen" value="15"/> + <enumerator name="Desktop" value="17"/> + <enumerator name="SubWindow" value="18"/> + <enumerator name="WindowType_Mask" value="255"/> + <enumerator name="MSWindowsFixedSizeDialogHint" value="256"/> + <enumerator name="MSWindowsOwnDC" value="512"/> + <enumerator name="X11BypassWindowManagerHint" value="1024"/> + <enumerator name="FramelessWindowHint" value="2048"/> + <enumerator name="WindowTitleHint" value="4096"/> + <enumerator name="WindowSystemMenuHint" value="8192"/> + <enumerator name="WindowMinimizeButtonHint" value="16384"/> + <enumerator name="WindowMaximizeButtonHint" value="32768"/> + <enumerator name="WindowMinMaxButtonsHint" value="49152"/> + <enumerator name="WindowContextHelpButtonHint" value="65536"/> + <enumerator name="WindowShadeButtonHint" value="131072"/> + <enumerator name="WindowStaysOnTopHint" value="262144"/> + <enumerator name="CustomizeWindowHint" value="33554432"/> + <enumerator name="WindowStaysOnBottomHint" value="67108864"/> + <enumerator name="WindowCloseButtonHint" value="134217728"/> + <enumerator name="MacWindowToolBarButtonHint" value="268435456"/> + <enumerator name="BypassGraphicsProxyWidget" value="536870912"/> + <enumerator name="WindowOkButtonHint" value="524288"/> + <enumerator name="WindowCancelButtonHint" value="1048576"/> + <enumerator name="WindowSoftkeysVisibleHint" value="1073741824"/> + <enumerator name="WindowSoftkeysRespondHint" value="-2147483648"/> </enum> - <property name="model" type="QVariant"/> - <property name="delegate" type="Qt.Component"/> - <property name="currentIndex" type="int"/> - <property name="currentItem" type="Qt.Item"/> - <property name="count" type="int"/> - <property name="highlight" type="Qt.Component"/> - <property name="highlightItem" type="Qt.Item"/> - <property name="highlightFollowsCurrentItem" type="bool"/> - <property name="highlightMoveDuration" type="int"/> - <property name="preferredHighlightBegin" type="qreal"/> - <property name="preferredHighlightEnd" type="qreal"/> - <property name="highlightRangeMode" type="HighlightRangeMode"/> - <property name="flow" type="Flow"/> - <property name="keyNavigationWraps" type="bool"/> - <property name="cacheBuffer" type="int"/> - <property name="cellWidth" type="int"/> - <property name="cellHeight" type="int"/> - <property name="snapMode" type="SnapMode"/> - <property name="header" type="Qt.Component"/> - <property name="footer" type="Qt.Component"/> - <signal name="countChanged"/> - <signal name="currentIndexChanged"/> - <signal name="cellWidthChanged"/> - <signal name="cellHeightChanged"/> - <signal name="highlightChanged"/> - <signal name="highlightItemChanged"/> - <signal name="preferredHighlightBeginChanged"/> - <signal name="preferredHighlightEndChanged"/> - <signal name="highlightRangeModeChanged"/> - <signal name="highlightMoveDurationChanged"/> - <signal name="modelChanged"/> - <signal name="delegateChanged"/> - <signal name="flowChanged"/> - <signal name="keyNavigationWrapsChanged"/> - <signal name="cacheBufferChanged"/> - <signal name="snapModeChanged"/> - <signal name="headerChanged"/> - <signal name="footerChanged"/> - <method name="moveCurrentIndexUp"/> - <method name="moveCurrentIndexDown"/> - <method name="moveCurrentIndexLeft"/> - <method name="moveCurrentIndexRight"/> - <method name="positionViewAtIndex"> - <param name="index" type="int"/> - <param name="mode" type="int"/> - </method> - <method name="indexAt" type="int"> - <param name="x" type="int"/> - <param name="y" type="int"/> - </method> - </type> - <type name="Qt.Image" version="4.7" defaultProperty="data" extends="QDeclarativeImageBase"> - <enum name="FillMode"> - <enumerator name="Stretch" value="0"/> - <enumerator name="PreserveAspectFit" value="1"/> - <enumerator name="PreserveAspectCrop" value="2"/> - <enumerator name="Tile" value="3"/> - <enumerator name="TileVertically" value="4"/> - <enumerator name="TileHorizontally" value="5"/> + <enum name="WindowFlags"> + <enumerator name="Widget" value="0"/> + <enumerator name="Window" value="1"/> + <enumerator name="Dialog" value="3"/> + <enumerator name="Sheet" value="5"/> + <enumerator name="Drawer" value="7"/> + <enumerator name="Popup" value="9"/> + <enumerator name="Tool" value="11"/> + <enumerator name="ToolTip" value="13"/> + <enumerator name="SplashScreen" value="15"/> + <enumerator name="Desktop" value="17"/> + <enumerator name="SubWindow" value="18"/> + <enumerator name="WindowType_Mask" value="255"/> + <enumerator name="MSWindowsFixedSizeDialogHint" value="256"/> + <enumerator name="MSWindowsOwnDC" value="512"/> + <enumerator name="X11BypassWindowManagerHint" value="1024"/> + <enumerator name="FramelessWindowHint" value="2048"/> + <enumerator name="WindowTitleHint" value="4096"/> + <enumerator name="WindowSystemMenuHint" value="8192"/> + <enumerator name="WindowMinimizeButtonHint" value="16384"/> + <enumerator name="WindowMaximizeButtonHint" value="32768"/> + <enumerator name="WindowMinMaxButtonsHint" value="49152"/> + <enumerator name="WindowContextHelpButtonHint" value="65536"/> + <enumerator name="WindowShadeButtonHint" value="131072"/> + <enumerator name="WindowStaysOnTopHint" value="262144"/> + <enumerator name="CustomizeWindowHint" value="33554432"/> + <enumerator name="WindowStaysOnBottomHint" value="67108864"/> + <enumerator name="WindowCloseButtonHint" value="134217728"/> + <enumerator name="MacWindowToolBarButtonHint" value="268435456"/> + <enumerator name="BypassGraphicsProxyWidget" value="536870912"/> + <enumerator name="WindowOkButtonHint" value="524288"/> + <enumerator name="WindowCancelButtonHint" value="1048576"/> + <enumerator name="WindowSoftkeysVisibleHint" value="1073741824"/> + <enumerator name="WindowSoftkeysRespondHint" value="-2147483648"/> </enum> - <property name="fillMode" type="FillMode"/> - <property name="paintedWidth" type="qreal"/> - <property name="paintedHeight" type="qreal"/> - <signal name="fillModeChanged"/> - <signal name="paintedGeometryChanged"/> - </type> - <type name="Qt.IntValidator" version="4.7" extends="QValidator"> - <property name="bottom" type="int"/> - <property name="top" type="int"/> - </type> - <type name="Qt.Item" version="4.7" defaultProperty="data" extends="QGraphicsObject"> - <enum name="TransformOrigin"> - <enumerator name="TopLeft" value="0"/> - <enumerator name="Top" value="1"/> - <enumerator name="TopRight" value="2"/> - <enumerator name="Left" value="3"/> - <enumerator name="Center" value="4"/> - <enumerator name="Right" value="5"/> - <enumerator name="BottomLeft" value="6"/> - <enumerator name="Bottom" value="7"/> - <enumerator name="BottomRight" value="8"/> + <enum name="WindowState"> + <enumerator name="WindowNoState" value="0"/> + <enumerator name="WindowMinimized" value="1"/> + <enumerator name="WindowMaximized" value="2"/> + <enumerator name="WindowFullScreen" value="4"/> + <enumerator name="WindowActive" value="8"/> </enum> - <property name="parent" type="Qt.Item"/> - <property name="data" type="Qt.QtObject" isList="true"/> - <property name="resources" type="Qt.QtObject" isList="true"/> - <property name="states" type="Qt.State" isList="true"/> - <property name="transitions" type="Qt.Transition" isList="true"/> - <property name="state" type="string"/> - <property name="childrenRect" type="QRectF"/> - <property name="anchors" type="QDeclarativeAnchors"/> - <property name="left" type="QDeclarativeAnchorLine"/> - <property name="right" type="QDeclarativeAnchorLine"/> - <property name="horizontalCenter" type="QDeclarativeAnchorLine"/> - <property name="top" type="QDeclarativeAnchorLine"/> - <property name="bottom" type="QDeclarativeAnchorLine"/> - <property name="verticalCenter" type="QDeclarativeAnchorLine"/> - <property name="baseline" type="QDeclarativeAnchorLine"/> - <property name="baselineOffset" type="qreal"/> - <property name="clip" type="bool"/> - <property name="focus" type="bool"/> - <property name="activeFocus" type="bool"/> - <property name="transform" type="QGraphicsTransform" isList="true"/> - <property name="transformOrigin" type="TransformOrigin"/> - <property name="transformOriginPoint" type="QPointF"/> - <property name="smooth" type="bool"/> - <signal name="childrenRectChanged"> - <param type="QRectF"/> - </signal> - <signal name="baselineOffsetChanged"> - <param type="qreal"/> - </signal> - <signal name="stateChanged"> - <param type="string"/> - </signal> - <signal name="focusChanged"> - <param type="bool"/> - </signal> - <signal name="activeFocusChanged"> - <param type="bool"/> - </signal> - <signal name="parentChanged"> - <param type="Qt.Item"/> - </signal> - <signal name="transformOriginChanged"> - <param type="TransformOrigin"/> - </signal> - <signal name="smoothChanged"> - <param type="bool"/> - </signal> - <signal name="clipChanged"> - <param type="bool"/> - </signal> - <method name="mapFromItem" type="QScriptValue"> - <param name="item" type="QScriptValue"/> - <param name="x" type="qreal"/> - <param name="y" type="qreal"/> - </method> - <method name="mapToItem" type="QScriptValue"> - <param name="item" type="QScriptValue"/> - <param name="x" type="qreal"/> - <param name="y" type="qreal"/> - </method> - <method name="forceActiveFocus"/> - <method name="childAt" type="QDeclarativeItem*"> - <param name="x" type="qreal"/> - <param name="y" type="qreal"/> - </method> - </type> - <type name="Qt.KeyNavigation" version="4.7" extends="Qt.QtObject"> - <enum name="Priority"> - <enumerator name="BeforeItem" value="0"/> - <enumerator name="AfterItem" value="1"/> + <enum name="WindowStates"> + <enumerator name="WindowNoState" value="0"/> + <enumerator name="WindowMinimized" value="1"/> + <enumerator name="WindowMaximized" value="2"/> + <enumerator name="WindowFullScreen" value="4"/> + <enumerator name="WindowActive" value="8"/> </enum> - <property name="left" type="Qt.Item"/> - <property name="right" type="Qt.Item"/> - <property name="up" type="Qt.Item"/> - <property name="down" type="Qt.Item"/> - <property name="tab" type="Qt.Item"/> - <property name="backtab" type="Qt.Item"/> - <property name="priority" type="Priority"/> - <signal name="leftChanged"/> - <signal name="rightChanged"/> - <signal name="upChanged"/> - <signal name="downChanged"/> - <signal name="tabChanged"/> - <signal name="backtabChanged"/> - <signal name="priorityChanged"/> - </type> - <type name="Qt.Keys" version="4.7" extends="Qt.QtObject"> - <enum name="Priority"> - <enumerator name="BeforeItem" value="0"/> - <enumerator name="AfterItem" value="1"/> + <enum name="WidgetAttribute"> + <enumerator name="WA_Disabled" value="0"/> + <enumerator name="WA_UnderMouse" value="1"/> + <enumerator name="WA_MouseTracking" value="2"/> + <enumerator name="WA_ContentsPropagated" value="3"/> + <enumerator name="WA_OpaquePaintEvent" value="4"/> + <enumerator name="WA_NoBackground" value="4"/> + <enumerator name="WA_StaticContents" value="5"/> + <enumerator name="WA_LaidOut" value="7"/> + <enumerator name="WA_PaintOnScreen" value="8"/> + <enumerator name="WA_NoSystemBackground" value="9"/> + <enumerator name="WA_UpdatesDisabled" value="10"/> + <enumerator name="WA_Mapped" value="11"/> + <enumerator name="WA_MacNoClickThrough" value="12"/> + <enumerator name="WA_PaintOutsidePaintEvent" value="13"/> + <enumerator name="WA_InputMethodEnabled" value="14"/> + <enumerator name="WA_WState_Visible" value="15"/> + <enumerator name="WA_WState_Hidden" value="16"/> + <enumerator name="WA_ForceDisabled" value="32"/> + <enumerator name="WA_KeyCompression" value="33"/> + <enumerator name="WA_PendingMoveEvent" value="34"/> + <enumerator name="WA_PendingResizeEvent" value="35"/> + <enumerator name="WA_SetPalette" value="36"/> + <enumerator name="WA_SetFont" value="37"/> + <enumerator name="WA_SetCursor" value="38"/> + <enumerator name="WA_NoChildEventsFromChildren" value="39"/> + <enumerator name="WA_WindowModified" value="41"/> + <enumerator name="WA_Resized" value="42"/> + <enumerator name="WA_Moved" value="43"/> + <enumerator name="WA_PendingUpdate" value="44"/> + <enumerator name="WA_InvalidSize" value="45"/> + <enumerator name="WA_MacBrushedMetal" value="46"/> + <enumerator name="WA_MacMetalStyle" value="46"/> + <enumerator name="WA_CustomWhatsThis" value="47"/> + <enumerator name="WA_LayoutOnEntireRect" value="48"/> + <enumerator name="WA_OutsideWSRange" value="49"/> + <enumerator name="WA_GrabbedShortcut" value="50"/> + <enumerator name="WA_TransparentForMouseEvents" value="51"/> + <enumerator name="WA_PaintUnclipped" value="52"/> + <enumerator name="WA_SetWindowIcon" value="53"/> + <enumerator name="WA_NoMouseReplay" value="54"/> + <enumerator name="WA_DeleteOnClose" value="55"/> + <enumerator name="WA_RightToLeft" value="56"/> + <enumerator name="WA_SetLayoutDirection" value="57"/> + <enumerator name="WA_NoChildEventsForParent" value="58"/> + <enumerator name="WA_ForceUpdatesDisabled" value="59"/> + <enumerator name="WA_WState_Created" value="60"/> + <enumerator name="WA_WState_CompressKeys" value="61"/> + <enumerator name="WA_WState_InPaintEvent" value="62"/> + <enumerator name="WA_WState_Reparented" value="63"/> + <enumerator name="WA_WState_ConfigPending" value="64"/> + <enumerator name="WA_WState_Polished" value="66"/> + <enumerator name="WA_WState_DND" value="67"/> + <enumerator name="WA_WState_OwnSizePolicy" value="68"/> + <enumerator name="WA_WState_ExplicitShowHide" value="69"/> + <enumerator name="WA_ShowModal" value="70"/> + <enumerator name="WA_MouseNoMask" value="71"/> + <enumerator name="WA_GroupLeader" value="72"/> + <enumerator name="WA_NoMousePropagation" value="73"/> + <enumerator name="WA_Hover" value="74"/> + <enumerator name="WA_InputMethodTransparent" value="75"/> + <enumerator name="WA_QuitOnClose" value="76"/> + <enumerator name="WA_KeyboardFocusChange" value="77"/> + <enumerator name="WA_AcceptDrops" value="78"/> + <enumerator name="WA_DropSiteRegistered" value="79"/> + <enumerator name="WA_ForceAcceptDrops" value="79"/> + <enumerator name="WA_WindowPropagation" value="80"/> + <enumerator name="WA_NoX11EventCompression" value="81"/> + <enumerator name="WA_TintedBackground" value="82"/> + <enumerator name="WA_X11OpenGLOverlay" value="83"/> + <enumerator name="WA_AlwaysShowToolTips" value="84"/> + <enumerator name="WA_MacOpaqueSizeGrip" value="85"/> + <enumerator name="WA_SetStyle" value="86"/> + <enumerator name="WA_SetLocale" value="87"/> + <enumerator name="WA_MacShowFocusRect" value="88"/> + <enumerator name="WA_MacNormalSize" value="89"/> + <enumerator name="WA_MacSmallSize" value="90"/> + <enumerator name="WA_MacMiniSize" value="91"/> + <enumerator name="WA_LayoutUsesWidgetRect" value="92"/> + <enumerator name="WA_StyledBackground" value="93"/> + <enumerator name="WA_MSWindowsUseDirect3D" value="94"/> + <enumerator name="WA_CanHostQMdiSubWindowTitleBar" value="95"/> + <enumerator name="WA_MacAlwaysShowToolWindow" value="96"/> + <enumerator name="WA_StyleSheet" value="97"/> + <enumerator name="WA_ShowWithoutActivating" value="98"/> + <enumerator name="WA_X11BypassTransientForHint" value="99"/> + <enumerator name="WA_NativeWindow" value="100"/> + <enumerator name="WA_DontCreateNativeAncestors" value="101"/> + <enumerator name="WA_MacVariableSize" value="102"/> + <enumerator name="WA_DontShowOnScreen" value="103"/> + <enumerator name="WA_X11NetWmWindowTypeDesktop" value="104"/> + <enumerator name="WA_X11NetWmWindowTypeDock" value="105"/> + <enumerator name="WA_X11NetWmWindowTypeToolBar" value="106"/> + <enumerator name="WA_X11NetWmWindowTypeMenu" value="107"/> + <enumerator name="WA_X11NetWmWindowTypeUtility" value="108"/> + <enumerator name="WA_X11NetWmWindowTypeSplash" value="109"/> + <enumerator name="WA_X11NetWmWindowTypeDialog" value="110"/> + <enumerator name="WA_X11NetWmWindowTypeDropDownMenu" value="111"/> + <enumerator name="WA_X11NetWmWindowTypePopupMenu" value="112"/> + <enumerator name="WA_X11NetWmWindowTypeToolTip" value="113"/> + <enumerator name="WA_X11NetWmWindowTypeNotification" value="114"/> + <enumerator name="WA_X11NetWmWindowTypeCombo" value="115"/> + <enumerator name="WA_X11NetWmWindowTypeDND" value="116"/> + <enumerator name="WA_MacFrameworkScaled" value="117"/> + <enumerator name="WA_SetWindowModality" value="118"/> + <enumerator name="WA_WState_WindowOpacitySet" value="119"/> + <enumerator name="WA_TranslucentBackground" value="120"/> + <enumerator name="WA_AcceptTouchEvents" value="121"/> + <enumerator name="WA_WState_AcceptedTouchBeginEvent" value="122"/> + <enumerator name="WA_TouchPadAcceptSingleTouchEvents" value="123"/> + <enumerator name="WA_MergeSoftkeys" value="124"/> + <enumerator name="WA_MergeSoftkeysRecursively" value="125"/> + <enumerator name="WA_X11DoNotAcceptFocus" value="132"/> + <enumerator name="WA_AttributeCount" value="133"/> + </enum> + <enum name="ApplicationAttribute"> + <enumerator name="AA_ImmediateWidgetCreation" value="0"/> + <enumerator name="AA_MSWindowsUseDirect3DByDefault" value="1"/> + <enumerator name="AA_DontShowIconsInMenus" value="2"/> + <enumerator name="AA_NativeWindows" value="3"/> + <enumerator name="AA_DontCreateNativeWidgetSiblings" value="4"/> + <enumerator name="AA_MacPluginApplication" value="5"/> + <enumerator name="AA_DontUseNativeMenuBar" value="6"/> + <enumerator name="AA_MacDontSwapCtrlAndMeta" value="7"/> + <enumerator name="AA_S60DontConstructApplicationPanes" value="8"/> + <enumerator name="AA_AttributeCount" value="9"/> + </enum> + <enum name="ImageConversionFlags"> + <enumerator name="ColorMode_Mask" value="3"/> + <enumerator name="AutoColor" value="0"/> + <enumerator name="ColorOnly" value="3"/> + <enumerator name="MonoOnly" value="2"/> + <enumerator name="AlphaDither_Mask" value="12"/> + <enumerator name="ThresholdAlphaDither" value="0"/> + <enumerator name="OrderedAlphaDither" value="4"/> + <enumerator name="DiffuseAlphaDither" value="8"/> + <enumerator name="NoAlpha" value="12"/> + <enumerator name="Dither_Mask" value="48"/> + <enumerator name="DiffuseDither" value="0"/> + <enumerator name="OrderedDither" value="16"/> + <enumerator name="ThresholdDither" value="32"/> + <enumerator name="DitherMode_Mask" value="192"/> + <enumerator name="AutoDither" value="0"/> + <enumerator name="PreferDither" value="64"/> + <enumerator name="AvoidDither" value="128"/> + <enumerator name="NoOpaqueDetection" value="256"/> + </enum> + <enum name="BGMode"> + <enumerator name="TransparentMode" value="0"/> + <enumerator name="OpaqueMode" value="1"/> </enum> - <property name="enabled" type="bool"/> - <property name="forwardTo" type="Qt.Item" isList="true"/> - <property name="priority" type="Priority"/> - <signal name="enabledChanged"/> - <signal name="priorityChanged"/> - <signal name="pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="released"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit0Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit1Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit2Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit3Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit4Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit5Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit6Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit7Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit8Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="digit9Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="leftPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="rightPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="upPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="downPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="tabPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="backtabPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="asteriskPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="numberSignPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="escapePressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="returnPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="enterPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="deletePressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="spacePressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="backPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="cancelPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="selectPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="yesPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="noPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="context1Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="context2Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="context3Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="context4Pressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="callPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="hangupPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="flipPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="menuPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="volumeUpPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - <signal name="volumeDownPressed"> - <param name="event" type="QDeclarativeKeyEvent"/> - </signal> - </type> - <type name="Qt.LayoutItem" version="4.7" defaultProperty="data" extends="Qt.Item"> - <property name="maximumSize" type="QSizeF"/> - <property name="minimumSize" type="QSizeF"/> - <property name="preferredSize" type="QSizeF"/> - <signal name="maximumSizeChanged"/> - <signal name="minimumSizeChanged"/> - <signal name="preferredSizeChanged"/> - </type> - <type name="Qt.ListElement" version="4.7" extends="Qt.QtObject"/> - <type name="Qt.ListModel" version="4.7" extends="QListModelInterface"> - <property name="count" type="int"/> - <signal name="countChanged"/> - <method name="clear"/> - <method name="remove"> - <param name="index" type="int"/> - </method> - <method name="append"> - <param type="QScriptValue"/> - </method> - <method name="insert"> - <param name="index" type="int"/> - <param type="QScriptValue"/> - </method> - <method name="get" type="QScriptValue"> - <param name="index" type="int"/> - </method> - <method name="set"> - <param name="index" type="int"/> - <param type="QScriptValue"/> - </method> - <method name="setProperty"> - <param name="index" type="int"/> - <param name="property" type="string"/> - <param name="value" type="QVariant"/> - </method> - <method name="move"> - <param name="from" type="int"/> - <param name="to" type="int"/> - <param name="count" type="int"/> - </method> - <method name="sync"/> - </type> - <type name="Qt.ListView" version="4.7" defaultProperty="data" extends="Qt.Flickable"> - <enum name="HighlightRangeMode"> - <enumerator name="NoHighlightRange" value="0"/> - <enumerator name="ApplyRange" value="1"/> - <enumerator name="StrictlyEnforceRange" value="2"/> + <enum name="Key"> + <enumerator name="Key_Escape" value="16777216"/> + <enumerator name="Key_Tab" value="16777217"/> + <enumerator name="Key_Backtab" value="16777218"/> + <enumerator name="Key_Backspace" value="16777219"/> + <enumerator name="Key_Return" value="16777220"/> + <enumerator name="Key_Enter" value="16777221"/> + <enumerator name="Key_Insert" value="16777222"/> + <enumerator name="Key_Delete" value="16777223"/> + <enumerator name="Key_Pause" value="16777224"/> + <enumerator name="Key_Print" value="16777225"/> + <enumerator name="Key_SysReq" value="16777226"/> + <enumerator name="Key_Clear" value="16777227"/> + <enumerator name="Key_Home" value="16777232"/> + <enumerator name="Key_End" value="16777233"/> + <enumerator name="Key_Left" value="16777234"/> + <enumerator name="Key_Up" value="16777235"/> + <enumerator name="Key_Right" value="16777236"/> + <enumerator name="Key_Down" value="16777237"/> + <enumerator name="Key_PageUp" value="16777238"/> + <enumerator name="Key_PageDown" value="16777239"/> + <enumerator name="Key_Shift" value="16777248"/> + <enumerator name="Key_Control" value="16777249"/> + <enumerator name="Key_Meta" value="16777250"/> + <enumerator name="Key_Alt" value="16777251"/> + <enumerator name="Key_CapsLock" value="16777252"/> + <enumerator name="Key_NumLock" value="16777253"/> + <enumerator name="Key_ScrollLock" value="16777254"/> + <enumerator name="Key_F1" value="16777264"/> + <enumerator name="Key_F2" value="16777265"/> + <enumerator name="Key_F3" value="16777266"/> + <enumerator name="Key_F4" value="16777267"/> + <enumerator name="Key_F5" value="16777268"/> + <enumerator name="Key_F6" value="16777269"/> + <enumerator name="Key_F7" value="16777270"/> + <enumerator name="Key_F8" value="16777271"/> + <enumerator name="Key_F9" value="16777272"/> + <enumerator name="Key_F10" value="16777273"/> + <enumerator name="Key_F11" value="16777274"/> + <enumerator name="Key_F12" value="16777275"/> + <enumerator name="Key_F13" value="16777276"/> + <enumerator name="Key_F14" value="16777277"/> + <enumerator name="Key_F15" value="16777278"/> + <enumerator name="Key_F16" value="16777279"/> + <enumerator name="Key_F17" value="16777280"/> + <enumerator name="Key_F18" value="16777281"/> + <enumerator name="Key_F19" value="16777282"/> + <enumerator name="Key_F20" value="16777283"/> + <enumerator name="Key_F21" value="16777284"/> + <enumerator name="Key_F22" value="16777285"/> + <enumerator name="Key_F23" value="16777286"/> + <enumerator name="Key_F24" value="16777287"/> + <enumerator name="Key_F25" value="16777288"/> + <enumerator name="Key_F26" value="16777289"/> + <enumerator name="Key_F27" value="16777290"/> + <enumerator name="Key_F28" value="16777291"/> + <enumerator name="Key_F29" value="16777292"/> + <enumerator name="Key_F30" value="16777293"/> + <enumerator name="Key_F31" value="16777294"/> + <enumerator name="Key_F32" value="16777295"/> + <enumerator name="Key_F33" value="16777296"/> + <enumerator name="Key_F34" value="16777297"/> + <enumerator name="Key_F35" value="16777298"/> + <enumerator name="Key_Super_L" value="16777299"/> + <enumerator name="Key_Super_R" value="16777300"/> + <enumerator name="Key_Menu" value="16777301"/> + <enumerator name="Key_Hyper_L" value="16777302"/> + <enumerator name="Key_Hyper_R" value="16777303"/> + <enumerator name="Key_Help" value="16777304"/> + <enumerator name="Key_Direction_L" value="16777305"/> + <enumerator name="Key_Direction_R" value="16777312"/> + <enumerator name="Key_Space" value="32"/> + <enumerator name="Key_Any" value="32"/> + <enumerator name="Key_Exclam" value="33"/> + <enumerator name="Key_QuoteDbl" value="34"/> + <enumerator name="Key_NumberSign" value="35"/> + <enumerator name="Key_Dollar" value="36"/> + <enumerator name="Key_Percent" value="37"/> + <enumerator name="Key_Ampersand" value="38"/> + <enumerator name="Key_Apostrophe" value="39"/> + <enumerator name="Key_ParenLeft" value="40"/> + <enumerator name="Key_ParenRight" value="41"/> + <enumerator name="Key_Asterisk" value="42"/> + <enumerator name="Key_Plus" value="43"/> + <enumerator name="Key_Comma" value="44"/> + <enumerator name="Key_Minus" value="45"/> + <enumerator name="Key_Period" value="46"/> + <enumerator name="Key_Slash" value="47"/> + <enumerator name="Key_0" value="48"/> + <enumerator name="Key_1" value="49"/> + <enumerator name="Key_2" value="50"/> + <enumerator name="Key_3" value="51"/> + <enumerator name="Key_4" value="52"/> + <enumerator name="Key_5" value="53"/> + <enumerator name="Key_6" value="54"/> + <enumerator name="Key_7" value="55"/> + <enumerator name="Key_8" value="56"/> + <enumerator name="Key_9" value="57"/> + <enumerator name="Key_Colon" value="58"/> + <enumerator name="Key_Semicolon" value="59"/> + <enumerator name="Key_Less" value="60"/> + <enumerator name="Key_Equal" value="61"/> + <enumerator name="Key_Greater" value="62"/> + <enumerator name="Key_Question" value="63"/> + <enumerator name="Key_At" value="64"/> + <enumerator name="Key_A" value="65"/> + <enumerator name="Key_B" value="66"/> + <enumerator name="Key_C" value="67"/> + <enumerator name="Key_D" value="68"/> + <enumerator name="Key_E" value="69"/> + <enumerator name="Key_F" value="70"/> + <enumerator name="Key_G" value="71"/> + <enumerator name="Key_H" value="72"/> + <enumerator name="Key_I" value="73"/> + <enumerator name="Key_J" value="74"/> + <enumerator name="Key_K" value="75"/> + <enumerator name="Key_L" value="76"/> + <enumerator name="Key_M" value="77"/> + <enumerator name="Key_N" value="78"/> + <enumerator name="Key_O" value="79"/> + <enumerator name="Key_P" value="80"/> + <enumerator name="Key_Q" value="81"/> + <enumerator name="Key_R" value="82"/> + <enumerator name="Key_S" value="83"/> + <enumerator name="Key_T" value="84"/> + <enumerator name="Key_U" value="85"/> + <enumerator name="Key_V" value="86"/> + <enumerator name="Key_W" value="87"/> + <enumerator name="Key_X" value="88"/> + <enumerator name="Key_Y" value="89"/> + <enumerator name="Key_Z" value="90"/> + <enumerator name="Key_BracketLeft" value="91"/> + <enumerator name="Key_Backslash" value="92"/> + <enumerator name="Key_BracketRight" value="93"/> + <enumerator name="Key_AsciiCircum" value="94"/> + <enumerator name="Key_Underscore" value="95"/> + <enumerator name="Key_QuoteLeft" value="96"/> + <enumerator name="Key_BraceLeft" value="123"/> + <enumerator name="Key_Bar" value="124"/> + <enumerator name="Key_BraceRight" value="125"/> + <enumerator name="Key_AsciiTilde" value="126"/> + <enumerator name="Key_nobreakspace" value="160"/> + <enumerator name="Key_exclamdown" value="161"/> + <enumerator name="Key_cent" value="162"/> + <enumerator name="Key_sterling" value="163"/> + <enumerator name="Key_currency" value="164"/> + <enumerator name="Key_yen" value="165"/> + <enumerator name="Key_brokenbar" value="166"/> + <enumerator name="Key_section" value="167"/> + <enumerator name="Key_diaeresis" value="168"/> + <enumerator name="Key_copyright" value="169"/> + <enumerator name="Key_ordfeminine" value="170"/> + <enumerator name="Key_guillemotleft" value="171"/> + <enumerator name="Key_notsign" value="172"/> + <enumerator name="Key_hyphen" value="173"/> + <enumerator name="Key_registered" value="174"/> + <enumerator name="Key_macron" value="175"/> + <enumerator name="Key_degree" value="176"/> + <enumerator name="Key_plusminus" value="177"/> + <enumerator name="Key_twosuperior" value="178"/> + <enumerator name="Key_threesuperior" value="179"/> + <enumerator name="Key_acute" value="180"/> + <enumerator name="Key_mu" value="181"/> + <enumerator name="Key_paragraph" value="182"/> + <enumerator name="Key_periodcentered" value="183"/> + <enumerator name="Key_cedilla" value="184"/> + <enumerator name="Key_onesuperior" value="185"/> + <enumerator name="Key_masculine" value="186"/> + <enumerator name="Key_guillemotright" value="187"/> + <enumerator name="Key_onequarter" value="188"/> + <enumerator name="Key_onehalf" value="189"/> + <enumerator name="Key_threequarters" value="190"/> + <enumerator name="Key_questiondown" value="191"/> + <enumerator name="Key_Agrave" value="192"/> + <enumerator name="Key_Aacute" value="193"/> + <enumerator name="Key_Acircumflex" value="194"/> + <enumerator name="Key_Atilde" value="195"/> + <enumerator name="Key_Adiaeresis" value="196"/> + <enumerator name="Key_Aring" value="197"/> + <enumerator name="Key_AE" value="198"/> + <enumerator name="Key_Ccedilla" value="199"/> + <enumerator name="Key_Egrave" value="200"/> + <enumerator name="Key_Eacute" value="201"/> + <enumerator name="Key_Ecircumflex" value="202"/> + <enumerator name="Key_Ediaeresis" value="203"/> + <enumerator name="Key_Igrave" value="204"/> + <enumerator name="Key_Iacute" value="205"/> + <enumerator name="Key_Icircumflex" value="206"/> + <enumerator name="Key_Idiaeresis" value="207"/> + <enumerator name="Key_ETH" value="208"/> + <enumerator name="Key_Ntilde" value="209"/> + <enumerator name="Key_Ograve" value="210"/> + <enumerator name="Key_Oacute" value="211"/> + <enumerator name="Key_Ocircumflex" value="212"/> + <enumerator name="Key_Otilde" value="213"/> + <enumerator name="Key_Odiaeresis" value="214"/> + <enumerator name="Key_multiply" value="215"/> + <enumerator name="Key_Ooblique" value="216"/> + <enumerator name="Key_Ugrave" value="217"/> + <enumerator name="Key_Uacute" value="218"/> + <enumerator name="Key_Ucircumflex" value="219"/> + <enumerator name="Key_Udiaeresis" value="220"/> + <enumerator name="Key_Yacute" value="221"/> + <enumerator name="Key_THORN" value="222"/> + <enumerator name="Key_ssharp" value="223"/> + <enumerator name="Key_division" value="247"/> + <enumerator name="Key_ydiaeresis" value="255"/> + <enumerator name="Key_AltGr" value="16781571"/> + <enumerator name="Key_Multi_key" value="16781600"/> + <enumerator name="Key_Codeinput" value="16781623"/> + <enumerator name="Key_SingleCandidate" value="16781628"/> + <enumerator name="Key_MultipleCandidate" value="16781629"/> + <enumerator name="Key_PreviousCandidate" value="16781630"/> + <enumerator name="Key_Mode_switch" value="16781694"/> + <enumerator name="Key_Kanji" value="16781601"/> + <enumerator name="Key_Muhenkan" value="16781602"/> + <enumerator name="Key_Henkan" value="16781603"/> + <enumerator name="Key_Romaji" value="16781604"/> + <enumerator name="Key_Hiragana" value="16781605"/> + <enumerator name="Key_Katakana" value="16781606"/> + <enumerator name="Key_Hiragana_Katakana" value="16781607"/> + <enumerator name="Key_Zenkaku" value="16781608"/> + <enumerator name="Key_Hankaku" value="16781609"/> + <enumerator name="Key_Zenkaku_Hankaku" value="16781610"/> + <enumerator name="Key_Touroku" value="16781611"/> + <enumerator name="Key_Massyo" value="16781612"/> + <enumerator name="Key_Kana_Lock" value="16781613"/> + <enumerator name="Key_Kana_Shift" value="16781614"/> + <enumerator name="Key_Eisu_Shift" value="16781615"/> + <enumerator name="Key_Eisu_toggle" value="16781616"/> + <enumerator name="Key_Hangul" value="16781617"/> + <enumerator name="Key_Hangul_Start" value="16781618"/> + <enumerator name="Key_Hangul_End" value="16781619"/> + <enumerator name="Key_Hangul_Hanja" value="16781620"/> + <enumerator name="Key_Hangul_Jamo" value="16781621"/> + <enumerator name="Key_Hangul_Romaja" value="16781622"/> + <enumerator name="Key_Hangul_Jeonja" value="16781624"/> + <enumerator name="Key_Hangul_Banja" value="16781625"/> + <enumerator name="Key_Hangul_PreHanja" value="16781626"/> + <enumerator name="Key_Hangul_PostHanja" value="16781627"/> + <enumerator name="Key_Hangul_Special" value="16781631"/> + <enumerator name="Key_Dead_Grave" value="16781904"/> + <enumerator name="Key_Dead_Acute" value="16781905"/> + <enumerator name="Key_Dead_Circumflex" value="16781906"/> + <enumerator name="Key_Dead_Tilde" value="16781907"/> + <enumerator name="Key_Dead_Macron" value="16781908"/> + <enumerator name="Key_Dead_Breve" value="16781909"/> + <enumerator name="Key_Dead_Abovedot" value="16781910"/> + <enumerator name="Key_Dead_Diaeresis" value="16781911"/> + <enumerator name="Key_Dead_Abovering" value="16781912"/> + <enumerator name="Key_Dead_Doubleacute" value="16781913"/> + <enumerator name="Key_Dead_Caron" value="16781914"/> + <enumerator name="Key_Dead_Cedilla" value="16781915"/> + <enumerator name="Key_Dead_Ogonek" value="16781916"/> + <enumerator name="Key_Dead_Iota" value="16781917"/> + <enumerator name="Key_Dead_Voiced_Sound" value="16781918"/> + <enumerator name="Key_Dead_Semivoiced_Sound" value="16781919"/> + <enumerator name="Key_Dead_Belowdot" value="16781920"/> + <enumerator name="Key_Dead_Hook" value="16781921"/> + <enumerator name="Key_Dead_Horn" value="16781922"/> + <enumerator name="Key_Back" value="16777313"/> + <enumerator name="Key_Forward" value="16777314"/> + <enumerator name="Key_Stop" value="16777315"/> + <enumerator name="Key_Refresh" value="16777316"/> + <enumerator name="Key_VolumeDown" value="16777328"/> + <enumerator name="Key_VolumeMute" value="16777329"/> + <enumerator name="Key_VolumeUp" value="16777330"/> + <enumerator name="Key_BassBoost" value="16777331"/> + <enumerator name="Key_BassUp" value="16777332"/> + <enumerator name="Key_BassDown" value="16777333"/> + <enumerator name="Key_TrebleUp" value="16777334"/> + <enumerator name="Key_TrebleDown" value="16777335"/> + <enumerator name="Key_MediaPlay" value="16777344"/> + <enumerator name="Key_MediaStop" value="16777345"/> + <enumerator name="Key_MediaPrevious" value="16777346"/> + <enumerator name="Key_MediaNext" value="16777347"/> + <enumerator name="Key_MediaRecord" value="16777348"/> + <enumerator name="Key_MediaPause" value="16777349"/> + <enumerator name="Key_MediaTogglePlayPause" value="16777350"/> + <enumerator name="Key_HomePage" value="16777360"/> + <enumerator name="Key_Favorites" value="16777361"/> + <enumerator name="Key_Search" value="16777362"/> + <enumerator name="Key_Standby" value="16777363"/> + <enumerator name="Key_OpenUrl" value="16777364"/> + <enumerator name="Key_LaunchMail" value="16777376"/> + <enumerator name="Key_LaunchMedia" value="16777377"/> + <enumerator name="Key_Launch0" value="16777378"/> + <enumerator name="Key_Launch1" value="16777379"/> + <enumerator name="Key_Launch2" value="16777380"/> + <enumerator name="Key_Launch3" value="16777381"/> + <enumerator name="Key_Launch4" value="16777382"/> + <enumerator name="Key_Launch5" value="16777383"/> + <enumerator name="Key_Launch6" value="16777384"/> + <enumerator name="Key_Launch7" value="16777385"/> + <enumerator name="Key_Launch8" value="16777386"/> + <enumerator name="Key_Launch9" value="16777387"/> + <enumerator name="Key_LaunchA" value="16777388"/> + <enumerator name="Key_LaunchB" value="16777389"/> + <enumerator name="Key_LaunchC" value="16777390"/> + <enumerator name="Key_LaunchD" value="16777391"/> + <enumerator name="Key_LaunchE" value="16777392"/> + <enumerator name="Key_LaunchF" value="16777393"/> + <enumerator name="Key_MonBrightnessUp" value="16777394"/> + <enumerator name="Key_MonBrightnessDown" value="16777395"/> + <enumerator name="Key_KeyboardLightOnOff" value="16777396"/> + <enumerator name="Key_KeyboardBrightnessUp" value="16777397"/> + <enumerator name="Key_KeyboardBrightnessDown" value="16777398"/> + <enumerator name="Key_PowerOff" value="16777399"/> + <enumerator name="Key_WakeUp" value="16777400"/> + <enumerator name="Key_Eject" value="16777401"/> + <enumerator name="Key_ScreenSaver" value="16777402"/> + <enumerator name="Key_WWW" value="16777403"/> + <enumerator name="Key_Memo" value="16777404"/> + <enumerator name="Key_LightBulb" value="16777405"/> + <enumerator name="Key_Shop" value="16777406"/> + <enumerator name="Key_History" value="16777407"/> + <enumerator name="Key_AddFavorite" value="16777408"/> + <enumerator name="Key_HotLinks" value="16777409"/> + <enumerator name="Key_BrightnessAdjust" value="16777410"/> + <enumerator name="Key_Finance" value="16777411"/> + <enumerator name="Key_Community" value="16777412"/> + <enumerator name="Key_AudioRewind" value="16777413"/> + <enumerator name="Key_BackForward" value="16777414"/> + <enumerator name="Key_ApplicationLeft" value="16777415"/> + <enumerator name="Key_ApplicationRight" value="16777416"/> + <enumerator name="Key_Book" value="16777417"/> + <enumerator name="Key_CD" value="16777418"/> + <enumerator name="Key_Calculator" value="16777419"/> + <enumerator name="Key_ToDoList" value="16777420"/> + <enumerator name="Key_ClearGrab" value="16777421"/> + <enumerator name="Key_Close" value="16777422"/> + <enumerator name="Key_Copy" value="16777423"/> + <enumerator name="Key_Cut" value="16777424"/> + <enumerator name="Key_Display" value="16777425"/> + <enumerator name="Key_DOS" value="16777426"/> + <enumerator name="Key_Documents" value="16777427"/> + <enumerator name="Key_Excel" value="16777428"/> + <enumerator name="Key_Explorer" value="16777429"/> + <enumerator name="Key_Game" value="16777430"/> + <enumerator name="Key_Go" value="16777431"/> + <enumerator name="Key_iTouch" value="16777432"/> + <enumerator name="Key_LogOff" value="16777433"/> + <enumerator name="Key_Market" value="16777434"/> + <enumerator name="Key_Meeting" value="16777435"/> + <enumerator name="Key_MenuKB" value="16777436"/> + <enumerator name="Key_MenuPB" value="16777437"/> + <enumerator name="Key_MySites" value="16777438"/> + <enumerator name="Key_News" value="16777439"/> + <enumerator name="Key_OfficeHome" value="16777440"/> + <enumerator name="Key_Option" value="16777441"/> + <enumerator name="Key_Paste" value="16777442"/> + <enumerator name="Key_Phone" value="16777443"/> + <enumerator name="Key_Calendar" value="16777444"/> + <enumerator name="Key_Reply" value="16777445"/> + <enumerator name="Key_Reload" value="16777446"/> + <enumerator name="Key_RotateWindows" value="16777447"/> + <enumerator name="Key_RotationPB" value="16777448"/> + <enumerator name="Key_RotationKB" value="16777449"/> + <enumerator name="Key_Save" value="16777450"/> + <enumerator name="Key_Send" value="16777451"/> + <enumerator name="Key_Spell" value="16777452"/> + <enumerator name="Key_SplitScreen" value="16777453"/> + <enumerator name="Key_Support" value="16777454"/> + <enumerator name="Key_TaskPane" value="16777455"/> + <enumerator name="Key_Terminal" value="16777456"/> + <enumerator name="Key_Tools" value="16777457"/> + <enumerator name="Key_Travel" value="16777458"/> + <enumerator name="Key_Video" value="16777459"/> + <enumerator name="Key_Word" value="16777460"/> + <enumerator name="Key_Xfer" value="16777461"/> + <enumerator name="Key_ZoomIn" value="16777462"/> + <enumerator name="Key_ZoomOut" value="16777463"/> + <enumerator name="Key_Away" value="16777464"/> + <enumerator name="Key_Messenger" value="16777465"/> + <enumerator name="Key_WebCam" value="16777466"/> + <enumerator name="Key_MailForward" value="16777467"/> + <enumerator name="Key_Pictures" value="16777468"/> + <enumerator name="Key_Music" value="16777469"/> + <enumerator name="Key_Battery" value="16777470"/> + <enumerator name="Key_Bluetooth" value="16777471"/> + <enumerator name="Key_WLAN" value="16777472"/> + <enumerator name="Key_UWB" value="16777473"/> + <enumerator name="Key_AudioForward" value="16777474"/> + <enumerator name="Key_AudioRepeat" value="16777475"/> + <enumerator name="Key_AudioRandomPlay" value="16777476"/> + <enumerator name="Key_Subtitle" value="16777477"/> + <enumerator name="Key_AudioCycleTrack" value="16777478"/> + <enumerator name="Key_Time" value="16777479"/> + <enumerator name="Key_Hibernate" value="16777480"/> + <enumerator name="Key_View" value="16777481"/> + <enumerator name="Key_TopMenu" value="16777482"/> + <enumerator name="Key_PowerDown" value="16777483"/> + <enumerator name="Key_Suspend" value="16777484"/> + <enumerator name="Key_ContrastAdjust" value="16777485"/> + <enumerator name="Key_LaunchG" value="16777486"/> + <enumerator name="Key_LaunchH" value="16777487"/> + <enumerator name="Key_MediaLast" value="16842751"/> + <enumerator name="Key_Select" value="16842752"/> + <enumerator name="Key_Yes" value="16842753"/> + <enumerator name="Key_No" value="16842754"/> + <enumerator name="Key_Cancel" value="16908289"/> + <enumerator name="Key_Printer" value="16908290"/> + <enumerator name="Key_Execute" value="16908291"/> + <enumerator name="Key_Sleep" value="16908292"/> + <enumerator name="Key_Play" value="16908293"/> + <enumerator name="Key_Zoom" value="16908294"/> + <enumerator name="Key_Context1" value="17825792"/> + <enumerator name="Key_Context2" value="17825793"/> + <enumerator name="Key_Context3" value="17825794"/> + <enumerator name="Key_Context4" value="17825795"/> + <enumerator name="Key_Call" value="17825796"/> + <enumerator name="Key_Hangup" value="17825797"/> + <enumerator name="Key_Flip" value="17825798"/> + <enumerator name="Key_ToggleCallHangup" value="17825799"/> + <enumerator name="Key_VoiceDial" value="17825800"/> + <enumerator name="Key_LastNumberRedial" value="17825801"/> + <enumerator name="Key_Camera" value="17825824"/> + <enumerator name="Key_CameraFocus" value="17825825"/> + <enumerator name="Key_unknown" value="33554431"/> </enum> - <enum name="Orientation"> - <enumerator name="Horizontal" value="1"/> - <enumerator name="Vertical" value="2"/> + <enum name="ArrowType"> + <enumerator name="NoArrow" value="0"/> + <enumerator name="UpArrow" value="1"/> + <enumerator name="DownArrow" value="2"/> + <enumerator name="LeftArrow" value="3"/> + <enumerator name="RightArrow" value="4"/> </enum> - <enum name="SnapMode"> - <enumerator name="NoSnap" value="0"/> - <enumerator name="SnapToItem" value="1"/> - <enumerator name="SnapOneItem" value="2"/> + <enum name="PenStyle"> + <enumerator name="NoPen" value="0"/> + <enumerator name="SolidLine" value="1"/> + <enumerator name="DashLine" value="2"/> + <enumerator name="DotLine" value="3"/> + <enumerator name="DashDotLine" value="4"/> + <enumerator name="DashDotDotLine" value="5"/> + <enumerator name="CustomDashLine" value="6"/> </enum> - <enum name="PositionMode"> - <enumerator name="Beginning" value="0"/> - <enumerator name="Center" value="1"/> - <enumerator name="End" value="2"/> - <enumerator name="Visible" value="3"/> - <enumerator name="Contain" value="4"/> + <enum name="PenCapStyle"> + <enumerator name="FlatCap" value="0"/> + <enumerator name="SquareCap" value="16"/> + <enumerator name="RoundCap" value="32"/> + <enumerator name="MPenCapStyle" value="48"/> </enum> - <property name="model" type="QVariant"/> - <property name="delegate" type="Qt.Component"/> - <property name="currentIndex" type="int"/> - <property name="currentItem" type="Qt.Item"/> - <property name="count" type="int"/> - <property name="highlight" type="Qt.Component"/> - <property name="highlightItem" type="Qt.Item"/> - <property name="highlightFollowsCurrentItem" type="bool"/> - <property name="highlightMoveSpeed" type="qreal"/> - <property name="highlightMoveDuration" type="int"/> - <property name="highlightResizeSpeed" type="qreal"/> - <property name="highlightResizeDuration" type="int"/> - <property name="preferredHighlightBegin" type="qreal"/> - <property name="preferredHighlightEnd" type="qreal"/> - <property name="highlightRangeMode" type="HighlightRangeMode"/> - <property name="spacing" type="qreal"/> - <property name="orientation" type="Orientation"/> - <property name="keyNavigationWraps" type="bool"/> - <property name="cacheBuffer" type="int"/> - <property name="section" type="Qt.ViewSection"/> - <property name="currentSection" type="string"/> - <property name="snapMode" type="SnapMode"/> - <property name="header" type="Qt.Component"/> - <property name="footer" type="Qt.Component"/> - <signal name="countChanged"/> - <signal name="spacingChanged"/> - <signal name="orientationChanged"/> - <signal name="currentIndexChanged"/> - <signal name="currentSectionChanged"/> - <signal name="highlightMoveSpeedChanged"/> - <signal name="highlightMoveDurationChanged"/> - <signal name="highlightResizeSpeedChanged"/> - <signal name="highlightResizeDurationChanged"/> - <signal name="highlightChanged"/> - <signal name="highlightItemChanged"/> - <signal name="modelChanged"/> - <signal name="delegateChanged"/> - <signal name="highlightFollowsCurrentItemChanged"/> - <signal name="preferredHighlightBeginChanged"/> - <signal name="preferredHighlightEndChanged"/> - <signal name="highlightRangeModeChanged"/> - <signal name="keyNavigationWrapsChanged"/> - <signal name="cacheBufferChanged"/> - <signal name="snapModeChanged"/> - <signal name="headerChanged"/> - <signal name="footerChanged"/> - <method name="incrementCurrentIndex"/> - <method name="decrementCurrentIndex"/> - <method name="positionViewAtIndex"> - <param name="index" type="int"/> - <param name="mode" type="int"/> - </method> - <method name="indexAt" type="int"> - <param name="x" type="int"/> - <param name="y" type="int"/> - </method> - </type> - <type name="Qt.Loader" version="4.7" defaultProperty="data" extends="Qt.Item"> - <enum name="Status"> - <enumerator name="Null" value="0"/> - <enumerator name="Ready" value="1"/> - <enumerator name="Loading" value="2"/> - <enumerator name="Error" value="3"/> + <enum name="PenJoinStyle"> + <enumerator name="MiterJoin" value="0"/> + <enumerator name="BevelJoin" value="64"/> + <enumerator name="RoundJoin" value="128"/> + <enumerator name="SvgMiterJoin" value="256"/> + <enumerator name="MPenJoinStyle" value="448"/> + </enum> + <enum name="BrushStyle"> + <enumerator name="NoBrush" value="0"/> + <enumerator name="SolidPattern" value="1"/> + <enumerator name="Dense1Pattern" value="2"/> + <enumerator name="Dense2Pattern" value="3"/> + <enumerator name="Dense3Pattern" value="4"/> + <enumerator name="Dense4Pattern" value="5"/> + <enumerator name="Dense5Pattern" value="6"/> + <enumerator name="Dense6Pattern" value="7"/> + <enumerator name="Dense7Pattern" value="8"/> + <enumerator name="HorPattern" value="9"/> + <enumerator name="VerPattern" value="10"/> + <enumerator name="CrossPattern" value="11"/> + <enumerator name="BDiagPattern" value="12"/> + <enumerator name="FDiagPattern" value="13"/> + <enumerator name="DiagCrossPattern" value="14"/> + <enumerator name="LinearGradientPattern" value="15"/> + <enumerator name="RadialGradientPattern" value="16"/> + <enumerator name="ConicalGradientPattern" value="17"/> + <enumerator name="TexturePattern" value="24"/> + </enum> + <enum name="SizeMode"> + <enumerator name="AbsoluteSize" value="0"/> + <enumerator name="RelativeSize" value="1"/> + </enum> + <enum name="CursorShape"> + <enumerator name="ArrowCursor" value="0"/> + <enumerator name="UpArrowCursor" value="1"/> + <enumerator name="CrossCursor" value="2"/> + <enumerator name="WaitCursor" value="3"/> + <enumerator name="IBeamCursor" value="4"/> + <enumerator name="SizeVerCursor" value="5"/> + <enumerator name="SizeHorCursor" value="6"/> + <enumerator name="SizeBDiagCursor" value="7"/> + <enumerator name="SizeFDiagCursor" value="8"/> + <enumerator name="SizeAllCursor" value="9"/> + <enumerator name="BlankCursor" value="10"/> + <enumerator name="SplitVCursor" value="11"/> + <enumerator name="SplitHCursor" value="12"/> + <enumerator name="PointingHandCursor" value="13"/> + <enumerator name="ForbiddenCursor" value="14"/> + <enumerator name="WhatsThisCursor" value="15"/> + <enumerator name="BusyCursor" value="16"/> + <enumerator name="OpenHandCursor" value="17"/> + <enumerator name="ClosedHandCursor" value="18"/> + <enumerator name="DragCopyCursor" value="19"/> + <enumerator name="DragMoveCursor" value="20"/> + <enumerator name="DragLinkCursor" value="21"/> + <enumerator name="LastCursor" value="21"/> + <enumerator name="BitmapCursor" value="24"/> + <enumerator name="CustomCursor" value="25"/> + </enum> + <enum name="TextFormat"> + <enumerator name="PlainText" value="0"/> + <enumerator name="RichText" value="1"/> + <enumerator name="AutoText" value="2"/> + <enumerator name="LogText" value="3"/> + </enum> + <enum name="AspectRatioMode"> + <enumerator name="IgnoreAspectRatio" value="0"/> + <enumerator name="KeepAspectRatio" value="1"/> + <enumerator name="KeepAspectRatioByExpanding" value="2"/> + </enum> + <enum name="DockWidgetArea"> + <enumerator name="LeftDockWidgetArea" value="1"/> + <enumerator name="RightDockWidgetArea" value="2"/> + <enumerator name="TopDockWidgetArea" value="4"/> + <enumerator name="BottomDockWidgetArea" value="8"/> + <enumerator name="DockWidgetArea_Mask" value="15"/> + <enumerator name="AllDockWidgetAreas" value="15"/> + <enumerator name="NoDockWidgetArea" value="0"/> + </enum> + <enum name="DockWidgetAreas"> + <enumerator name="LeftDockWidgetArea" value="1"/> + <enumerator name="RightDockWidgetArea" value="2"/> + <enumerator name="TopDockWidgetArea" value="4"/> + <enumerator name="BottomDockWidgetArea" value="8"/> + <enumerator name="DockWidgetArea_Mask" value="15"/> + <enumerator name="AllDockWidgetAreas" value="15"/> + <enumerator name="NoDockWidgetArea" value="0"/> + </enum> + <enum name="ToolBarArea"> + <enumerator name="LeftToolBarArea" value="1"/> + <enumerator name="RightToolBarArea" value="2"/> + <enumerator name="TopToolBarArea" value="4"/> + <enumerator name="BottomToolBarArea" value="8"/> + <enumerator name="ToolBarArea_Mask" value="15"/> + <enumerator name="AllToolBarAreas" value="15"/> + <enumerator name="NoToolBarArea" value="0"/> </enum> - <property name="source" type="QUrl"/> - <property name="sourceComponent" type="Qt.Component"/> - <property name="item" type="QGraphicsObject"/> - <property name="status" type="Status"/> - <property name="progress" type="qreal"/> - <signal name="itemChanged"/> - <signal name="sourceChanged"/> - <signal name="statusChanged"/> - <signal name="progressChanged"/> - <signal name="loaded"/> - </type> - <type name="Qt.MouseArea" version="4.7" defaultProperty="data" extends="Qt.Item"> - <property name="mouseX" type="qreal"/> - <property name="mouseY" type="qreal"/> - <property name="containsMouse" type="bool"/> - <property name="pressed" type="bool"/> - <property name="enabled" type="bool"/> - <property name="pressedButtons" type="Qt.MouseButtons"/> - <property name="acceptedButtons" type="Qt.MouseButtons"/> - <property name="hoverEnabled" type="bool"/> - <property name="drag" type="Qt.Drag"/> - <signal name="hoveredChanged"/> - <signal name="pressedChanged"/> - <signal name="enabledChanged"/> - <signal name="acceptedButtonsChanged"/> - <signal name="hoverEnabledChanged"/> - <signal name="positionChanged"> - <param name="mouse" type="QDeclarativeMouseEvent"/> - </signal> - <signal name="mousePositionChanged"> - <param name="mouse" type="QDeclarativeMouseEvent"/> - </signal> - <signal name="pressed"> - <param name="mouse" type="QDeclarativeMouseEvent"/> - </signal> - <signal name="pressAndHold"> - <param name="mouse" type="QDeclarativeMouseEvent"/> - </signal> - <signal name="released"> - <param name="mouse" type="QDeclarativeMouseEvent"/> - </signal> - <signal name="clicked"> - <param name="mouse" type="QDeclarativeMouseEvent"/> - </signal> - <signal name="doubleClicked"> - <param name="mouse" type="QDeclarativeMouseEvent"/> - </signal> - <signal name="entered"/> - <signal name="exited"/> - <signal name="canceled"/> - </type> - <type name="Qt.NumberAnimation" version="4.7" extends="Qt.PropertyAnimation"> - <property name="from" type="qreal"/> - <property name="to" type="qreal"/> - </type> - <type name="Qt.Package" version="4.7" defaultProperty="data" extends="Qt.QtObject"> - <property name="data" type="Qt.QtObject" isList="true"/> - </type> - <type name="Qt.ParallelAnimation" version="4.7" defaultProperty="animations" extends="QDeclarativeAnimationGroup"/> - <type name="Qt.ParentAnimation" version="4.7" defaultProperty="animations" extends="QDeclarativeAnimationGroup"> - <property name="target" type="Qt.Item"/> - <property name="newParent" type="Qt.Item"/> - <property name="via" type="Qt.Item"/> - <signal name="targetChanged"/> - <signal name="newParentChanged"/> - <signal name="viaChanged"/> - </type> - <type name="Qt.ParentChange" version="4.7" extends="QDeclarativeStateOperation"> - <property name="target" type="Qt.Item"/> - <property name="parent" type="Qt.Item"/> - <property name="x" type="QDeclarativeScriptString"/> - <property name="y" type="QDeclarativeScriptString"/> - <property name="width" type="QDeclarativeScriptString"/> - <property name="height" type="QDeclarativeScriptString"/> - <property name="scale" type="QDeclarativeScriptString"/> - <property name="rotation" type="QDeclarativeScriptString"/> - </type> - <type name="Qt.Path" version="4.7" defaultProperty="pathElements" extends="Qt.QtObject"> - <property name="pathElements" type="QDeclarativePathElement" isList="true"/> - <property name="startX" type="qreal"/> - <property name="startY" type="qreal"/> - <property name="closed" type="bool"/> - <signal name="changed"/> - <signal name="startXChanged"/> - <signal name="startYChanged"/> - </type> - <type name="Qt.PathAttribute" version="4.7" extends="QDeclarativePathElement"> - <property name="name" type="string"/> - <property name="value" type="qreal"/> - <signal name="nameChanged"/> - <signal name="valueChanged"/> - </type> - <type name="Qt.PathCubic" version="4.7" extends="QDeclarativeCurve"> - <property name="control1X" type="qreal"/> - <property name="control1Y" type="qreal"/> - <property name="control2X" type="qreal"/> - <property name="control2Y" type="qreal"/> - <signal name="control1XChanged"/> - <signal name="control1YChanged"/> - <signal name="control2XChanged"/> - <signal name="control2YChanged"/> - </type> - <type name="Qt.PathLine" version="4.7" extends="QDeclarativeCurve"/> - <type name="Qt.PathPercent" version="4.7" extends="QDeclarativePathElement"> - <property name="value" type="qreal"/> - </type> - <type name="Qt.PathQuad" version="4.7" extends="QDeclarativeCurve"> - <property name="controlX" type="qreal"/> - <property name="controlY" type="qreal"/> - <signal name="controlXChanged"/> - <signal name="controlYChanged"/> - </type> - <type name="Qt.PathView" version="4.7" defaultProperty="data" extends="Qt.Item"> - <enum name="HighlightRangeMode"> - <enumerator name="NoHighlightRange" value="0"/> - <enumerator name="ApplyRange" value="1"/> - <enumerator name="StrictlyEnforceRange" value="2"/> + <enum name="ToolBarAreas"> + <enumerator name="LeftToolBarArea" value="1"/> + <enumerator name="RightToolBarArea" value="2"/> + <enumerator name="TopToolBarArea" value="4"/> + <enumerator name="BottomToolBarArea" value="8"/> + <enumerator name="ToolBarArea_Mask" value="15"/> + <enumerator name="AllToolBarAreas" value="15"/> + <enumerator name="NoToolBarArea" value="0"/> </enum> - <property name="model" type="QVariant"/> - <property name="path" type="Qt.Path"/> - <property name="currentIndex" type="int"/> - <property name="offset" type="qreal"/> - <property name="highlight" type="Qt.Component"/> - <property name="highlightItem" type="Qt.Item"/> - <property name="preferredHighlightBegin" type="qreal"/> - <property name="preferredHighlightEnd" type="qreal"/> - <property name="highlightRangeMode" type="HighlightRangeMode"/> - <property name="highlightMoveDuration" type="int"/> - <property name="dragMargin" type="qreal"/> - <property name="flickDeceleration" type="qreal"/> - <property name="interactive" type="bool"/> - <property name="moving" type="bool"/> - <property name="flicking" type="bool"/> - <property name="count" type="int"/> - <property name="delegate" type="Qt.Component"/> - <property name="pathItemCount" type="int"/> - <signal name="currentIndexChanged"/> - <signal name="offsetChanged"/> - <signal name="modelChanged"/> - <signal name="countChanged"/> - <signal name="pathChanged"/> - <signal name="preferredHighlightBeginChanged"/> - <signal name="preferredHighlightEndChanged"/> - <signal name="highlightRangeModeChanged"/> - <signal name="dragMarginChanged"/> - <signal name="snapPositionChanged"/> - <signal name="delegateChanged"/> - <signal name="pathItemCountChanged"/> - <signal name="flickDecelerationChanged"/> - <signal name="interactiveChanged"/> - <signal name="movingChanged"/> - <signal name="flickingChanged"/> - <signal name="highlightChanged"/> - <signal name="highlightItemChanged"/> - <signal name="highlightMoveDurationChanged"/> - <signal name="movementStarted"/> - <signal name="movementEnded"/> - <signal name="flickStarted"/> - <signal name="flickEnded"/> - <method name="incrementCurrentIndex"/> - <method name="decrementCurrentIndex"/> - </type> - <type name="Qt.PauseAnimation" version="4.7" extends="Qt.Animation"> - <property name="duration" type="int"/> - <signal name="durationChanged"> - <param type="int"/> - </signal> - </type> - <type name="Qt.PropertyAction" version="4.7" extends="Qt.Animation"> - <property name="target" type="Qt.QtObject"/> - <property name="property" type="string"/> - <property name="properties" type="string"/> - <property name="targets" type="Qt.QtObject" isList="true"/> - <property name="exclude" type="Qt.QtObject" isList="true"/> - <property name="value" type="QVariant"/> - <signal name="valueChanged"> - <param type="QVariant"/> - </signal> - <signal name="propertiesChanged"> - <param type="string"/> - </signal> - <signal name="targetChanged"/> - <signal name="propertyChanged"/> - </type> - <type name="Qt.PropertyAnimation" version="4.7" extends="Qt.Animation"> - <property name="duration" type="int"/> - <property name="from" type="QVariant"/> - <property name="to" type="QVariant"/> - <property name="easing" type="QEasingCurve"/> - <property name="target" type="Qt.QtObject"/> - <property name="property" type="string"/> - <property name="properties" type="string"/> - <property name="targets" type="Qt.QtObject" isList="true"/> - <property name="exclude" type="Qt.QtObject" isList="true"/> - <signal name="durationChanged"> - <param type="int"/> - </signal> - <signal name="fromChanged"> - <param type="QVariant"/> - </signal> - <signal name="toChanged"> - <param type="QVariant"/> - </signal> - <signal name="easingChanged"> - <param type="QEasingCurve"/> - </signal> - <signal name="propertiesChanged"> - <param type="string"/> - </signal> - <signal name="targetChanged"/> - <signal name="propertyChanged"/> - </type> - <type name="Qt.PropertyChanges" version="4.7" extends="QDeclarativeStateOperation"> - <property name="target" type="Qt.QtObject"/> - <property name="restoreEntryValues" type="bool"/> - <property name="explicit" type="bool"/> - </type> - <type name="Qt.QGraphicsWidget" version="4.7" defaultProperty="children" extends="__extended__.Qt.QGraphicsWidget"> - <property name="anchors" type="QDeclarativeAnchors"/> - <property name="left" type="QDeclarativeAnchorLine"/> - <property name="right" type="QDeclarativeAnchorLine"/> - <property name="horizontalCenter" type="QDeclarativeAnchorLine"/> - <property name="top" type="QDeclarativeAnchorLine"/> - <property name="bottom" type="QDeclarativeAnchorLine"/> - <property name="verticalCenter" type="QDeclarativeAnchorLine"/> - </type> - <type name="Qt.QtObject" version="4.7"> - <property name="objectName" type="string"/> - <signal name="destroyed"> - <param type="Qt.QtObject"/> - </signal> - <signal name="destroyed"/> - <method name="deleteLater"/> - </type> - <type name="Qt.Rectangle" version="4.7" defaultProperty="data" extends="Qt.Item"> - <property name="color" type="QColor"/> - <property name="gradient" type="Qt.Gradient"/> - <property name="border" type="QDeclarativePen"/> - <property name="radius" type="qreal"/> - <signal name="colorChanged"/> - <signal name="radiusChanged"/> - </type> - <type name="Qt.RegExpValidator" version="4.7" extends="QValidator"> - <property name="regExp" type="QRegExp"/> - </type> - <type name="Qt.Repeater" version="4.7" defaultProperty="delegate" extends="Qt.Item"> - <property name="model" type="QVariant"/> - <property name="delegate" type="Qt.Component"/> - <property name="count" type="int"/> - <signal name="modelChanged"/> - <signal name="delegateChanged"/> - <signal name="countChanged"/> - </type> - <type name="Qt.Rotation" version="4.7" extends="QGraphicsTransform"> - <property name="origin" type="QVector3D"/> - <property name="angle" type="qreal"/> - <property name="axis" type="QVector3D"/> - <signal name="originChanged"/> - <signal name="angleChanged"/> - <signal name="axisChanged"/> - </type> - <type name="Qt.RotationAnimation" version="4.7" extends="Qt.PropertyAnimation"> - <enum name="RotationDirection"> - <enumerator name="Numerical" value="0"/> - <enumerator name="Shortest" value="1"/> - <enumerator name="Clockwise" value="2"/> - <enumerator name="Counterclockwise" value="3"/> + <enum name="DateFormat"> + <enumerator name="TextDate" value="0"/> + <enumerator name="ISODate" value="1"/> + <enumerator name="SystemLocaleDate" value="2"/> + <enumerator name="LocalDate" value="2"/> + <enumerator name="LocaleDate" value="3"/> + <enumerator name="SystemLocaleShortDate" value="4"/> + <enumerator name="SystemLocaleLongDate" value="5"/> + <enumerator name="DefaultLocaleShortDate" value="6"/> + <enumerator name="DefaultLocaleLongDate" value="7"/> + </enum> + <enum name="TimeSpec"> + <enumerator name="LocalTime" value="0"/> + <enumerator name="UTC" value="1"/> + <enumerator name="OffsetFromUTC" value="2"/> + </enum> + <enum name="DayOfWeek"> + <enumerator name="Monday" value="1"/> + <enumerator name="Tuesday" value="2"/> + <enumerator name="Wednesday" value="3"/> + <enumerator name="Thursday" value="4"/> + <enumerator name="Friday" value="5"/> + <enumerator name="Saturday" value="6"/> + <enumerator name="Sunday" value="7"/> + </enum> + <enum name="ScrollBarPolicy"> + <enumerator name="ScrollBarAsNeeded" value="0"/> + <enumerator name="ScrollBarAlwaysOff" value="1"/> + <enumerator name="ScrollBarAlwaysOn" value="2"/> </enum> - <property name="from" type="qreal"/> - <property name="to" type="qreal"/> - <property name="direction" type="RotationDirection"/> - <signal name="directionChanged"/> - </type> - <type name="Qt.Row" version="4.7" defaultProperty="data" extends="QDeclarativeBasePositioner"/> - <type name="Qt.Scale" version="4.7" extends="QGraphicsTransform"> - <property name="origin" type="QVector3D"/> - <property name="xScale" type="qreal"/> - <property name="yScale" type="qreal"/> - <property name="zScale" type="qreal"/> - <signal name="originChanged"/> - <signal name="xScaleChanged"/> - <signal name="yScaleChanged"/> - <signal name="zScaleChanged"/> - <signal name="scaleChanged"/> - </type> - <type name="Qt.ScriptAction" version="4.7" extends="Qt.Animation"> - <property name="script" type="QDeclarativeScriptString"/> - <property name="scriptName" type="string"/> - </type> - <type name="Qt.SequentialAnimation" version="4.7" defaultProperty="animations" extends="QDeclarativeAnimationGroup"/> - <type name="Qt.SmoothedAnimation" version="4.7" extends="Qt.NumberAnimation"> - <enum name="ReversingMode"> - <enumerator name="Eased" value="0"/> - <enumerator name="Immediate" value="1"/> - <enumerator name="Sync" value="2"/> + <enum name="CaseSensitivity"> + <enumerator name="CaseInsensitive" value="0"/> + <enumerator name="CaseSensitive" value="1"/> </enum> - <property name="velocity" type="qreal"/> - <property name="reversingMode" type="ReversingMode"/> - <property name="maximumEasingTime" type="qreal"/> - <signal name="velocityChanged"/> - <signal name="reversingModeChanged"/> - <signal name="maximumEasingTimeChanged"/> - </type> - <type name="Qt.SpringAnimation" version="4.7" extends="Qt.NumberAnimation"> - <property name="velocity" type="qreal"/> - <property name="spring" type="qreal"/> - <property name="damping" type="qreal"/> - <property name="epsilon" type="qreal"/> - <property name="modulus" type="qreal"/> - <property name="mass" type="qreal"/> - <signal name="modulusChanged"/> - <signal name="massChanged"/> - <signal name="syncChanged"/> - </type> - <type name="Qt.State" version="4.7" defaultProperty="changes" extends="Qt.QtObject"> - <property name="name" type="string"/> - <property name="when" type="QDeclarativeBinding"/> - <property name="extend" type="string"/> - <property name="changes" type="QDeclarativeStateOperation" isList="true"/> - <signal name="completed"/> - </type> - <type name="Qt.StateChangeScript" version="4.7" extends="QDeclarativeStateOperation"> - <property name="script" type="QDeclarativeScriptString"/> - <property name="name" type="string"/> - </type> - <type name="Qt.StateGroup" version="4.7" extends="Qt.QtObject"> - <property name="state" type="string"/> - <property name="states" type="Qt.State" isList="true"/> - <property name="transitions" type="Qt.Transition" isList="true"/> - <signal name="stateChanged"> - <param type="string"/> - </signal> - </type> - <type name="Qt.SystemPalette" version="4.7" extends="Qt.QtObject"> - <enum name="ColorGroup"> - <enumerator name="Active" value="0"/> - <enumerator name="Inactive" value="2"/> - <enumerator name="Disabled" value="1"/> + <enum name="Corner"> + <enumerator name="TopLeftCorner" value="0"/> + <enumerator name="TopRightCorner" value="1"/> + <enumerator name="BottomLeftCorner" value="2"/> + <enumerator name="BottomRightCorner" value="3"/> </enum> - <property name="colorGroup" type="QDeclarativeSystemPalette.ColorGroup"/> - <property name="window" type="QColor"/> - <property name="windowText" type="QColor"/> - <property name="base" type="QColor"/> - <property name="text" type="QColor"/> - <property name="alternateBase" type="QColor"/> - <property name="button" type="QColor"/> - <property name="buttonText" type="QColor"/> - <property name="light" type="QColor"/> - <property name="midlight" type="QColor"/> - <property name="dark" type="QColor"/> - <property name="mid" type="QColor"/> - <property name="shadow" type="QColor"/> - <property name="highlight" type="QColor"/> - <property name="highlightedText" type="QColor"/> - <signal name="paletteChanged"/> - </type> - <type name="Qt.Text" version="4.7" defaultProperty="data" extends="Qt.Item"> - <enum name="HAlignment"> - <enumerator name="AlignLeft" value="1"/> - <enumerator name="AlignRight" value="2"/> - <enumerator name="AlignHCenter" value="4"/> + <enum name="ConnectionType"> + <enumerator name="AutoConnection" value="0"/> + <enumerator name="DirectConnection" value="1"/> + <enumerator name="QueuedConnection" value="2"/> + <enumerator name="AutoCompatConnection" value="3"/> + <enumerator name="BlockingQueuedConnection" value="4"/> + <enumerator name="UniqueConnection" value="128"/> </enum> - <enum name="VAlignment"> - <enumerator name="AlignTop" value="32"/> - <enumerator name="AlignBottom" value="64"/> - <enumerator name="AlignVCenter" value="128"/> + <enum name="ShortcutContext"> + <enumerator name="WidgetShortcut" value="0"/> + <enumerator name="WindowShortcut" value="1"/> + <enumerator name="ApplicationShortcut" value="2"/> + <enumerator name="WidgetWithChildrenShortcut" value="3"/> </enum> - <enum name="TextStyle"> - <enumerator name="Normal" value="0"/> - <enumerator name="Outline" value="1"/> - <enumerator name="Raised" value="2"/> - <enumerator name="Sunken" value="3"/> + <enum name="FillRule"> + <enumerator name="OddEvenFill" value="0"/> + <enumerator name="WindingFill" value="1"/> </enum> - <enum name="TextFormat"> - <enumerator name="PlainText" value="0"/> - <enumerator name="RichText" value="1"/> - <enumerator name="AutoText" value="2"/> - <enumerator name="StyledText" value="4"/> + <enum name="MaskMode"> + <enumerator name="MaskInColor" value="0"/> + <enumerator name="MaskOutColor" value="1"/> </enum> - <enum name="TextElideMode"> - <enumerator name="ElideLeft" value="0"/> - <enumerator name="ElideRight" value="1"/> - <enumerator name="ElideMiddle" value="2"/> - <enumerator name="ElideNone" value="3"/> + <enum name="ClipOperation"> + <enumerator name="NoClip" value="0"/> + <enumerator name="ReplaceClip" value="1"/> + <enumerator name="IntersectClip" value="2"/> + <enumerator name="UniteClip" value="3"/> </enum> - <enum name="WrapMode"> - <enumerator name="NoWrap" value="0"/> - <enumerator name="WordWrap" value="1"/> - <enumerator name="WrapAnywhere" value="3"/> - <enumerator name="WrapAtWordBoundaryOrAnywhere" value="4"/> - <enumerator name="Wrap" value="4"/> + <enum name="ItemSelectionMode"> + <enumerator name="ContainsItemShape" value="0"/> + <enumerator name="IntersectsItemShape" value="1"/> + <enumerator name="ContainsItemBoundingRect" value="2"/> + <enumerator name="IntersectsItemBoundingRect" value="3"/> </enum> - <property name="text" type="string"/> - <property name="font" type="QFont"/> - <property name="color" type="QColor"/> - <property name="style" type="TextStyle"/> - <property name="styleColor" type="QColor"/> - <property name="horizontalAlignment" type="HAlignment"/> - <property name="verticalAlignment" type="VAlignment"/> - <property name="wrapMode" type="WrapMode"/> - <property name="textFormat" type="TextFormat"/> - <property name="elide" type="TextElideMode"/> - <property name="paintedWidth" type="qreal"/> - <property name="paintedHeight" type="qreal"/> - <signal name="textChanged"> - <param name="text" type="string"/> - </signal> - <signal name="linkActivated"> - <param name="link" type="string"/> - </signal> - <signal name="fontChanged"> - <param name="font" type="QFont"/> - </signal> - <signal name="colorChanged"> - <param name="color" type="QColor"/> - </signal> - <signal name="styleChanged"> - <param name="style" type="TextStyle"/> - </signal> - <signal name="styleColorChanged"> - <param name="color" type="QColor"/> - </signal> - <signal name="horizontalAlignmentChanged"> - <param name="alignment" type="HAlignment"/> - </signal> - <signal name="verticalAlignmentChanged"> - <param name="alignment" type="VAlignment"/> - </signal> - <signal name="wrapModeChanged"/> - <signal name="textFormatChanged"> - <param name="textFormat" type="TextFormat"/> - </signal> - <signal name="elideModeChanged"> - <param name="mode" type="TextElideMode"/> - </signal> - <signal name="paintedSizeChanged"/> - </type> - <type name="Qt.TextEdit" version="4.7" defaultProperty="data" extends="QDeclarativePaintedItem"> - <enum name="HAlignment"> - <enumerator name="AlignLeft" value="1"/> - <enumerator name="AlignRight" value="2"/> - <enumerator name="AlignHCenter" value="4"/> + <enum name="TransformationMode"> + <enumerator name="FastTransformation" value="0"/> + <enumerator name="SmoothTransformation" value="1"/> </enum> - <enum name="VAlignment"> - <enumerator name="AlignTop" value="32"/> - <enumerator name="AlignBottom" value="64"/> - <enumerator name="AlignVCenter" value="128"/> + <enum name="Axis"> + <enumerator name="XAxis" value="0"/> + <enumerator name="YAxis" value="1"/> + <enumerator name="ZAxis" value="2"/> </enum> - <enum name="TextFormat"> - <enumerator name="PlainText" value="0"/> - <enumerator name="RichText" value="1"/> - <enumerator name="AutoText" value="2"/> + <enum name="ContextMenuPolicy"> + <enumerator name="NoContextMenu" value="0"/> + <enumerator name="DefaultContextMenu" value="1"/> + <enumerator name="ActionsContextMenu" value="2"/> + <enumerator name="CustomContextMenu" value="3"/> + <enumerator name="PreventContextMenu" value="4"/> + </enum> + <enum name="InputMethodHint"> + <enumerator name="ImhNone" value="0"/> + <enumerator name="ImhHiddenText" value="1"/> + <enumerator name="ImhNoAutoUppercase" value="2"/> + <enumerator name="ImhPreferNumbers" value="4"/> + <enumerator name="ImhPreferUppercase" value="8"/> + <enumerator name="ImhPreferLowercase" value="16"/> + <enumerator name="ImhNoPredictiveText" value="32"/> + <enumerator name="ImhDigitsOnly" value="65536"/> + <enumerator name="ImhFormattedNumbersOnly" value="131072"/> + <enumerator name="ImhUppercaseOnly" value="262144"/> + <enumerator name="ImhLowercaseOnly" value="524288"/> + <enumerator name="ImhDialableCharactersOnly" value="1048576"/> + <enumerator name="ImhEmailCharactersOnly" value="2097152"/> + <enumerator name="ImhUrlCharactersOnly" value="4194304"/> + <enumerator name="ImhExclusiveInputMask" value="-65536"/> + </enum> + <enum name="InputMethodHints"> + <enumerator name="ImhNone" value="0"/> + <enumerator name="ImhHiddenText" value="1"/> + <enumerator name="ImhNoAutoUppercase" value="2"/> + <enumerator name="ImhPreferNumbers" value="4"/> + <enumerator name="ImhPreferUppercase" value="8"/> + <enumerator name="ImhPreferLowercase" value="16"/> + <enumerator name="ImhNoPredictiveText" value="32"/> + <enumerator name="ImhDigitsOnly" value="65536"/> + <enumerator name="ImhFormattedNumbersOnly" value="131072"/> + <enumerator name="ImhUppercaseOnly" value="262144"/> + <enumerator name="ImhLowercaseOnly" value="524288"/> + <enumerator name="ImhDialableCharactersOnly" value="1048576"/> + <enumerator name="ImhEmailCharactersOnly" value="2097152"/> + <enumerator name="ImhUrlCharactersOnly" value="4194304"/> + <enumerator name="ImhExclusiveInputMask" value="-65536"/> + </enum> + <enum name="ToolButtonStyle"> + <enumerator name="ToolButtonIconOnly" value="0"/> + <enumerator name="ToolButtonTextOnly" value="1"/> + <enumerator name="ToolButtonTextBesideIcon" value="2"/> + <enumerator name="ToolButtonTextUnderIcon" value="3"/> + <enumerator name="ToolButtonFollowStyle" value="4"/> + </enum> + <enum name="LayoutDirection"> + <enumerator name="LeftToRight" value="0"/> + <enumerator name="RightToLeft" value="1"/> + <enumerator name="LayoutDirectionAuto" value="2"/> </enum> - <enum name="WrapMode"> - <enumerator name="NoWrap" value="0"/> - <enumerator name="WordWrap" value="1"/> - <enumerator name="WrapAnywhere" value="3"/> - <enumerator name="WrapAtWordBoundaryOrAnywhere" value="4"/> - <enumerator name="Wrap" value="4"/> + <enum name="DropAction"> + <enumerator name="CopyAction" value="1"/> + <enumerator name="MoveAction" value="2"/> + <enumerator name="LinkAction" value="4"/> + <enumerator name="ActionMask" value="255"/> + <enumerator name="TargetMoveAction" value="32770"/> + <enumerator name="IgnoreAction" value="0"/> </enum> - <property name="text" type="string"/> - <property name="color" type="QColor"/> - <property name="selectionColor" type="QColor"/> - <property name="selectedTextColor" type="QColor"/> - <property name="font" type="QFont"/> - <property name="horizontalAlignment" type="HAlignment"/> - <property name="verticalAlignment" type="VAlignment"/> - <property name="wrapMode" type="WrapMode"/> - <property name="paintedWidth" type="qreal"/> - <property name="paintedHeight" type="qreal"/> - <property name="textFormat" type="TextFormat"/> - <property name="readOnly" type="bool"/> - <property name="cursorVisible" type="bool"/> - <property name="cursorPosition" type="int"/> - <property name="cursorRectangle" type="QRect"/> - <property name="cursorDelegate" type="Qt.Component"/> - <property name="selectionStart" type="int"/> - <property name="selectionEnd" type="int"/> - <property name="selectedText" type="string"/> - <property name="activeFocusOnPress" type="bool"/> - <property name="persistentSelection" type="bool"/> - <property name="textMargin" type="qreal"/> - <property name="inputMethodHints" type="Qt.InputMethodHints"/> - <property name="selectByMouse" type="bool"/> - <signal name="textChanged"> - <param type="string"/> - </signal> - <signal name="paintedSizeChanged"/> - <signal name="cursorPositionChanged"/> - <signal name="cursorRectangleChanged"/> - <signal name="selectionStartChanged"/> - <signal name="selectionEndChanged"/> - <signal name="selectionChanged"/> - <signal name="colorChanged"> - <param name="color" type="QColor"/> - </signal> - <signal name="selectionColorChanged"> - <param name="color" type="QColor"/> - </signal> - <signal name="selectedTextColorChanged"> - <param name="color" type="QColor"/> - </signal> - <signal name="fontChanged"> - <param name="font" type="QFont"/> - </signal> - <signal name="horizontalAlignmentChanged"> - <param name="alignment" type="HAlignment"/> - </signal> - <signal name="verticalAlignmentChanged"> - <param name="alignment" type="VAlignment"/> - </signal> - <signal name="wrapModeChanged"/> - <signal name="textFormatChanged"> - <param name="textFormat" type="TextFormat"/> - </signal> - <signal name="readOnlyChanged"> - <param name="isReadOnly" type="bool"/> - </signal> - <signal name="cursorVisibleChanged"> - <param name="isCursorVisible" type="bool"/> - </signal> - <signal name="cursorDelegateChanged"/> - <signal name="activeFocusOnPressChanged"> - <param name="activeFocusOnPressed" type="bool"/> - </signal> - <signal name="persistentSelectionChanged"> - <param name="isPersistentSelection" type="bool"/> - </signal> - <signal name="textMarginChanged"> - <param name="textMargin" type="qreal"/> - </signal> - <signal name="selectByMouseChanged"> - <param name="selectByMouse" type="bool"/> - </signal> - <method name="selectAll"/> - <method name="selectWord"/> - <method name="select"> - <param name="start" type="int"/> - <param name="end" type="int"/> - </method> - <method name="cut"/> - <method name="copy"/> - <method name="paste"/> - <method name="openSoftwareInputPanel"/> - <method name="closeSoftwareInputPanel"/> - <method name="positionToRectangle" type="QRectF"> - <param type="int"/> - </method> - <method name="positionAt" type="int"> - <param name="x" type="int"/> - <param name="y" type="int"/> - </method> - <method name="moveCursorSelection"> - <param name="pos" type="int"/> - </method> - </type> - <type name="Qt.TextInput" version="4.7" defaultProperty="data" extends="QDeclarativePaintedItem"> - <enum name="EchoMode"> - <enumerator name="Normal" value="0"/> - <enumerator name="NoEcho" value="1"/> - <enumerator name="Password" value="2"/> - <enumerator name="PasswordEchoOnEdit" value="3"/> + <enum name="DropActions"> + <enumerator name="CopyAction" value="1"/> + <enumerator name="MoveAction" value="2"/> + <enumerator name="LinkAction" value="4"/> + <enumerator name="ActionMask" value="255"/> + <enumerator name="TargetMoveAction" value="32770"/> + <enumerator name="IgnoreAction" value="0"/> </enum> - <enum name="HAlignment"> - <enumerator name="AlignLeft" value="1"/> - <enumerator name="AlignRight" value="2"/> - <enumerator name="AlignHCenter" value="4"/> + <enum name="CheckState"> + <enumerator name="Unchecked" value="0"/> + <enumerator name="PartiallyChecked" value="1"/> + <enumerator name="Checked" value="2"/> </enum> - <property name="text" type="string"/> - <property name="color" type="QColor"/> - <property name="selectionColor" type="QColor"/> - <property name="selectedTextColor" type="QColor"/> - <property name="font" type="QFont"/> - <property name="horizontalAlignment" type="HAlignment"/> - <property name="readOnly" type="bool"/> - <property name="cursorVisible" type="bool"/> - <property name="cursorPosition" type="int"/> - <property name="cursorRectangle" type="QRect"/> - <property name="cursorDelegate" type="Qt.Component"/> - <property name="selectionStart" type="int"/> - <property name="selectionEnd" type="int"/> - <property name="selectedText" type="string"/> - <property name="maximumLength" type="int"/> - <property name="validator" type="QValidator"/> - <property name="inputMask" type="string"/> - <property name="inputMethodHints" type="Qt.InputMethodHints"/> - <property name="acceptableInput" type="bool"/> - <property name="echoMode" type="EchoMode"/> - <property name="activeFocusOnPress" type="bool"/> - <property name="passwordCharacter" type="string"/> - <property name="displayText" type="string"/> - <property name="autoScroll" type="bool"/> - <property name="selectByMouse" type="bool"/> - <signal name="textChanged"/> - <signal name="cursorPositionChanged"/> - <signal name="selectionStartChanged"/> - <signal name="selectionEndChanged"/> - <signal name="selectedTextChanged"/> - <signal name="accepted"/> - <signal name="acceptableInputChanged"/> - <signal name="colorChanged"> - <param name="color" type="QColor"/> - </signal> - <signal name="selectionColorChanged"> - <param name="color" type="QColor"/> - </signal> - <signal name="selectedTextColorChanged"> - <param name="color" type="QColor"/> - </signal> - <signal name="fontChanged"> - <param name="font" type="QFont"/> - </signal> - <signal name="horizontalAlignmentChanged"> - <param name="alignment" type="HAlignment"/> - </signal> - <signal name="readOnlyChanged"> - <param name="isReadOnly" type="bool"/> - </signal> - <signal name="cursorVisibleChanged"> - <param name="isCursorVisible" type="bool"/> - </signal> - <signal name="cursorDelegateChanged"/> - <signal name="maximumLengthChanged"> - <param name="maximumLength" type="int"/> - </signal> - <signal name="validatorChanged"/> - <signal name="inputMaskChanged"> - <param name="inputMask" type="string"/> - </signal> - <signal name="echoModeChanged"> - <param name="echoMode" type="EchoMode"/> - </signal> - <signal name="passwordCharacterChanged"/> - <signal name="displayTextChanged"/> - <signal name="activeFocusOnPressChanged"> - <param name="activeFocusOnPress" type="bool"/> - </signal> - <signal name="autoScrollChanged"> - <param name="autoScroll" type="bool"/> - </signal> - <signal name="selectByMouseChanged"> - <param name="selectByMouse" type="bool"/> - </signal> - <method name="selectAll"/> - <method name="selectWord"/> - <method name="select"> - <param name="start" type="int"/> - <param name="end" type="int"/> - </method> - <method name="cut"/> - <method name="copy"/> - <method name="paste"/> - <method name="positionAt" type="int"> - <param name="x" type="int"/> - </method> - <method name="positionToRectangle" type="QRectF"> - <param name="pos" type="int"/> - </method> - <method name="moveCursorSelection"> - <param name="pos" type="int"/> - </method> - <method name="openSoftwareInputPanel"/> - <method name="closeSoftwareInputPanel"/> - </type> - <type name="Qt.Timer" version="4.7" extends="Qt.QtObject"> - <property name="interval" type="int"/> - <property name="running" type="bool"/> - <property name="repeat" type="bool"/> - <property name="triggeredOnStart" type="bool"/> - <property name="parent" type="Qt.QtObject"/> - <signal name="triggered"/> - <signal name="runningChanged"/> - <signal name="intervalChanged"/> - <signal name="repeatChanged"/> - <signal name="triggeredOnStartChanged"/> - <method name="start"/> - <method name="stop"/> - <method name="restart"/> - </type> - <type name="Qt.Transition" version="4.7" defaultProperty="animations" extends="Qt.QtObject"> - <property name="from" type="string"/> - <property name="to" type="string"/> - <property name="reversible" type="bool"/> - <property name="animations" type="Qt.Animation" isList="true"/> - <signal name="fromChanged"/> - <signal name="toChanged"/> - <signal name="reversibleChanged"/> - </type> - <type name="Qt.Translate" version="4.7" extends="QGraphicsTransform"> - <property name="x" type="qreal"/> - <property name="y" type="qreal"/> - <signal name="xChanged"/> - <signal name="yChanged"/> - </type> - <type name="Qt.Vector3dAnimation" version="4.7" extends="Qt.PropertyAnimation"> - <property name="from" type="QVector3D"/> - <property name="to" type="QVector3D"/> - </type> - <type name="Qt.ViewSection" version="4.7" extends="Qt.QtObject"> - <enum name="SectionCriteria"> - <enumerator name="FullString" value="0"/> - <enumerator name="FirstCharacter" value="1"/> + <enum name="ItemFlags"> + <enumerator name="NoItemFlags" value="0"/> + <enumerator name="ItemIsSelectable" value="1"/> + <enumerator name="ItemIsEditable" value="2"/> + <enumerator name="ItemIsDragEnabled" value="4"/> + <enumerator name="ItemIsDropEnabled" value="8"/> + <enumerator name="ItemIsUserCheckable" value="16"/> + <enumerator name="ItemIsEnabled" value="32"/> + <enumerator name="ItemIsTristate" value="64"/> </enum> - <property name="property" type="string"/> - <property name="criteria" type="SectionCriteria"/> - <property name="delegate" type="Qt.Component"/> - <signal name="propertyChanged"/> - <signal name="criteriaChanged"/> - <signal name="delegateChanged"/> - </type> - <type name="Qt.VisualDataModel" version="4.7" defaultProperty="delegate" extends="QDeclarativeVisualModel"> - <property name="model" type="QVariant"/> - <property name="delegate" type="Qt.Component"/> - <property name="part" type="string"/> - <property name="parts" type="Qt.QtObject"/> - <property name="rootIndex" type="QVariant"/> - <signal name="createdPackage"> - <param name="index" type="int"/> - <param name="package" type="Qt.Package"/> - </signal> - <signal name="destroyingPackage"> - <param name="package" type="Qt.Package"/> - </signal> - <signal name="rootIndexChanged"/> - <method name="modelIndex" type="QVariant"> - <param name="idx" type="int"/> - </method> - <method name="parentModelIndex" type="QVariant"/> - </type> - <type name="Qt.VisualItemModel" version="4.7" defaultProperty="children" extends="QDeclarativeVisualModel"> - <property name="children" type="Qt.Item" isList="true"/> - <signal name="childrenChanged"/> - </type> - <type name="Qt.WorkerScript" version="4.7" extends="Qt.QtObject"> - <property name="source" type="QUrl"/> - <signal name="sourceChanged"/> - <signal name="message"> - <param name="messageObject" type="QScriptValue"/> - </signal> - <method name="sendMessage"> - <param type="QScriptValue"/> - </method> - </type> - <type name="Qt.XmlListModel" version="4.7" defaultProperty="roles" extends="QListModelInterface"> - <enum name="Status"> - <enumerator name="Null" value="0"/> - <enumerator name="Ready" value="1"/> - <enumerator name="Loading" value="2"/> - <enumerator name="Error" value="3"/> + <enum name="MatchFlags"> + <enumerator name="MatchExactly" value="0"/> + <enumerator name="MatchContains" value="1"/> + <enumerator name="MatchStartsWith" value="2"/> + <enumerator name="MatchEndsWith" value="3"/> + <enumerator name="MatchRegExp" value="4"/> + <enumerator name="MatchWildcard" value="5"/> + <enumerator name="MatchFixedString" value="8"/> + <enumerator name="MatchCaseSensitive" value="16"/> + <enumerator name="MatchWrap" value="32"/> + <enumerator name="MatchRecursive" value="64"/> </enum> - <property name="status" type="Status"/> - <property name="progress" type="qreal"/> - <property name="source" type="QUrl"/> - <property name="xml" type="string"/> - <property name="query" type="string"/> - <property name="namespaceDeclarations" type="string"/> - <property name="roles" type="Qt.XmlRole" isList="true"/> - <property name="count" type="int"/> - <signal name="statusChanged"> - <param type="QDeclarativeXmlListModel.Status"/> - </signal> - <signal name="progressChanged"> - <param name="progress" type="qreal"/> - </signal> - <signal name="countChanged"/> - <signal name="sourceChanged"/> - <signal name="xmlChanged"/> - <signal name="queryChanged"/> - <signal name="namespaceDeclarationsChanged"/> - <method name="reload"/> - <method name="get" type="QScriptValue"> - <param name="index" type="int"/> - </method> - <method name="errorString" type="string"/> - </type> - <type name="Qt.XmlRole" version="4.7" extends="Qt.QtObject"> - <property name="name" type="string"/> - <property name="query" type="string"/> - <property name="isKey" type="bool"/> - <signal name="nameChanged"/> - <signal name="queryChanged"/> - <signal name="isKeyChanged"/> - </type> - <type name="Qt.labs.folderlistmodel.FolderListModel" version="1.0" extends="QAbstractListModel"> - <enum name="SortField"> - <enumerator name="Unsorted" value="0"/> - <enumerator name="Name" value="1"/> - <enumerator name="Time" value="2"/> - <enumerator name="Size" value="3"/> - <enumerator name="Type" value="4"/> + <enum name="WindowModality"> + <enumerator name="NonModal" value="0"/> + <enumerator name="WindowModal" value="1"/> + <enumerator name="ApplicationModal" value="2"/> </enum> - <property name="folder" type="QUrl"/> - <property name="parentFolder" type="QUrl"/> - <property name="nameFilters" type="QStringList"/> - <property name="sortField" type="SortField"/> - <property name="sortReversed" type="bool"/> - <property name="showDirs" type="bool"/> - <property name="showDotAndDotDot" type="bool"/> - <property name="showOnlyReadable" type="bool"/> - <property name="count" type="int"/> - <signal name="folderChanged"/> - <method name="isFolder" type="bool"> - <param name="index" type="int"/> - </method> - </type> - <type name="Qt.labs.gestures.GestureArea" version="1.0" defaultProperty="data" extends="Qt.Item"> - <property name="gesture" type="QGesture"/> - </type> - <type name="Qt.labs.particles.ParticleMotion" version="1.0" extends="Qt.QtObject"/> - <type name="Qt.labs.particles.ParticleMotionGravity" version="1.0" extends="Qt.labs.particles.ParticleMotion"> - <property name="xattractor" type="qreal"/> - <property name="yattractor" type="qreal"/> - <property name="acceleration" type="qreal"/> - <signal name="xattractorChanged"/> - <signal name="yattractorChanged"/> - <signal name="accelerationChanged"/> - </type> - <type name="Qt.labs.particles.ParticleMotionLinear" version="1.0" extends="Qt.labs.particles.ParticleMotion"/> - <type name="Qt.labs.particles.ParticleMotionWander" version="1.0" extends="Qt.labs.particles.ParticleMotion"> - <property name="xvariance" type="qreal"/> - <property name="yvariance" type="qreal"/> - <property name="pace" type="qreal"/> - <signal name="xvarianceChanged"/> - <signal name="yvarianceChanged"/> - <signal name="paceChanged"/> - </type> - <type name="Qt.labs.particles.Particles" version="1.0" defaultProperty="motion" extends="Qt.Item"> - <property name="source" type="QUrl"/> - <property name="count" type="int"/> - <property name="emissionRate" type="int"/> - <property name="emissionVariance" type="qreal"/> - <property name="lifeSpan" type="int"/> - <property name="lifeSpanDeviation" type="int"/> - <property name="fadeInDuration" type="int"/> - <property name="fadeOutDuration" type="int"/> - <property name="angle" type="qreal"/> - <property name="angleDeviation" type="qreal"/> - <property name="velocity" type="qreal"/> - <property name="velocityDeviation" type="qreal"/> - <property name="motion" type="Qt.labs.particles.ParticleMotion"/> - <signal name="sourceChanged"/> - <signal name="countChanged"/> - <signal name="emissionRateChanged"/> - <signal name="emissionVarianceChanged"/> - <signal name="lifeSpanChanged"/> - <signal name="lifeSpanDeviationChanged"/> - <signal name="fadeInDurationChanged"/> - <signal name="fadeOutDurationChanged"/> - <signal name="angleChanged"/> - <signal name="angleDeviationChanged"/> - <signal name="velocityChanged"/> - <signal name="velocityDeviationChanged"/> - <signal name="emittingChanged"/> - <signal name="motionChanged"/> - <method name="burst"> - <param name="count" type="int"/> - <param name="emissionRate" type="int"/> - </method> - <method name="burst"> - <param name="count" type="int"/> - </method> - </type> - <type name="QtWebKit.WebView" version="1.0" defaultProperty="data" extends="Qt.Item"> - <enum name="Status"> - <enumerator name="Null" value="0"/> - <enumerator name="Ready" value="1"/> - <enumerator name="Loading" value="2"/> - <enumerator name="Error" value="3"/> + <enum name="TextInteractionFlag"> + <enumerator name="NoTextInteraction" value="0"/> + <enumerator name="TextSelectableByMouse" value="1"/> + <enumerator name="TextSelectableByKeyboard" value="2"/> + <enumerator name="LinksAccessibleByMouse" value="4"/> + <enumerator name="LinksAccessibleByKeyboard" value="8"/> + <enumerator name="TextEditable" value="16"/> + <enumerator name="TextEditorInteraction" value="19"/> + <enumerator name="TextBrowserInteraction" value="13"/> + </enum> + <enum name="TextInteractionFlags"> + <enumerator name="NoTextInteraction" value="0"/> + <enumerator name="TextSelectableByMouse" value="1"/> + <enumerator name="TextSelectableByKeyboard" value="2"/> + <enumerator name="LinksAccessibleByMouse" value="4"/> + <enumerator name="LinksAccessibleByKeyboard" value="8"/> + <enumerator name="TextEditable" value="16"/> + <enumerator name="TextEditorInteraction" value="19"/> + <enumerator name="TextBrowserInteraction" value="13"/> + </enum> + <enum name="SizeHint"> + <enumerator name="MinimumSize" value="0"/> + <enumerator name="PreferredSize" value="1"/> + <enumerator name="MaximumSize" value="2"/> + <enumerator name="MinimumDescent" value="3"/> + <enumerator name="NSizeHints" value="4"/> + </enum> + <enum name="GestureState"> + <enumerator name="NoGesture" value="0"/> + <enumerator name="GestureStarted" value="1"/> + <enumerator name="GestureUpdated" value="2"/> + <enumerator name="GestureFinished" value="3"/> + <enumerator name="GestureCanceled" value="4"/> + </enum> + <enum name="GestureType"> + <enumerator name="TapGesture" value="1"/> + <enumerator name="TapAndHoldGesture" value="2"/> + <enumerator name="PanGesture" value="3"/> + <enumerator name="PinchGesture" value="4"/> + <enumerator name="SwipeGesture" value="5"/> + <enumerator name="CustomGesture" value="256"/> + <enumerator name="LastGestureType" value="-1"/> </enum> - <property name="title" type="string"/> - <property name="icon" type="QPixmap"/> - <property name="statusText" type="string"/> - <property name="html" type="string"/> - <property name="pressGrabTime" type="int"/> - <property name="preferredWidth" type="int"/> - <property name="preferredHeight" type="int"/> - <property name="url" type="QUrl"/> - <property name="progress" type="qreal"/> - <property name="status" type="Status"/> - <property name="reload" type="QAction"/> - <property name="back" type="QAction"/> - <property name="forward" type="QAction"/> - <property name="stop" type="QAction"/> - <property name="settings" type="QDeclarativeWebSettings"/> - <property name="javaScriptWindowObjects" type="Qt.QtObject" isList="true"/> - <property name="newWindowComponent" type="Qt.Component"/> - <property name="newWindowParent" type="Qt.Item"/> - <property name="renderingEnabled" type="bool"/> - <property name="contentsSize" type="QSize"/> - <property name="contentsScale" type="qreal"/> - <signal name="preferredWidthChanged"/> - <signal name="preferredHeightChanged"/> - <signal name="urlChanged"/> - <signal name="progressChanged"/> - <signal name="statusChanged"> - <param type="Status"/> - </signal> - <signal name="titleChanged"> - <param type="string"/> - </signal> - <signal name="iconChanged"/> - <signal name="statusTextChanged"/> - <signal name="htmlChanged"/> - <signal name="pressGrabTimeChanged"/> - <signal name="newWindowComponentChanged"/> - <signal name="newWindowParentChanged"/> - <signal name="renderingEnabledChanged"/> - <signal name="contentsSizeChanged"> - <param type="QSize"/> - </signal> - <signal name="contentsScaleChanged"/> - <signal name="loadStarted"/> - <signal name="loadFinished"/> - <signal name="loadFailed"/> - <signal name="doubleClick"> - <param name="clickX" type="int"/> - <param name="clickY" type="int"/> - </signal> - <signal name="zoomTo"> - <param name="zoom" type="qreal"/> - <param name="centerX" type="int"/> - <param name="centerY" type="int"/> - </signal> - <signal name="alert"> - <param name="message" type="string"/> - </signal> - <method name="evaluateJavaScript" type="QVariant"> - <param type="string"/> - </method> - <method name="heuristicZoom" type="bool"> - <param name="clickX" type="int"/> - <param name="clickY" type="int"/> - <param name="maxzoom" type="qreal"/> - </method> </type> - <type name="QEasingCurve" extends="Qt.Easing"/> - <type name="__extended__.Qt.QGraphicsWidget" version="4.7" defaultProperty="children" extends="QGraphicsObject"> + <type name="__extended__.QGraphicsWidget" defaultProperty="children" extends="QGraphicsObject"> <property name="palette" type="QPalette"/> <property name="font" type="QFont"/> <property name="layoutDirection" type="Qt.LayoutDirection"/> @@ -3300,4 +3650,5 @@ <signal name="layoutChanged"/> <method name="close" type="bool"/> </type> + <type name="QEasingCurve" extends="QDeclarativeEasingValueType"/> </module> diff --git a/share/qtcreator/qml-type-descriptions/qmlproject-types.xml b/share/qtcreator/qml-type-descriptions/qmlproject-types.xml index 1b3e35fc9ccb4496cf994d9af8b204fbe228dee1..f8ae4aa1bcc31e24e86051562c2fdd4d573001e4 100644 --- a/share/qtcreator/qml-type-descriptions/qmlproject-types.xml +++ b/share/qtcreator/qml-type-descriptions/qmlproject-types.xml @@ -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> diff --git a/share/qtcreator/qml-type-descriptions/qmlruntime-types.xml b/share/qtcreator/qml-type-descriptions/qmlruntime-types.xml index b1e851edd3746bca374d703ad9afb8ecc20c5f84..362968d9e3ddbfd822772b1c7685f7830ec3b940 100644 --- a/share/qtcreator/qml-type-descriptions/qmlruntime-types.xml +++ b/share/qtcreator/qml-type-descriptions/qmlruntime-types.xml @@ -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"/> diff --git a/src/tools/qml/qmldump/Info.plist b/share/qtcreator/qml/qmldump/Info.plist similarity index 100% rename from src/tools/qml/qmldump/Info.plist rename to share/qtcreator/qml/qmldump/Info.plist diff --git a/share/qtcreator/qml/qmldump/LGPL_EXCEPTION.TXT b/share/qtcreator/qml/qmldump/LGPL_EXCEPTION.TXT new file mode 100644 index 0000000000000000000000000000000000000000..8d0f85eba40bb52717cdd79ca238297f5b3e5adc --- /dev/null +++ b/share/qtcreator/qml/qmldump/LGPL_EXCEPTION.TXT @@ -0,0 +1,3 @@ +Nokia Qt LGPL Exception version 1.0 + +As a special exception to the GNU Lesser General Public License version 2.1, the object code form of a "work that uses the Library" may incorporate material from a header file that is part of the Library. You may distribute such object code under terms of your choice, provided that the incorporated material (i) does not exceed more than 5% of the total size of the Library; and (ii) is limited to numerical parameters, data structure layouts, accessors, macros, inline functions and templates. \ No newline at end of file diff --git a/share/qtcreator/qml/qmldump/LICENSE.LGPL b/share/qtcreator/qml/qmldump/LICENSE.LGPL new file mode 100644 index 0000000000000000000000000000000000000000..602bfc94635ddf8f1bf2b00419a85ead645a5b67 --- /dev/null +++ b/share/qtcreator/qml/qmldump/LICENSE.LGPL @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/src/tools/qml/qmldump/main.cpp b/share/qtcreator/qml/qmldump/main.cpp similarity index 74% rename from src/tools/qml/qmldump/main.cpp rename to share/qtcreator/qml/qmldump/main.cpp index 61211ee07d9df17fb0eb33788fbe48bd7f10acb9..93f349c98be11ed4a23b6392a2c5752f8726fd25 100644 --- a/src/tools/qml/qmldump/main.cpp +++ b/share/qtcreator/qml/qmldump/main.cpp @@ -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(); diff --git a/src/tools/qml/qmldump/qmldump.pro b/share/qtcreator/qml/qmldump/qmldump.pro similarity index 71% rename from src/tools/qml/qmldump/qmldump.pro rename to share/qtcreator/qml/qmldump/qmldump.pro index 31700e7549636644fe360c484760925077b5d370..1b86e6a2ebfe88e85fa1074527b5dc2886f3f735 100644 --- a/src/tools/qml/qmldump/qmldump.pro +++ b/share/qtcreator/qml/qmldump/qmldump.pro @@ -8,14 +8,13 @@ TARGET = qmldump QT += declarative CONFIG += console +### FIXME: only debug plugins are now supported. +CONFIG -= release +CONFIG += debug + TEMPLATE = app SOURCES += main.cpp -include(../../../../qtcreator.pri) -include(../../../private_headers.pri) -DESTDIR = $$IDE_BIN_PATH -include(../../../rpath.pri) - OTHER_FILES += Info.plist macx:QMAKE_INFO_PLIST = Info.plist diff --git a/share/qtcreator/qmljsdebugger/editor/abstractformeditortool.cpp b/share/qtcreator/qml/qmljsdebugger/editor/abstractformeditortool.cpp similarity index 99% rename from share/qtcreator/qmljsdebugger/editor/abstractformeditortool.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/abstractformeditortool.cpp index 557a3011120a6a393484bdf34b454fb11110d2a5..dea47b7e998e339f1390c578758e47c661dc19d5 100644 --- a/share/qtcreator/qmljsdebugger/editor/abstractformeditortool.cpp +++ b/share/qtcreator/qml/qmljsdebugger/editor/abstractformeditortool.cpp @@ -29,7 +29,7 @@ #include "abstractformeditortool.h" #include "qdeclarativeviewobserver.h" -#include "qdeclarativeviewobserver_p.h" +#include "../qdeclarativeviewobserver_p.h" #include <QDeclarativeEngine> diff --git a/share/qtcreator/qmljsdebugger/editor/abstractformeditortool.h b/share/qtcreator/qml/qmljsdebugger/editor/abstractformeditortool.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/abstractformeditortool.h rename to share/qtcreator/qml/qmljsdebugger/editor/abstractformeditortool.h diff --git a/share/qtcreator/qmljsdebugger/editor/boundingrecthighlighter.cpp b/share/qtcreator/qml/qmljsdebugger/editor/boundingrecthighlighter.cpp similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/boundingrecthighlighter.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/boundingrecthighlighter.cpp diff --git a/share/qtcreator/qmljsdebugger/editor/boundingrecthighlighter.h b/share/qtcreator/qml/qmljsdebugger/editor/boundingrecthighlighter.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/boundingrecthighlighter.h rename to share/qtcreator/qml/qmljsdebugger/editor/boundingrecthighlighter.h diff --git a/share/qtcreator/qmljsdebugger/editor/colorpickertool.cpp b/share/qtcreator/qml/qmljsdebugger/editor/colorpickertool.cpp similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/colorpickertool.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/colorpickertool.cpp diff --git a/share/qtcreator/qmljsdebugger/editor/colorpickertool.h b/share/qtcreator/qml/qmljsdebugger/editor/colorpickertool.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/colorpickertool.h rename to share/qtcreator/qml/qmljsdebugger/editor/colorpickertool.h diff --git a/share/qtcreator/qmljsdebugger/editor/editor.pri b/share/qtcreator/qml/qmljsdebugger/editor/editor.pri similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/editor.pri rename to share/qtcreator/qml/qmljsdebugger/editor/editor.pri diff --git a/share/qtcreator/qmljsdebugger/editor/editor.qrc b/share/qtcreator/qml/qmljsdebugger/editor/editor.qrc similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/editor.qrc rename to share/qtcreator/qml/qmljsdebugger/editor/editor.qrc diff --git a/share/qtcreator/qmljsdebugger/editor/images/color-picker-24.png b/share/qtcreator/qml/qmljsdebugger/editor/images/color-picker-24.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/color-picker-24.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/color-picker-24.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/color-picker-hicontrast.png b/share/qtcreator/qml/qmljsdebugger/editor/images/color-picker-hicontrast.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/color-picker-hicontrast.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/color-picker-hicontrast.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/color-picker.png b/share/qtcreator/qml/qmljsdebugger/editor/images/color-picker.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/color-picker.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/color-picker.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/from-qml-24.png b/share/qtcreator/qml/qmljsdebugger/editor/images/from-qml-24.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/from-qml-24.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/from-qml-24.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/from-qml.png b/share/qtcreator/qml/qmljsdebugger/editor/images/from-qml.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/from-qml.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/from-qml.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/observermode-24.png b/share/qtcreator/qml/qmljsdebugger/editor/images/observermode-24.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/observermode-24.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/observermode-24.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/observermode.png b/share/qtcreator/qml/qmljsdebugger/editor/images/observermode.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/observermode.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/observermode.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/pause-24.png b/share/qtcreator/qml/qmljsdebugger/editor/images/pause-24.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/pause-24.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/pause-24.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/pause.png b/share/qtcreator/qml/qmljsdebugger/editor/images/pause.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/pause.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/pause.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/play-24.png b/share/qtcreator/qml/qmljsdebugger/editor/images/play-24.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/play-24.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/play-24.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/play.png b/share/qtcreator/qml/qmljsdebugger/editor/images/play.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/play.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/play.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/reload.png b/share/qtcreator/qml/qmljsdebugger/editor/images/reload.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/reload.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/reload.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/resize_handle.png b/share/qtcreator/qml/qmljsdebugger/editor/images/resize_handle.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/resize_handle.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/resize_handle.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/select-24.png b/share/qtcreator/qml/qmljsdebugger/editor/images/select-24.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/select-24.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/select-24.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/select-marquee-24.png b/share/qtcreator/qml/qmljsdebugger/editor/images/select-marquee-24.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/select-marquee-24.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/select-marquee-24.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/select-marquee.png b/share/qtcreator/qml/qmljsdebugger/editor/images/select-marquee.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/select-marquee.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/select-marquee.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/select.png b/share/qtcreator/qml/qmljsdebugger/editor/images/select.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/select.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/select.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/to-qml-24.png b/share/qtcreator/qml/qmljsdebugger/editor/images/to-qml-24.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/to-qml-24.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/to-qml-24.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/to-qml.png b/share/qtcreator/qml/qmljsdebugger/editor/images/to-qml.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/to-qml.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/to-qml.png diff --git a/share/qtcreator/qmljsdebugger/editor/toolbarcolorbox.h b/share/qtcreator/qml/qmljsdebugger/editor/images/toolbarcolorbox.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/toolbarcolorbox.h rename to share/qtcreator/qml/qmljsdebugger/editor/images/toolbarcolorbox.h diff --git a/share/qtcreator/qmljsdebugger/editor/images/zoom-24.png b/share/qtcreator/qml/qmljsdebugger/editor/images/zoom-24.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/zoom-24.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/zoom-24.png diff --git a/share/qtcreator/qmljsdebugger/editor/images/zoom.png b/share/qtcreator/qml/qmljsdebugger/editor/images/zoom.png similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/images/zoom.png rename to share/qtcreator/qml/qmljsdebugger/editor/images/zoom.png diff --git a/share/qtcreator/qmljsdebugger/editor/layeritem.cpp b/share/qtcreator/qml/qmljsdebugger/editor/layeritem.cpp similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/layeritem.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/layeritem.cpp diff --git a/share/qtcreator/qmljsdebugger/editor/layeritem.h b/share/qtcreator/qml/qmljsdebugger/editor/layeritem.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/layeritem.h rename to share/qtcreator/qml/qmljsdebugger/editor/layeritem.h diff --git a/share/qtcreator/qmljsdebugger/editor/qmltoolbar.cpp b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/qmltoolbar.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.cpp diff --git a/share/qtcreator/qmljsdebugger/editor/qmltoolbar.h b/share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/qmltoolbar.h rename to share/qtcreator/qml/qmljsdebugger/editor/qmltoolbar.h diff --git a/share/qtcreator/qmljsdebugger/editor/rubberbandselectionmanipulator.cpp b/share/qtcreator/qml/qmljsdebugger/editor/rubberbandselectionmanipulator.cpp similarity index 99% rename from share/qtcreator/qmljsdebugger/editor/rubberbandselectionmanipulator.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/rubberbandselectionmanipulator.cpp index 379ba98c44dbfb8fdba8b3c1a2c486b909fa3501..43e3575470ce8b72d967241f22ad0dcfe2093e35 100644 --- a/share/qtcreator/qmljsdebugger/editor/rubberbandselectionmanipulator.cpp +++ b/share/qtcreator/qml/qmljsdebugger/editor/rubberbandselectionmanipulator.cpp @@ -28,7 +28,7 @@ **************************************************************************/ #include "rubberbandselectionmanipulator.h" -#include "qdeclarativeviewobserver_p.h" +#include "../qdeclarativeviewobserver_p.h" #include <QDebug> diff --git a/share/qtcreator/qmljsdebugger/editor/rubberbandselectionmanipulator.h b/share/qtcreator/qml/qmljsdebugger/editor/rubberbandselectionmanipulator.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/rubberbandselectionmanipulator.h rename to share/qtcreator/qml/qmljsdebugger/editor/rubberbandselectionmanipulator.h diff --git a/share/qtcreator/qmljsdebugger/editor/selectionindicator.cpp b/share/qtcreator/qml/qmljsdebugger/editor/selectionindicator.cpp similarity index 95% rename from share/qtcreator/qmljsdebugger/editor/selectionindicator.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/selectionindicator.cpp index 5782f2a5ee2315c340d961c00ee97eb1bb1bc3df..d6ba81bd7366565a58424e9dbad23e8df7114089 100644 --- a/share/qtcreator/qmljsdebugger/editor/selectionindicator.cpp +++ b/share/qtcreator/qml/qmljsdebugger/editor/selectionindicator.cpp @@ -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)) { diff --git a/share/qtcreator/qmljsdebugger/editor/selectionindicator.h b/share/qtcreator/qml/qmljsdebugger/editor/selectionindicator.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/selectionindicator.h rename to share/qtcreator/qml/qmljsdebugger/editor/selectionindicator.h diff --git a/share/qtcreator/qmljsdebugger/editor/selectionrectangle.cpp b/share/qtcreator/qml/qmljsdebugger/editor/selectionrectangle.cpp similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/selectionrectangle.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/selectionrectangle.cpp diff --git a/share/qtcreator/qmljsdebugger/editor/selectionrectangle.h b/share/qtcreator/qml/qmljsdebugger/editor/selectionrectangle.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/selectionrectangle.h rename to share/qtcreator/qml/qmljsdebugger/editor/selectionrectangle.h diff --git a/share/qtcreator/qmljsdebugger/editor/selectiontool.cpp b/share/qtcreator/qml/qmljsdebugger/editor/selectiontool.cpp similarity index 99% rename from share/qtcreator/qmljsdebugger/editor/selectiontool.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/selectiontool.cpp index b677a10577105f2c5c9a511e61a099878b8ca906..fdc8b2dc2e64fab8d00a10e69c080772271e2fff 100644 --- a/share/qtcreator/qmljsdebugger/editor/selectiontool.cpp +++ b/share/qtcreator/qml/qmljsdebugger/editor/selectiontool.cpp @@ -31,7 +31,7 @@ #include "layeritem.h" //#include "resizehandleitem.h" -#include "qdeclarativeviewobserver_p.h" +#include "../qdeclarativeviewobserver_p.h" #include <QDeclarativeEngine> diff --git a/share/qtcreator/qmljsdebugger/editor/selectiontool.h b/share/qtcreator/qml/qmljsdebugger/editor/selectiontool.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/selectiontool.h rename to share/qtcreator/qml/qmljsdebugger/editor/selectiontool.h diff --git a/share/qtcreator/qmljsdebugger/editor/singleselectionmanipulator.cpp b/share/qtcreator/qml/qmljsdebugger/editor/singleselectionmanipulator.cpp similarity index 98% rename from share/qtcreator/qmljsdebugger/editor/singleselectionmanipulator.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/singleselectionmanipulator.cpp index d00648154965aeaa78f011d03c529f21f07208d0..e982385650ca20728df5ca669758c2abb061d8a7 100644 --- a/share/qtcreator/qmljsdebugger/editor/singleselectionmanipulator.cpp +++ b/share/qtcreator/qml/qmljsdebugger/editor/singleselectionmanipulator.cpp @@ -29,7 +29,7 @@ #include "singleselectionmanipulator.h" #include "qdeclarativeviewobserver.h" -#include "qdeclarativeviewobserver_p.h" +#include "../qdeclarativeviewobserver_p.h" #include <QtDebug> namespace QmlJSDebugger { diff --git a/share/qtcreator/qmljsdebugger/editor/singleselectionmanipulator.h b/share/qtcreator/qml/qmljsdebugger/editor/singleselectionmanipulator.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/singleselectionmanipulator.h rename to share/qtcreator/qml/qmljsdebugger/editor/singleselectionmanipulator.h diff --git a/share/qtcreator/qmljsdebugger/editor/subcomponenteditortool.cpp b/share/qtcreator/qml/qmljsdebugger/editor/subcomponenteditortool.cpp similarity index 99% rename from share/qtcreator/qmljsdebugger/editor/subcomponenteditortool.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/subcomponenteditortool.cpp index 5089944ddba1c9f22c1ce23adc88a4dbfdfef413..700c0ecf2e51d16e347039bd8e1117e97f349c4a 100644 --- a/share/qtcreator/qmljsdebugger/editor/subcomponenteditortool.cpp +++ b/share/qtcreator/qml/qmljsdebugger/editor/subcomponenteditortool.cpp @@ -1,5 +1,5 @@ #include "subcomponenteditortool.h" -#include "qdeclarativeviewobserver_p.h" +#include "../qdeclarativeviewobserver_p.h" #include "subcomponentmasklayeritem.h" #include "layeritem.h" diff --git a/share/qtcreator/qmljsdebugger/editor/subcomponenteditortool.h b/share/qtcreator/qml/qmljsdebugger/editor/subcomponenteditortool.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/subcomponenteditortool.h rename to share/qtcreator/qml/qmljsdebugger/editor/subcomponenteditortool.h diff --git a/share/qtcreator/qmljsdebugger/editor/subcomponentmasklayeritem.cpp b/share/qtcreator/qml/qmljsdebugger/editor/subcomponentmasklayeritem.cpp similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/subcomponentmasklayeritem.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/subcomponentmasklayeritem.cpp diff --git a/share/qtcreator/qmljsdebugger/editor/subcomponentmasklayeritem.h b/share/qtcreator/qml/qmljsdebugger/editor/subcomponentmasklayeritem.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/subcomponentmasklayeritem.h rename to share/qtcreator/qml/qmljsdebugger/editor/subcomponentmasklayeritem.h diff --git a/share/qtcreator/qmljsdebugger/editor/toolbarcolorbox.cpp b/share/qtcreator/qml/qmljsdebugger/editor/toolbarcolorbox.cpp similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/toolbarcolorbox.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/toolbarcolorbox.cpp diff --git a/share/qtcreator/qml/qmljsdebugger/editor/toolbarcolorbox.h b/share/qtcreator/qml/qmljsdebugger/editor/toolbarcolorbox.h new file mode 100644 index 0000000000000000000000000000000000000000..d4be7921bb8f6c51031945ef56750992aef038d3 --- /dev/null +++ b/share/qtcreator/qml/qmljsdebugger/editor/toolbarcolorbox.h @@ -0,0 +1,41 @@ +#ifndef ToolBarColorBox_H +#define ToolBarColorBox_H + +#include <QLabel> +#include <QColor> +#include <QPoint> + +QT_FORWARD_DECLARE_CLASS(QContextMenuEvent); +QT_FORWARD_DECLARE_CLASS(QAction); + +namespace QmlJSDebugger { + +class ToolBarColorBox : public QLabel +{ + Q_OBJECT +public: + explicit ToolBarColorBox(QWidget *parent = 0); + void setColor(const QColor &color); + +protected: + void contextMenuEvent(QContextMenuEvent *ev); + void mouseDoubleClickEvent(QMouseEvent *); + void mousePressEvent(QMouseEvent *ev); + void mouseMoveEvent(QMouseEvent *ev); +private slots: + void copyColorToClipboard(); + +private: + QPixmap createDragPixmap(int size = 24) const; + +private: + bool m_dragStarted; + QPoint m_dragBeginPoint; + QAction *m_copyHexColor; + QColor m_color; + +}; + +} // namespace QmlJSDebugger + +#endif // ToolBarColorBox_H diff --git a/share/qtcreator/qmljsdebugger/editor/zoomtool.cpp b/share/qtcreator/qml/qmljsdebugger/editor/zoomtool.cpp similarity index 99% rename from share/qtcreator/qmljsdebugger/editor/zoomtool.cpp rename to share/qtcreator/qml/qmljsdebugger/editor/zoomtool.cpp index 2bb152e2d635bbc3ec7e88f67fc54bfcf6c873c0..c1d310002b293be1edc393ae87b8c31b363587a0 100644 --- a/share/qtcreator/qmljsdebugger/editor/zoomtool.cpp +++ b/share/qtcreator/qml/qmljsdebugger/editor/zoomtool.cpp @@ -1,5 +1,5 @@ #include "zoomtool.h" -#include "qdeclarativeviewobserver_p.h" +#include "../qdeclarativeviewobserver_p.h" #include <QMouseEvent> #include <QWheelEvent> diff --git a/share/qtcreator/qmljsdebugger/editor/zoomtool.h b/share/qtcreator/qml/qmljsdebugger/editor/zoomtool.h similarity index 100% rename from share/qtcreator/qmljsdebugger/editor/zoomtool.h rename to share/qtcreator/qml/qmljsdebugger/editor/zoomtool.h diff --git a/share/qtcreator/qmljsdebugger/include/jsdebuggeragent.h b/share/qtcreator/qml/qmljsdebugger/include/jsdebuggeragent.h similarity index 97% rename from share/qtcreator/qmljsdebugger/include/jsdebuggeragent.h rename to share/qtcreator/qml/qmljsdebugger/include/jsdebuggeragent.h index 39b559cabe33592242dcf1e7c9b8953bab71e9b8..5c0fb017231307aabe28e58657892fc2610dbafc 100644 --- a/share/qtcreator/qmljsdebugger/include/jsdebuggeragent.h +++ b/share/qtcreator/qml/qmljsdebugger/include/jsdebuggeragent.h @@ -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(); diff --git a/share/qtcreator/qmljsdebugger/include/qdeclarativeobserverservice.h b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h similarity index 96% rename from share/qtcreator/qmljsdebugger/include/qdeclarativeobserverservice.h rename to share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h index 121a847684e1b98afa6833b4e4fd55fc7cd6aa67..66084cd92c4d3f08cec0d2b6362357f228f2b23a 100644 --- a/share/qtcreator/qmljsdebugger/include/qdeclarativeobserverservice.h +++ b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h @@ -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: diff --git a/share/qtcreator/qmljsdebugger/include/qdeclarativeviewobserver.h b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h similarity index 100% rename from share/qtcreator/qmljsdebugger/include/qdeclarativeviewobserver.h rename to share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h diff --git a/share/qtcreator/qmljsdebugger/include/qmljsdebugger_global.h b/share/qtcreator/qml/qmljsdebugger/include/qmljsdebugger_global.h similarity index 100% rename from share/qtcreator/qmljsdebugger/include/qmljsdebugger_global.h rename to share/qtcreator/qml/qmljsdebugger/include/qmljsdebugger_global.h diff --git a/share/qtcreator/qmljsdebugger/include/qmlobserverconstants.h b/share/qtcreator/qml/qmljsdebugger/include/qmlobserverconstants.h similarity index 100% rename from share/qtcreator/qmljsdebugger/include/qmlobserverconstants.h rename to share/qtcreator/qml/qmljsdebugger/include/qmlobserverconstants.h diff --git a/share/qtcreator/qml/qmljsdebugger/include/qt_private/qdeclarativedebughelper_p.h b/share/qtcreator/qml/qmljsdebugger/include/qt_private/qdeclarativedebughelper_p.h new file mode 100644 index 0000000000000000000000000000000000000000..c9cb8391212b3386afc92d86381f330953477f2b --- /dev/null +++ b/share/qtcreator/qml/qmljsdebugger/include/qt_private/qdeclarativedebughelper_p.h @@ -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 diff --git a/share/qtcreator/qml/qmljsdebugger/include/qt_private/qdeclarativedebugservice_p.h b/share/qtcreator/qml/qmljsdebugger/include/qt_private/qdeclarativedebugservice_p.h new file mode 100644 index 0000000000000000000000000000000000000000..0cadbe5b585cac516616432bb46b40a28576e0c3 --- /dev/null +++ b/share/qtcreator/qml/qmljsdebugger/include/qt_private/qdeclarativedebugservice_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 + diff --git a/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp b/share/qtcreator/qml/qmljsdebugger/jsdebuggeragent.cpp similarity index 98% rename from share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp rename to share/qtcreator/qml/qmljsdebugger/jsdebuggeragent.cpp index 4258882e10c76dfc75354bcf051ded0bb1b934db..00b6ea274898c2e9ea50ef90621f3cd4d5e03d47 100644 --- a/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp +++ b/share/qtcreator/qml/qmljsdebugger/jsdebuggeragent.cpp @@ -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 diff --git a/share/qtcreator/qmljsdebugger/qdeclarativeobserverservice.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp similarity index 95% rename from share/qtcreator/qmljsdebugger/qdeclarativeobserverservice.cpp rename to share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp index 16b5145e74abdca804932b7c82902d2f04d01ad4..114cd15cf6c9ff4c635df4bf527cffcccbe223c3 100644 --- a/share/qtcreator/qmljsdebugger/qdeclarativeobserverservice.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp @@ -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 diff --git a/share/qtcreator/qmljsdebugger/qdeclarativeviewobserver.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp similarity index 97% rename from share/qtcreator/qmljsdebugger/qdeclarativeviewobserver.cpp rename to share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp index 81cd9b018bac109290b65384849bcbd1b1dcc0c8..d48d4eff5379f1129faf72a093aba778d43c1e24 100644 --- a/share/qtcreator/qmljsdebugger/qdeclarativeviewobserver.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp @@ -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 diff --git a/share/qtcreator/qmljsdebugger/qdeclarativeviewobserver_p.h b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h similarity index 97% rename from share/qtcreator/qmljsdebugger/qdeclarativeviewobserver_p.h rename to share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h index a276c4350e2f6e00cbed8db19928cd8352427281..516877dd586c49a6772174a800885d42327720a8 100644 --- a/share/qtcreator/qmljsdebugger/qdeclarativeviewobserver_p.h +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h @@ -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 diff --git a/share/qtcreator/qmljsdebugger/qmljsdebugger-lib.pri b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-lib.pri similarity index 73% rename from share/qtcreator/qmljsdebugger/qmljsdebugger-lib.pri rename to share/qtcreator/qml/qmljsdebugger/qmljsdebugger-lib.pri index f4918263780616f86cce6310bb8e5a6296a27678..ec99cd06cc5a131cf866142f72a399a320e6312b 100644 --- a/share/qtcreator/qmljsdebugger/qmljsdebugger-lib.pri +++ b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger-lib.pri @@ -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,12 +8,12 @@ contains(CONFIG, dll) { DEFINES += BUILD_QMLJSDEBUGGER_STATIC_LIB } -include($$PWD/private_headers.pri) - ## Input HEADERS += \ include/jsdebuggeragent.h \ - include/qmljsdebugger_global.h + include/qmljsdebugger_global.h \ + include/qt_private/qdeclarativedebughelper_p.h \ + include/qt_private/qdeclarativedebugservice_p.h SOURCES += \ jsdebuggeragent.cpp diff --git a/share/qtcreator/qmljsdebugger/qmljsdebugger.pri b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger.pri similarity index 67% rename from share/qtcreator/qmljsdebugger/qmljsdebugger.pri rename to share/qtcreator/qml/qmljsdebugger/qmljsdebugger.pri index 34483da17d9e40b7421c6ecee0740cb7a78fd11b..a4abeb9cd5148ae75d2d854e4ff84ef6e236f2b8 100644 --- a/share/qtcreator/qmljsdebugger/qmljsdebugger.pri +++ b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger.pri @@ -1,5 +1,5 @@ INCLUDEPATH += $$PWD/include -DEPENDPATH += $$PWD $$PWD/include $$PWD/editor +DEPENDPATH += $PPWD/include QT += declarative script LIBS *= -l$$qtLibraryName(QmlJSDebugger) diff --git a/share/qtcreator/qmljsdebugger/qmljsdebugger.pro b/share/qtcreator/qml/qmljsdebugger/qmljsdebugger.pro similarity index 100% rename from share/qtcreator/qmljsdebugger/qmljsdebugger.pro rename to share/qtcreator/qml/qmljsdebugger/qmljsdebugger.pro diff --git a/src/tools/qml/qmlobserver/Info_mac.plist b/share/qtcreator/qml/qmlobserver/Info_mac.plist similarity index 100% rename from src/tools/qml/qmlobserver/Info_mac.plist rename to share/qtcreator/qml/qmlobserver/Info_mac.plist diff --git a/share/qtcreator/qml/qmlobserver/LGPL_EXCEPTION.TXT b/share/qtcreator/qml/qmlobserver/LGPL_EXCEPTION.TXT new file mode 100644 index 0000000000000000000000000000000000000000..8d0f85eba40bb52717cdd79ca238297f5b3e5adc --- /dev/null +++ b/share/qtcreator/qml/qmlobserver/LGPL_EXCEPTION.TXT @@ -0,0 +1,3 @@ +Nokia Qt LGPL Exception version 1.0 + +As a special exception to the GNU Lesser General Public License version 2.1, the object code form of a "work that uses the Library" may incorporate material from a header file that is part of the Library. You may distribute such object code under terms of your choice, provided that the incorporated material (i) does not exceed more than 5% of the total size of the Library; and (ii) is limited to numerical parameters, data structure layouts, accessors, macros, inline functions and templates. \ No newline at end of file diff --git a/share/qtcreator/qml/qmlobserver/LICENSE.LGPL b/share/qtcreator/qml/qmlobserver/LICENSE.LGPL new file mode 100644 index 0000000000000000000000000000000000000000..602bfc94635ddf8f1bf2b00419a85ead645a5b67 --- /dev/null +++ b/share/qtcreator/qml/qmlobserver/LICENSE.LGPL @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/src/tools/qml/qmlobserver/content/Browser.qml b/share/qtcreator/qml/qmlobserver/content/Browser.qml similarity index 100% rename from src/tools/qml/qmlobserver/content/Browser.qml rename to share/qtcreator/qml/qmlobserver/content/Browser.qml diff --git a/src/tools/qml/qmlobserver/content/images/folder.png b/share/qtcreator/qml/qmlobserver/content/images/folder.png similarity index 100% rename from src/tools/qml/qmlobserver/content/images/folder.png rename to share/qtcreator/qml/qmlobserver/content/images/folder.png diff --git a/src/tools/qml/qmlobserver/content/images/titlebar.png b/share/qtcreator/qml/qmlobserver/content/images/titlebar.png similarity index 100% rename from src/tools/qml/qmlobserver/content/images/titlebar.png rename to share/qtcreator/qml/qmlobserver/content/images/titlebar.png diff --git a/src/tools/qml/qmlobserver/content/images/titlebar.sci b/share/qtcreator/qml/qmlobserver/content/images/titlebar.sci similarity index 100% rename from src/tools/qml/qmlobserver/content/images/titlebar.sci rename to share/qtcreator/qml/qmlobserver/content/images/titlebar.sci diff --git a/src/tools/qml/qmlobserver/content/images/up.png b/share/qtcreator/qml/qmlobserver/content/images/up.png similarity index 100% rename from src/tools/qml/qmlobserver/content/images/up.png rename to share/qtcreator/qml/qmlobserver/content/images/up.png diff --git a/share/qtcreator/qml/qmlobserver/crumblepath.cpp b/share/qtcreator/qml/qmlobserver/crumblepath.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f773d37bb47d9919ff8634e2a576f9ac009a24e9 --- /dev/null +++ b/share/qtcreator/qml/qmlobserver/crumblepath.cpp @@ -0,0 +1,389 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "crumblepath.h" + +#include <QtCore/QList> +#include <QtGui/QHBoxLayout> +#include <QtGui/QPushButton> +#include <QtGui/QStyle> +#include <QtGui/QResizeEvent> +#include <QtGui/QPainter> +#include <QtGui/QImage> + +static const int ArrowBorderSize = 12; + +// Draws a CSS-like border image where the defined borders are not stretched +static void drawCornerImage(const QImage &img, QPainter *painter, QRect rect, + int left, int top, int right, int bottom) +{ + QSize size = img.size(); + if (top > 0) { //top + painter->drawImage(QRect(rect.left() + left, rect.top(), rect.width() -right - left, top), img, + QRect(left, 0, size.width() -right - left, top)); + if (left > 0) //top-left + painter->drawImage(QRect(rect.left(), rect.top(), left, top), img, + QRect(0, 0, left, top)); + if (right > 0) //top-right + painter->drawImage(QRect(rect.left() + rect.width() - right, rect.top(), right, top), img, + QRect(size.width() - right, 0, right, top)); + } + //left + if (left > 0) + painter->drawImage(QRect(rect.left(), rect.top()+top, left, rect.height() - top - bottom), img, + QRect(0, top, left, size.height() - bottom - top)); + //center + painter->drawImage(QRect(rect.left() + left, rect.top()+top, rect.width() -right - left, + rect.height() - bottom - top), img, + QRect(left, top, size.width() -right -left, + size.height() - bottom - top)); + if (right > 0) //right + painter->drawImage(QRect(rect.left() +rect.width() - right, rect.top()+top, right, rect.height() - top - bottom), img, + QRect(size.width() - right, top, right, size.height() - bottom - top)); + if (bottom > 0) { //bottom + painter->drawImage(QRect(rect.left() +left, rect.top() + rect.height() - bottom, + rect.width() - right - left, bottom), img, + QRect(left, size.height() - bottom, + size.width() - right - left, bottom)); + if (left > 0) //bottom-left + painter->drawImage(QRect(rect.left(), rect.top() + rect.height() - bottom, left, bottom), img, + QRect(0, size.height() - bottom, left, bottom)); + if (right > 0) //bottom-right + painter->drawImage(QRect(rect.left() + rect.width() - right, rect.top() + rect.height() - bottom, right, bottom), img, + QRect(size.width() - right, size.height() - bottom, right, bottom)); + } +} + +// Tints an image with tintColor, while preserving alpha and lightness +static void tintImage(QImage &img, const QColor &tintColor) +{ + QPainter p(&img); + p.setCompositionMode(QPainter::CompositionMode_Screen); + + for (int x = 0; x < img.width(); ++x) { + for (int y = 0; y < img.height(); ++y) { + QRgb rgbColor = img.pixel(x, y); + int alpha = qAlpha(rgbColor); + QColor c = QColor(rgbColor); + + if (alpha > 0) { + c.toHsl(); + qreal l = c.lightnessF(); + QColor newColor = QColor::fromHslF(tintColor.hslHueF(), tintColor.hslSaturationF(), l); + newColor.setAlpha(alpha); + img.setPixel(x, y, newColor.rgba()); + } + } + } +} + +class CrumblePathButton : public QPushButton +{ +public: + enum SegmentType { + LastSegment = 1, + MiddleSegment = 2, + FirstSegment = 4 + }; + + explicit CrumblePathButton(const QString &title, QWidget *parent = 0); + void setSegmentType(int type); +protected: + void paintEvent(QPaintEvent *); + void mouseMoveEvent(QMouseEvent *e); + void leaveEvent(QEvent *); + void mousePressEvent(QMouseEvent *e); + void mouseReleaseEvent(QMouseEvent *e); + +private: + void tintImages(); + +private: + bool m_isHovering; + bool m_isPressed; + bool m_isEnd; + QColor m_baseColor; + QImage m_segment; + QImage m_segmentEnd; + QImage m_segmentSelected; + QImage m_segmentSelectedEnd; + QImage m_segmentHover; + QImage m_segmentHoverEnd; + QPoint m_textPos; +}; + +CrumblePathButton::CrumblePathButton(const QString &title, QWidget *parent) + : QPushButton(title, parent), m_isHovering(false), m_isPressed(false), m_isEnd(true) +{ + setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); + setToolTip(title); + setMinimumHeight(24); + setMaximumHeight(24); + setMouseTracking(true); + m_textPos.setX(18); + m_textPos.setY(height()); + m_baseColor = QColor(0x666666); + + m_segment = QImage(":/utils/images/crumblepath-segment.png"); + m_segmentSelected = QImage(":/utils/images/crumblepath-segment-selected.png"); + m_segmentHover = QImage(":/utils/images/crumblepath-segment-hover.png"); + m_segmentEnd = QImage(":/utils/images/crumblepath-segment-end.png"); + m_segmentSelectedEnd = QImage(":/utils/images/crumblepath-segment-selected-end.png"); + m_segmentHoverEnd = QImage(":/utils/images/crumblepath-segment-hover-end.png"); + + tintImages(); +} + +void CrumblePathButton::paintEvent(QPaintEvent *) +{ + QPainter p(this); + QRect geom(0, 0, geometry().width(), geometry().height()); + + if (m_isEnd) { + if (m_isPressed) { + drawCornerImage(m_segmentSelectedEnd, &p, geom, 2, 0, 2, 0); + } else if (m_isHovering) { + drawCornerImage(m_segmentHoverEnd, &p, geom, 2, 0, 2, 0); + } else { + drawCornerImage(m_segmentEnd, &p, geom, 2, 0, 2, 0); + } + } else { + if (m_isPressed) { + drawCornerImage(m_segmentSelected, &p, geom, 2, 0, 12, 0); + } else if (m_isHovering) { + drawCornerImage(m_segmentHover, &p, geom, 2, 0, 12, 0); + } else { + drawCornerImage(m_segment, &p, geom, 2, 0, 12, 0); + } + } + p.setPen(QColor(Qt::white)); + QFontMetrics fm(p.font()); + QString textToDraw = fm.elidedText(text(), Qt::ElideRight, geom.width() - m_textPos.x()); + + p.drawText(QRectF(m_textPos.x(), 4, geom.width(), geom.height()), textToDraw); +} + +void CrumblePathButton::tintImages() +{ + tintImage(m_segmentEnd, m_baseColor); + tintImage(m_segmentSelectedEnd, m_baseColor); + tintImage(m_segmentHoverEnd, m_baseColor); + tintImage(m_segmentSelected, m_baseColor); + tintImage(m_segmentHover, m_baseColor); + tintImage(m_segment, m_baseColor); +} + +void CrumblePathButton::leaveEvent(QEvent *e) +{ + QPushButton::leaveEvent(e); + m_isHovering = false; + update(); +} + +void CrumblePathButton::mouseMoveEvent(QMouseEvent *e) +{ + QPushButton::mouseMoveEvent(e); + m_isHovering = true; + update(); +} + +void CrumblePathButton::mousePressEvent(QMouseEvent *e) +{ + QPushButton::mousePressEvent(e); + m_isPressed = true; + update(); +} + +void CrumblePathButton::mouseReleaseEvent(QMouseEvent *e) +{ + QPushButton::mouseReleaseEvent(e); + m_isPressed = false; + update(); +} + +void CrumblePathButton::setSegmentType(int type) +{ + bool useLeftPadding = !(type & FirstSegment); + m_isEnd = (type & LastSegment); + m_textPos.setX(useLeftPadding ? 18 : 4); +} + +struct CrumblePathPrivate { + explicit CrumblePathPrivate(CrumblePath *q); + + QColor m_baseColor; + QList<CrumblePathButton*> m_buttons; + QWidget *m_background; +}; + +CrumblePathPrivate::CrumblePathPrivate(CrumblePath *q) : + m_baseColor(0x666666), + m_background(new QWidget(q)) +{ +} + +// +// CrumblePath +// +CrumblePath::CrumblePath(QWidget *parent) : + QWidget(parent), d(new CrumblePathPrivate(this)) +{ + setMinimumHeight(25); + setMaximumHeight(25); + setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); + + setBackgroundStyle(); + d->m_background->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); +} + +CrumblePath::~CrumblePath() +{ + qDeleteAll(d->m_buttons); + d->m_buttons.clear(); +} + +void CrumblePath::setBackgroundStyle() +{ + d->m_background->setStyleSheet("QWidget { background-color:" + d->m_baseColor.name() + ";}"); +} + +void CrumblePath::pushElement(const QString &title) +{ + CrumblePathButton *newButton = new CrumblePathButton(title, this); + newButton->hide(); + connect(newButton, SIGNAL(clicked()), SLOT(mapClickToIndex())); + connect(newButton, SIGNAL(customContextMenuRequested(QPoint)), SLOT(mapContextMenuRequestToIndex())); + + int segType = CrumblePathButton::MiddleSegment; + if (!d->m_buttons.isEmpty()) { + if (d->m_buttons.length() == 1) + segType = segType | CrumblePathButton::FirstSegment; + d->m_buttons.last()->setSegmentType(segType); + } else { + segType = CrumblePathButton::FirstSegment | CrumblePathButton::LastSegment; + newButton->setSegmentType(segType); + } + d->m_buttons.append(newButton); + + resizeButtons(); +} + +void CrumblePath::popElement() +{ + QWidget *last = d->m_buttons.last(); + d->m_buttons.removeLast(); + last->setParent(0); + last->deleteLater(); + + int segType = CrumblePathButton::MiddleSegment | CrumblePathButton::LastSegment; + if (!d->m_buttons.isEmpty()) { + if (d->m_buttons.length() == 1) + segType = CrumblePathButton::FirstSegment | CrumblePathButton::LastSegment; + d->m_buttons.last()->setSegmentType(segType); + } + resizeButtons(); +} + +void CrumblePath::clear() +{ + while (!d->m_buttons.isEmpty()) { + popElement(); + } +} + +void CrumblePath::resizeEvent(QResizeEvent *) +{ + resizeButtons(); +} + +void CrumblePath::resizeButtons() +{ + int buttonMinWidth = 0; + int buttonMaxWidth = 0; + int totalWidthLeft = width(); + + if (d->m_buttons.length() >= 1) { + QPoint nextElementPosition(0,0); + + d->m_buttons[0]->raise(); + // rearrange all items so that the first item is on top (added last). + for(int i = 0; i < d->m_buttons.length() ; ++i) { + CrumblePathButton *button = d->m_buttons[i]; + + QFontMetrics fm(button->font()); + buttonMinWidth = ArrowBorderSize + fm.width(button->text()) + ArrowBorderSize * 2 ; + buttonMaxWidth = (totalWidthLeft + ArrowBorderSize * (d->m_buttons.length() - i)) / (d->m_buttons.length() - i); + + if (buttonMinWidth > buttonMaxWidth && i < d->m_buttons.length() - 1) { + buttonMinWidth = buttonMaxWidth; + } else if (i > 3 && (i == d->m_buttons.length() - 1)) { + buttonMinWidth = width() - nextElementPosition.x(); + buttonMaxWidth = buttonMinWidth; + } + + button->setMinimumWidth(buttonMinWidth); + button->setMaximumWidth(buttonMaxWidth); + button->move(nextElementPosition); + + nextElementPosition.rx() += button->width() - ArrowBorderSize; + totalWidthLeft -= button->width(); + + button->show(); + if (i > 0) + button->stackUnder(d->m_buttons[i - 1]); + } + + } + + d->m_background->setGeometry(0,0, width(), height()); + d->m_background->update(); +} + +void CrumblePath::mapClickToIndex() +{ + QObject *element = sender(); + for (int i = 0; i < d->m_buttons.length(); ++i) { + if (d->m_buttons[i] == element) { + emit elementClicked(i); + return; + } + } +} + +void CrumblePath::mapContextMenuRequestToIndex() +{ + QObject *element = sender(); + for (int i = 0; i < d->m_buttons.length(); ++i) { + if (d->m_buttons[i] == element) { + emit elementContextMenuRequested(i); + return; + } + } +} + diff --git a/src/plugins/snippets/inputwidget.h b/share/qtcreator/qml/qmlobserver/crumblepath.h similarity index 65% rename from src/plugins/snippets/inputwidget.h rename to share/qtcreator/qml/qmlobserver/crumblepath.h index fbfeb6db290662713760078c3035a712f5b3d963..188992db352e78992baa619cc0738af6d76149e2 100644 --- a/src/plugins/snippets/inputwidget.h +++ b/share/qtcreator/qml/qmlobserver/crumblepath.h @@ -27,41 +27,44 @@ ** **************************************************************************/ -#ifndef INPUTWIDGET_H -#define INPUTWIDGET_H +#ifndef CRUMBLEPATH_H +#define CRUMBLEPATH_H -#include <QtGui/QFrame> +#include <QtGui/QWidget> -QT_BEGIN_NAMESPACE -class QLabel; -class QLineEdit; -QT_END_NAMESPACE +QT_FORWARD_DECLARE_CLASS(QResizeEvent); -namespace Snippets { -namespace Internal { +struct CrumblePathPrivate; -class InputWidget : public QFrame +class CrumblePath : public QWidget { Q_OBJECT - public: - InputWidget(const QString &text, const QString &value); - void showInputWidget(const QPoint &position); + explicit CrumblePath(QWidget *parent = 0); + ~CrumblePath(); + +public slots: + void pushElement(const QString &title); + void popElement(); + void clear(); signals: - void finished(bool canceled, const QString &value); + void elementClicked(int index); + void elementContextMenuRequested(int index); protected: - bool eventFilter(QObject *, QEvent *); - void resizeEvent(QResizeEvent *event); + void resizeEvent(QResizeEvent *); + +private slots: + void mapClickToIndex(); + void mapContextMenuRequestToIndex(); private: - void closeInputWidget(bool cancel); - QLabel *m_label; - QLineEdit *m_lineEdit; -}; + void resizeButtons(); + void setBackgroundStyle(); -} // namespace Internal -} // namespace Snippets +private: + QScopedPointer<CrumblePathPrivate> d; +}; -#endif // INPUTWIDGET_H +#endif // CRUMBLEPATH_H diff --git a/src/tools/qml/qmlobserver/deviceorientation.cpp b/share/qtcreator/qml/qmlobserver/deviceorientation.cpp similarity index 100% rename from src/tools/qml/qmlobserver/deviceorientation.cpp rename to share/qtcreator/qml/qmlobserver/deviceorientation.cpp diff --git a/src/tools/qml/qmlobserver/deviceorientation.h b/share/qtcreator/qml/qmlobserver/deviceorientation.h similarity index 97% rename from src/tools/qml/qmlobserver/deviceorientation.h rename to share/qtcreator/qml/qmlobserver/deviceorientation.h index 817bfc8528c5152214dc3e8309bdfbc964563060..3bad5bec012480fc93f7797ff6a7a18187f1b193 100644 --- a/src/tools/qml/qmlobserver/deviceorientation.h +++ b/share/qtcreator/qml/qmlobserver/deviceorientation.h @@ -52,8 +52,8 @@ class DeviceOrientation : public QObject Q_OBJECT Q_ENUMS(Orientation) public: - enum Orientation { - UnknownOrientation, + enum Orientation { + UnknownOrientation, Portrait, Landscape, PortraitInverted, diff --git a/src/tools/qml/qmlobserver/deviceorientation_maemo5.cpp b/share/qtcreator/qml/qmlobserver/deviceorientation_maemo5.cpp similarity index 100% rename from src/tools/qml/qmlobserver/deviceorientation_maemo5.cpp rename to share/qtcreator/qml/qmlobserver/deviceorientation_maemo5.cpp diff --git a/src/tools/qml/qmlobserver/loggerwidget.cpp b/share/qtcreator/qml/qmlobserver/loggerwidget.cpp similarity index 100% rename from src/tools/qml/qmlobserver/loggerwidget.cpp rename to share/qtcreator/qml/qmlobserver/loggerwidget.cpp diff --git a/src/tools/qml/qmlobserver/loggerwidget.h b/share/qtcreator/qml/qmlobserver/loggerwidget.h similarity index 100% rename from src/tools/qml/qmlobserver/loggerwidget.h rename to share/qtcreator/qml/qmlobserver/loggerwidget.h diff --git a/src/tools/qml/qmlobserver/main.cpp b/share/qtcreator/qml/qmlobserver/main.cpp similarity index 100% rename from src/tools/qml/qmlobserver/main.cpp rename to share/qtcreator/qml/qmlobserver/main.cpp diff --git a/src/tools/qml/qmlobserver/proxysettings.cpp b/share/qtcreator/qml/qmlobserver/proxysettings.cpp similarity index 100% rename from src/tools/qml/qmlobserver/proxysettings.cpp rename to share/qtcreator/qml/qmlobserver/proxysettings.cpp diff --git a/src/tools/qml/qmlobserver/proxysettings.h b/share/qtcreator/qml/qmlobserver/proxysettings.h similarity index 100% rename from src/tools/qml/qmlobserver/proxysettings.h rename to share/qtcreator/qml/qmlobserver/proxysettings.h diff --git a/src/tools/qml/qmlobserver/proxysettings.ui b/share/qtcreator/qml/qmlobserver/proxysettings.ui similarity index 100% rename from src/tools/qml/qmlobserver/proxysettings.ui rename to share/qtcreator/qml/qmlobserver/proxysettings.ui diff --git a/src/tools/qml/qmlobserver/proxysettings_maemo5.ui b/share/qtcreator/qml/qmlobserver/proxysettings_maemo5.ui similarity index 100% rename from src/tools/qml/qmlobserver/proxysettings_maemo5.ui rename to share/qtcreator/qml/qmlobserver/proxysettings_maemo5.ui diff --git a/src/tools/qml/qmlobserver/qdeclarativetester.cpp b/share/qtcreator/qml/qmlobserver/qdeclarativetester.cpp similarity index 99% rename from src/tools/qml/qmlobserver/qdeclarativetester.cpp rename to share/qtcreator/qml/qmlobserver/qdeclarativetester.cpp index 9864df63cec44df84193b86c6fad9f46aa0313b7..14918b238096cb651ccd2ae39eced80d33e8a2c9 100644 --- a/src/tools/qml/qmlobserver/qdeclarativetester.cpp +++ b/share/qtcreator/qml/qmlobserver/qdeclarativetester.cpp @@ -53,9 +53,9 @@ QT_BEGIN_NAMESPACE -QDeclarativeTester::QDeclarativeTester(const QString &script, QDeclarativeViewer::ScriptOptions opts, +QDeclarativeTester::QDeclarativeTester(const QString &script, QDeclarativeViewer::ScriptOptions opts, QDeclarativeView *parent) -: QAbstractAnimation(parent), m_script(script), m_view(parent), filterEvents(true), options(opts), +: QAbstractAnimation(parent), m_script(script), m_view(parent), filterEvents(true), options(opts), testscript(0), hasCompleted(false), hasFailed(false) { parent->viewport()->installEventFilter(this); @@ -68,7 +68,7 @@ QDeclarativeTester::QDeclarativeTester(const QString &script, QDeclarativeViewer QDeclarativeTester::~QDeclarativeTester() { - if (!hasFailed && + if (!hasFailed && options & QDeclarativeViewer::Record && options & QDeclarativeViewer::SaveOnExit) save(); diff --git a/src/tools/qml/qmlobserver/qdeclarativetester.h b/share/qtcreator/qml/qmlobserver/qdeclarativetester.h similarity index 100% rename from src/tools/qml/qmlobserver/qdeclarativetester.h rename to share/qtcreator/qml/qmlobserver/qdeclarativetester.h diff --git a/src/tools/qml/qmlobserver/qml.icns b/share/qtcreator/qml/qmlobserver/qml.icns similarity index 100% rename from src/tools/qml/qmlobserver/qml.icns rename to share/qtcreator/qml/qmlobserver/qml.icns diff --git a/src/tools/qml/qmlobserver/qml.pri b/share/qtcreator/qml/qmlobserver/qml.pri similarity index 85% rename from src/tools/qml/qmlobserver/qml.pri rename to share/qtcreator/qml/qmlobserver/qml.pri index 7d9a503fb69d479901b5feb518ce67de5050af35..2016513f4e49fac7fa2e1a281175fb716b334b31 100644 --- a/src/tools/qml/qmlobserver/qml.pri +++ b/share/qtcreator/qml/qmlobserver/qml.pri @@ -11,13 +11,15 @@ HEADERS += $$PWD/qmlruntime.h \ $$PWD/proxysettings.h \ $$PWD/qdeclarativetester.h \ $$PWD/deviceorientation.h \ - $$PWD/loggerwidget.h + $$PWD/loggerwidget.h \ + $$PWD/crumblepath.h SOURCES += $$PWD/qmlruntime.cpp \ $$PWD/proxysettings.cpp \ $$PWD/qdeclarativetester.cpp \ - $$PWD/loggerwidget.cpp + $$PWD/loggerwidget.cpp \ + $$PWD/crumblepath.cpp RESOURCES += $$PWD/qmlruntime.qrc diff --git a/share/qtcreator/qml/qmlobserver/qmlobserver.pro b/share/qtcreator/qml/qmlobserver/qmlobserver.pro new file mode 100644 index 0000000000000000000000000000000000000000..d05ca7ee1e6ab2fe7592711ecf76c6a20c2acc60 --- /dev/null +++ b/share/qtcreator/qml/qmlobserver/qmlobserver.pro @@ -0,0 +1,26 @@ +TEMPLATE = app +DEFINES += QMLOBSERVER + +### FIXME: only debug plugins are now supported. +CONFIG -= release +CONFIG += debug + +include(qml.pri) + +SOURCES += main.cpp + +exists($$PWD/qmljsdebugger/qmljsdebugger-lib.pri) { +# for building helpers within QT_INSTALL_DATA, we deploy the lib inside the observer directory. + include($$PWD/qmljsdebugger/qmljsdebugger-lib.pri) +} else { + include($$PWD/../qmljsdebugger/qmljsdebugger-lib.pri) +} + +mac { + QMAKE_INFO_PLIST=Info_mac.plist + TARGET=QMLObserver + ICON=qml.icns +} else { + TARGET=qmlobserver +} + diff --git a/src/tools/qml/qmlobserver/qmlruntime.cpp b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp similarity index 99% rename from src/tools/qml/qmlobserver/qmlruntime.cpp rename to share/qtcreator/qml/qmlobserver/qmlruntime.cpp index 0fbacbe3648d5bc4028cb36cf2c84b67c54f3671..140aee7084c75e69c91f1c3f0ff07f1ebceca3c9 100644 --- a/src/tools/qml/qmlobserver/qmlruntime.cpp +++ b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp @@ -56,8 +56,8 @@ #include <qdeclarativeviewobserver.h> #include <qdeclarativeobserverservice.h> -#include <utils/crumblepath.h> +#include "crumblepath.h" #include "qmlruntime.h" #include <qdeclarativecontext.h> #include <qdeclarativeengine.h> @@ -537,7 +537,7 @@ class CrumblePathResizer : public QObject { Q_OBJECT public: - CrumblePathResizer(Utils::CrumblePath *crumblePathWidget, QObject *parent = 0) : + CrumblePathResizer(CrumblePath *crumblePathWidget, QObject *parent = 0) : QObject(parent), m_crumblePathWidget(crumblePathWidget) { @@ -616,7 +616,7 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) canvas = new QDeclarativeView(this); observer = new QmlJSDebugger::QDeclarativeViewObserver(canvas, this); if (!(flags & Qt::FramelessWindowHint)) { - m_crumblePathWidget = new Utils::CrumblePath(canvas); + m_crumblePathWidget = new CrumblePath(canvas); #ifndef Q_WS_MAC m_crumblePathWidget->setStyleSheet("QWidget { border-bottom: 1px solid black; }"); #endif diff --git a/src/tools/qml/qmlobserver/qmlruntime.h b/share/qtcreator/qml/qmlobserver/qmlruntime.h similarity index 98% rename from src/tools/qml/qmlobserver/qmlruntime.h rename to share/qtcreator/qml/qmlobserver/qmlruntime.h index a0a07f1888cdb2d3331b5ab0d268cc958160f6fa..eb435796593d23cbc94449f4153234d79e97cfb0 100644 --- a/src/tools/qml/qmlobserver/qmlruntime.h +++ b/share/qtcreator/qml/qmlobserver/qmlruntime.h @@ -52,9 +52,8 @@ namespace QmlJSDebugger { class QDeclarativeViewObserver; } -namespace Utils { - class CrumblePath; -} + +class CrumblePath; QT_BEGIN_NAMESPACE @@ -217,7 +216,7 @@ private: bool useQmlFileBrowser; QWidget *m_centralWidget; - Utils::CrumblePath *m_crumblePathWidget; + CrumblePath *m_crumblePathWidget; QTranslator *translator; void loadTranslationFile(const QString& directory); diff --git a/src/tools/qml/qmlobserver/qmlruntime.qrc b/share/qtcreator/qml/qmlobserver/qmlruntime.qrc similarity index 100% rename from src/tools/qml/qmlobserver/qmlruntime.qrc rename to share/qtcreator/qml/qmlobserver/qmlruntime.qrc diff --git a/src/tools/qml/qmlobserver/recopts.ui b/share/qtcreator/qml/qmlobserver/recopts.ui similarity index 100% rename from src/tools/qml/qmlobserver/recopts.ui rename to share/qtcreator/qml/qmlobserver/recopts.ui diff --git a/src/tools/qml/qmlobserver/recopts_maemo5.ui b/share/qtcreator/qml/qmlobserver/recopts_maemo5.ui similarity index 100% rename from src/tools/qml/qmlobserver/recopts_maemo5.ui rename to share/qtcreator/qml/qmlobserver/recopts_maemo5.ui diff --git a/src/tools/qml/qmlobserver/texteditautoresizer_maemo5.h b/share/qtcreator/qml/qmlobserver/texteditautoresizer_maemo5.h similarity index 100% rename from src/tools/qml/qmlobserver/texteditautoresizer_maemo5.h rename to share/qtcreator/qml/qmlobserver/texteditautoresizer_maemo5.h diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/AlignmentHorizontalButtons.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/AlignmentHorizontalButtons.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/AlignmentHorizontalButtons.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/AlignmentHorizontalButtons.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/AlignmentVerticalButtons.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/AlignmentVerticalButtons.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/AlignmentVerticalButtons.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/AlignmentVerticalButtons.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/AnchorBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/AnchorBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/AnchorBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/AnchorBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/AnchorButtons.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/AnchorButtons.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/AnchorButtons.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/AnchorButtons.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/BorderImageSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/BorderImageSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/BorderImageSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/BorderImageSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/CheckBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/CheckBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/CheckBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/CheckBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ColorGroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColorGroupBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ColorGroupBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColorGroupBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ColorLabel.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColorLabel.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ColorLabel.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColorLabel.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ColorScheme.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColorScheme.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ColorScheme.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColorScheme.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ColorTypeButtons.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColorTypeButtons.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ColorTypeButtons.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColorTypeButtons.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ColumnSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColumnSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ColumnSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ColumnSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ComboBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ComboBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ComboBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ComboBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/DoubleSpinBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/DoubleSpinBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/DoubleSpinBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/DoubleSpinBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/DoubleSpinBoxAlternate.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/DoubleSpinBoxAlternate.qml similarity index 98% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/DoubleSpinBoxAlternate.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/DoubleSpinBoxAlternate.qml index ff6eb442c77c6c707e2286e57e37f1946b5ab3dc..2fe97d2ae177943c86117df1801a20d6b43ef91d 100644 --- a/share/qtcreator/qmldesigner/propertyeditor/Qt/DoubleSpinBoxAlternate.qml +++ b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/DoubleSpinBoxAlternate.qml @@ -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; diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ExpressionEditor.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ExpressionEditor.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ExpressionEditor.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ExpressionEditor.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/Extended.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Extended.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/Extended.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/Extended.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ExtendedFunctionButton.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ExtendedFunctionButton.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ExtendedFunctionButton.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ExtendedFunctionButton.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ExtendedPane.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ExtendedPane.qml similarity index 92% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ExtendedPane.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ExtendedPane.qml index 3c0e9efe12909e0e71463d4fcf9734f5a7751a80..a764d9dcce07281fe06556b92c057494f39136c2 100644 --- a/share/qtcreator/qmldesigner/propertyeditor/Qt/ExtendedPane.qml +++ b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ExtendedPane.qml @@ -16,9 +16,8 @@ QScrollArea { leftMargin: 0; rightMargin: 0; spacing: 0; - - Visibility {} - Transformation {} + + Transformation {} QScrollArea { } diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ExtendedSwitches.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ExtendedSwitches.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ExtendedSwitches.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ExtendedSwitches.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/FlagedButton.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/FlagedButton.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/FlagedButton.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/FlagedButton.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/FlickableSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/FlickableSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/FlickableSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/FlickableSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/FlipableSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/FlipableSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/FlipableSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/FlipableSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/FontComboBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/FontComboBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/FontComboBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/FontComboBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/FontGroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/FontGroupBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/FontGroupBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/FontGroupBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/FontStyleButtons.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/FontStyleButtons.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/FontStyleButtons.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/FontStyleButtons.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/Geometry.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Geometry.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/Geometry.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/Geometry.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/GridSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/GridSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/GridSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/GridSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/GroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/GroupBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/GroupBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/GroupBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/GroupBoxOption.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/GroupBoxOption.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/GroupBoxOption.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/GroupBoxOption.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/HorizontalLayout.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/HorizontalLayout.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/HorizontalLayout.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/HorizontalLayout.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/HorizontalWhiteLine.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/HorizontalWhiteLine.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/HorizontalWhiteLine.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/HorizontalWhiteLine.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ImageSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ImageSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ImageSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ImageSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/IntEditor.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/IntEditor.qml similarity index 96% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/IntEditor.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/IntEditor.qml index dd5f7834ff03f1768e71c81c87d8dcf44f4c0ee7..bc0b50f400e49ef4db084961b135f5be10a71a8d 100644 --- a/share/qtcreator/qmldesigner/propertyeditor/Qt/IntEditor.qml +++ b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/IntEditor.qml @@ -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 diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ItemPane.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ItemPane.qml similarity index 85% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ItemPane.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ItemPane.qml index 70896d5284abc0afa94ca5bea730c50a0186fc63..b4247773de7e6fafa6f1f01a6d67a834b8724df5 100644 --- a/share/qtcreator/qmldesigner/propertyeditor/Qt/ItemPane.qml +++ b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ItemPane.qml @@ -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; diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/Label.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Label.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/Label.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/Label.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/Layout.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Layout.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/Layout.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/Layout.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/LayoutPane.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/LayoutPane.qml similarity index 90% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/LayoutPane.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/LayoutPane.qml index f22c0c75e9c112099bc897313ca51e340f9e6048..2e4dd0dfb2adcccedf94eb3218878bae48540e92 100644 --- a/share/qtcreator/qmldesigner/propertyeditor/Qt/LayoutPane.qml +++ b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/LayoutPane.qml @@ -15,10 +15,7 @@ QScrollArea { bottomMargin: 0; leftMargin: 0; rightMargin: 0; - spacing: 0 - - Geometry { - } + spacing: 0; Layout { id: layoutBox; diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/LineEdit.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/LineEdit.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/LineEdit.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/LineEdit.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ListViewSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ListViewSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ListViewSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ListViewSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/Modifiers.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Modifiers.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/Modifiers.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/Modifiers.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/PlaceHolder.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/PlaceHolder.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/PlaceHolder.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/PlaceHolder.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/PropertyFrame.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/PropertyFrame.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/PropertyFrame.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/PropertyFrame.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/RectangleColorGroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/RectangleColorGroupBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/RectangleColorGroupBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/RectangleColorGroupBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/RectangleSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/RectangleSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/RectangleSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/RectangleSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/RowSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/RowSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/RowSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/RowSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/ScrollArea.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/ScrollArea.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/ScrollArea.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/ScrollArea.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/SliderWidget.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/SliderWidget.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/SliderWidget.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/SliderWidget.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/SpinBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/SpinBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/SpinBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/SpinBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/StandardTextColorGroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/StandardTextColorGroupBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/StandardTextColorGroupBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/StandardTextColorGroupBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/StandardTextGroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/StandardTextGroupBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/StandardTextGroupBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/StandardTextGroupBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/Switches.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Switches.qml similarity index 95% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/Switches.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/Switches.qml index 3c4b95f95e66427a94ee2157e33ab5cf5182059c..d507c5ada07fc8c680f507b651f9eb6b4348d69f 100644 --- a/share/qtcreator/qmldesigner/propertyeditor/Qt/Switches.qml +++ b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Switches.qml @@ -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; diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/TextEditSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/TextEditSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/TextEditSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/TextEditSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/TextInputGroupBox.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/TextInputGroupBox.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/TextInputGroupBox.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/TextInputGroupBox.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/TextInputSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/TextInputSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/TextInputSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/TextInputSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/TextSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/TextSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/TextSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/TextSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/Transformation.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Transformation.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/Transformation.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/Transformation.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/Type.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Type.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/Type.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/Type.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/VerticalLayout.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/VerticalLayout.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/VerticalLayout.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/VerticalLayout.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/Visibility.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/Visibility.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/Visibility.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/Visibility.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/WebViewSpecifics.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/WebViewSpecifics.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/WebViewSpecifics.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/WebViewSpecifics.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/anchorbottom.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorbottom.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/anchorbottom.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorbottom.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/anchorbox.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorbox.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/anchorbox.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorbox.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/anchorfill.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorfill.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/anchorfill.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorfill.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/anchorhorizontal.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorhorizontal.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/anchorhorizontal.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorhorizontal.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/anchorleft.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorleft.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/anchorleft.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorleft.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/anchorright.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorright.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/anchorright.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorright.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/anchorspacer.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorspacer.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/anchorspacer.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorspacer.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/anchortop.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchortop.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/anchortop.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchortop.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/anchorvertical.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorvertical.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/anchorvertical.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/anchorvertical.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/applybutton.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/applybutton.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/applybutton.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/applybutton.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/aspectlock.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/aspectlock.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/aspectlock.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/aspectlock.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/cancelbutton.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/cancelbutton.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/cancelbutton.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/cancelbutton.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/emptyPane.qml b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/emptyPane.qml similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/emptyPane.qml rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/emptyPane.qml diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentbottom-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentbottom-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentbottom-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentbottom-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentbottom-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentbottom-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentbottom-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentbottom-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentcenterh-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentcenterh-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentcenterh-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentcenterh-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentcenterh-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentcenterh-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentcenterh-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentcenterh-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentleft-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentleft-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentleft-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentleft-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentleft-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentleft-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentleft-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentleft-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentmiddle-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentmiddle-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentmiddle-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentmiddle-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentmiddle-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentmiddle-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentmiddle-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentmiddle-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentright-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentright-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentright-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentright-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentright-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentright-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmentright-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmentright-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmenttop-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmenttop-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmenttop-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmenttop-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmenttop-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmenttop-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/alignmenttop-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/alignmenttop-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/apply.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/apply.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/apply.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/apply.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/behaivour.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/behaivour.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/behaivour.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/behaivour.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/blended-image-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/blended-image-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/blended-image-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/blended-image-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/bold-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/bold-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/bold-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/bold-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/bold-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/bold-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/bold-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/bold-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/button.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/button.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/button.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/button.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/cancel.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/cancel.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/cancel.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/cancel.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/default-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/default-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/default-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/default-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/downArrow.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/downArrow.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/downArrow.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/downArrow.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/expression.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/expression.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/expression.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/expression.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/extended.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/extended.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/extended.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/extended.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/grid-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/grid-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/grid-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/grid-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/icon_color_gradient.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/icon_color_gradient.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/icon_color_gradient.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/icon_color_gradient.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/icon_color_none.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/icon_color_none.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/icon_color_none.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/icon_color_none.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/icon_color_solid.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/icon_color_solid.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/icon_color_solid.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/icon_color_solid.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/image-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/image-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/image-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/image-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/italic-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/italic-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/italic-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/italic-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/italic-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/italic-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/italic-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/italic-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/item-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/item-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/item-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/item-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/layout.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/layout.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/layout.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/layout.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/leftArrow.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/leftArrow.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/leftArrow.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/leftArrow.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/list-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/list-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/list-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/list-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/mouse-area-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/mouse-area-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/mouse-area-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/mouse-area-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/placeholder.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/placeholder.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/placeholder.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/placeholder.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/rect-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/rect-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/rect-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/rect-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/reset-button.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/reset-button.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/reset-button.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/reset-button.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/rightArrow.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/rightArrow.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/rightArrow.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/rightArrow.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/standard.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/standard.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/standard.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/standard.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/strikeout-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/strikeout-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/strikeout-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/strikeout-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/strikeout-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/strikeout-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/strikeout-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/strikeout-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/submenu.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/submenu.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/submenu.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/submenu.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/text-edit-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/text-edit-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/text-edit-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/text-edit-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/text-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/text-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/text-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/text-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/underline-h-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/underline-h-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/underline-h-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/underline-h-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/underline-icon.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/underline-icon.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/underline-icon.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/underline-icon.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/images/upArrow.png b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/upArrow.png similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/images/upArrow.png rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/images/upArrow.png diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/layoutWidget.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/layoutWidget.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/layoutWidget.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/layoutWidget.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/propertyEditor.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/propertyEditor.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/propertyEditor.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/propertyEditor.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/specialCheckBox.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/specialCheckBox.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/specialCheckBox.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/specialCheckBox.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/styledbuttonleft.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/styledbuttonleft.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/styledbuttonleft.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/styledbuttonleft.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/styledbuttonmiddle.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/styledbuttonmiddle.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/styledbuttonmiddle.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/styledbuttonmiddle.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/styledbuttonright.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/styledbuttonright.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/styledbuttonright.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/styledbuttonright.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/switch.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/switch.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/switch.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/switch.css diff --git a/share/qtcreator/qmldesigner/propertyeditor/Qt/typeLabel.css b/share/qtcreator/qmldesigner/propertyeditor/QtQuick/typeLabel.css similarity index 100% rename from share/qtcreator/qmldesigner/propertyeditor/Qt/typeLabel.css rename to share/qtcreator/qmldesigner/propertyeditor/QtQuick/typeLabel.css diff --git a/share/qtcreator/qmljsdebugger/private_headers.pri b/share/qtcreator/qmljsdebugger/private_headers.pri deleted file mode 100644 index fc3539617814dc72b088a83cc32b219458e0f6d9..0000000000000000000000000000000000000000 --- a/share/qtcreator/qmljsdebugger/private_headers.pri +++ /dev/null @@ -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 diff --git a/share/qtcreator/snippets/class_generic.snp b/share/qtcreator/snippets/class_generic.snp deleted file mode 100644 index 4f2ca625c0b1f179f4b2cb91080aeff58766e263..0000000000000000000000000000000000000000 --- a/share/qtcreator/snippets/class_generic.snp +++ /dev/null @@ -1,26 +0,0 @@ -<!DOCTYPE QtCreatorSnippet> -<qtcreator> - <data> - <variable>Name</variable> - <value type="QString" >Class - Generic</value> - </data> - <data> - <variable>Description</variable> - <value type="QString" >This creates a new generic class</value> - </data> - <data> - <variable>Category</variable> - <value type="QString" >Classes</value> - </data> - <data> - <variable>Shortcut</variable> - <value type="QString" >cl</value> - </data> - <data> - <variable>Contents</variable> - <value type="QString" ><![CDATA[class $anchor$MyClass$cursor$ -{ - $selection$ -};]]></value> - </data> -</qtcreator> diff --git a/share/qtcreator/snippets/class_qobject.snp b/share/qtcreator/snippets/class_qobject.snp deleted file mode 100644 index 0b85ccb9bc92f3b89bbe63bc7e3e0af33641efea..0000000000000000000000000000000000000000 --- a/share/qtcreator/snippets/class_qobject.snp +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE QtCreatorSnippet> -<qtcreator> - <data> - <variable>Name</variable> - <value type="QString" >Class - QObject</value> - </data> - <data> - <variable>Description</variable> - <value type="QString" >This creates a new class deriving from QObject</value> - </data> - <data> - <variable>Category</variable> - <value type="QString" >Classes</value> - </data> - <data> - <variable>Shortcut</variable> - <value type="QString" >cl</value> - </data> - <data> - <variable>Contents</variable> - <value type="QString" ><![CDATA[class $anchor$MyClass$cursor$ : public QObject -{ - Q_OBJECT - -public: - $selection$ -};]]></value> - </data> -</qtcreator> diff --git a/share/qtcreator/snippets/class_qwidget.snp b/share/qtcreator/snippets/class_qwidget.snp deleted file mode 100644 index 94b7eca49834eceab181d6e9cb166c62be738002..0000000000000000000000000000000000000000 --- a/share/qtcreator/snippets/class_qwidget.snp +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE QtCreatorSnippet> -<qtcreator> - <data> - <variable>Name</variable> - <value type="QString" >Class - QWidget</value> - </data> - <data> - <variable>Description</variable> - <value type="QString" >This creates a new class deriving from QWidget</value> - </data> - <data> - <variable>Category</variable> - <value type="QString" >Classes</value> - </data> - <data> - <variable>Shortcut</variable> - <value type="QString" >cl</value> - </data> - <data> - <variable>Contents</variable> - <value type="QString" ><![CDATA[class $anchor$MyClass$cursor$ : public QWidget -{ - Q_OBJECT - -public: - $selection$ -};]]></value> - </data> -</qtcreator> diff --git a/share/qtcreator/snippets/comment.snp b/share/qtcreator/snippets/comment.snp deleted file mode 100644 index 4ff028ae11eee6f05ff256567d7cc6043170428f..0000000000000000000000000000000000000000 --- a/share/qtcreator/snippets/comment.snp +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE QtCreatorSnippet> -<qtcreator> - <data> - <variable>Name</variable> - <value type="QString" >/* ... */ Comment</value> - </data> - <data> - <variable>Description</variable> - <value type="QString" >This creates comment</value> - </data> - <data> - <variable>Category</variable> - <value type="QString" >Other</value> - </data> - <data> - <variable>Shortcut</variable> - <value type="QString" >/*</value> - </data> - <data> - <variable>Contents</variable> - <value type="QString" ><![CDATA[/* $anchor$$selection$$cursor$ */]]></value> - </data> -</qtcreator> diff --git a/share/qtcreator/snippets/for.snp b/share/qtcreator/snippets/for.snp deleted file mode 100644 index 5bb2b91c8047e207fb0acf642e55a79ccdc29c18..0000000000000000000000000000000000000000 --- a/share/qtcreator/snippets/for.snp +++ /dev/null @@ -1,48 +0,0 @@ -<!DOCTYPE QtCreatorSnippet> -<qtcreator> - - <data> - <variable>Name</variable> - <value type="QString" >for loop</value> - </data> - - <data> - <variable>Description</variable> - <value type="QString" >This inserts an incrementing for loop</value> - </data> - - <data> - <variable>Category</variable> - <value type="QString" >Common Statements</value> - </data> - - <data> - <variable>Shortcut</variable> - <value type="QString" >fo</value> - </data> - - <data> - <variable>Contents</variable> - <value type="QString" ><![CDATA[for (%1 %2 = 0; %2 < %3; ++%2) { - $anchor$$selection$$cursor$ -}]]></value> - </data> - - <data> - <variable>Arguments</variable> - <valuemap type="QVariantMap" > - <value key="1" type="QString"><![CDATA[<tt>for (<b>TYPE</b> VAR = 0; VAR < CONDITION; ++VAR)...</tt>]]></value> - <value key="2" type="QString"><![CDATA[<tt>for (%1 <b>VAR</b> = 0; <b>VAR</b> < 10; ++<b>VAR</b>)...</tt>]]></value> - <value key="3" type="QString"><![CDATA[<tt>for (%1 %2 = 0; %2 < <b>CONDITION</b>; ++%2)...</tt>]]></value> - </valuemap> - </data> - - <data> - <variable>ArgumentDefaults</variable> - <valuemap type="QVariantMap" > - <value key="1" type="QString">int</value> - <value key="2" type="QString">i</value> - </valuemap> - </data> - -</qtcreator> diff --git a/share/qtcreator/snippets/foreach.snp b/share/qtcreator/snippets/foreach.snp deleted file mode 100644 index 7ac7c81451c83ceb69e9f70ff5bf164c45db3868..0000000000000000000000000000000000000000 --- a/share/qtcreator/snippets/foreach.snp +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE QtCreatorSnippet> -<qtcreator> - <data> - <variable>Name</variable> - <value type="QString" >foreach statement</value> - </data> - <data> - <variable>Description</variable> - <value type="QString" >This creates a foreach statement</value> - </data> - <data> - <variable>Category</variable> - <value type="QString" >Common Statements</value> - </data> - <data> - <variable>Shortcut</variable> - <value type="QString" >fo</value> - </data> - <data> - <variable>Contents</variable> - <value type="QString" ><![CDATA[foreach ($cursor$) { - $selection$ -}]]></value> - </data> -</qtcreator> diff --git a/share/qtcreator/snippets/if.snp b/share/qtcreator/snippets/if.snp deleted file mode 100644 index 99dd8eaafb2fe117704f512789a7eb6af461ea35..0000000000000000000000000000000000000000 --- a/share/qtcreator/snippets/if.snp +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE QtCreatorSnippet> -<qtcreator> - <data> - <variable>Name</variable> - <value type="QString" >if Statement</value> - </data> - <data> - <variable>Description</variable> - <value type="QString" >This creates a if statement</value> - </data> - <data> - <variable>Category</variable> - <value type="QString" >Common Statements</value> - </data> - <data> - <variable>Shortcut</variable> - <value type="QString" >if</value> - </data> - <data> - <variable>Contents</variable> - <value type="QString" ><![CDATA[if ($cursor$) { - $selection$ -}]]></value> - </data> -</qtcreator> diff --git a/share/qtcreator/snippets/ifelse.snp b/share/qtcreator/snippets/ifelse.snp deleted file mode 100644 index 8b44e68a4bf91cc50b60f16f3b3485eeb04081e6..0000000000000000000000000000000000000000 --- a/share/qtcreator/snippets/ifelse.snp +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE QtCreatorSnippet> -<qtcreator> - <data> - <variable>Name</variable> - <value type="QString" >if - else Statement</value> - </data> - <data> - <variable>Description</variable> - <value type="QString" >This creates a if...else statement</value> - </data> - <data> - <variable>Category</variable> - <value type="QString" >Common Statements</value> - </data> - <data> - <variable>Shortcut</variable> - <value type="QString" >if</value> - </data> - <data> - <variable>Contents</variable> - <value type="QString" ><![CDATA[if ($cursor$) { - $selection$ -} else { - -}]]></value> - </data> -</qtcreator> diff --git a/share/qtcreator/static.pro b/share/qtcreator/static.pro index 18635f46bfe40bf6255a5fb87d19d3f9dfc78595..ddc10bab7043e34c592a7753428a7659bc0f3d1b 100644 --- a/share/qtcreator/static.pro +++ b/share/qtcreator/static.pro @@ -33,9 +33,9 @@ DATA_DIRS = \ gdbmacros \ qmldesigner \ qmlicons \ + qml \ qml-type-descriptions \ - qmljsdebugger \ - generic-highlighter + qmljsdebugger !isEmpty(copydata) { diff --git a/share/qtcreator/templates/mobileapp/app.pro b/share/qtcreator/templates/mobileapp/app.pro index b8cc1c5758259ad2e5a470c44b93e686776a0898..a832c6b95950891e44bdb5a3b9b211888561081d 100644 --- a/share/qtcreator/templates/mobileapp/app.pro +++ b/share/qtcreator/templates/mobileapp/app.pro @@ -22,12 +22,10 @@ symbian:TARGET.UID3 = 0xE1111234 # and 0x2002CCCF value if protected UID is given to the application #symbian:DEPLOYMENT.installer_header = 0x2002CCCF -symbian:ICON = symbianicon.svg - SOURCES += main.cpp mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui +# Please do not modify the following two lines. Required for deployment. include(../shared/deployment.pri) - qtcAddDeployment() diff --git a/share/qtcreator/templates/qmlapp/app.pro b/share/qtcreator/templates/qmlapp/app.pro index 64432cd37e8dac936fb4582995dc9434e99c38ab..8cfa591bb97f2e2312861f3c36dd595e6026e440 100644 --- a/share/qtcreator/templates/qmlapp/app.pro +++ b/share/qtcreator/templates/qmlapp/app.pro @@ -27,16 +27,16 @@ symbian:TARGET.UID3 = 0xE1111234 # and 0x2002CCCF value if protected UID is given to the application #symbian:DEPLOYMENT.installer_header = 0x2002CCCF -symbian:ICON = symbianicon.svg - # Define QMLJSDEBUGGER to enable basic debugging (setting breakpoints etc) # Define QMLOBSERVER for advanced features (requires experimental QmlInspector plugin!) #DEFINES += QMLJSDEBUGGER #DEFINES += QMLOBSERVER +# The .cpp file which was generated for your project. Feel free to hack it. SOURCES += main.cpp +# Please do not modify the following two lines. Required for deployment. include(qmlapplicationviewer/qmlapplicationviewer.pri) +# INCLUDE_DEPLOYMENT_PRI (wizard will remove the include and append deployment.pri to qmlapplicationviewer.pri, instead) # include(../shared/deployment.pri) - qtcAddDeployment() diff --git a/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.pri b/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.pri index 8011180fc5ab1b6980a8edef2aa5b676666cd4a6..319587d78216f3d4fbade0f353416ddaae4d0912 100644 --- a/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.pri +++ b/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.pri @@ -1,5 +1,5 @@ # This file should not be edited. -# Following versions of Qt Creator might offer new version. +# Future versions of Qt Creator might offer updated versions of this file. QT += declarative @@ -10,16 +10,45 @@ INCLUDEPATH += $$PWD contains(DEFINES, QMLOBSERVER) { DEFINES *= QMLJSDEBUGGER } + +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) +} + contains(DEFINES, QMLJSDEBUGGER) { CONFIG(debug, debug|release) { + !minQtVersion(4, 7, 1) { + warning() + warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") + warning("This library requires Qt 4.7.1 or newer.") + warning() + + error("Qt version $$QT_VERSION too old for QmlJS Debugging. Aborting.") + } isEmpty(QMLJSDEBUGGER_PATH) { warning() - warning(Debugging QML requires the qmljsdebugger library that ships with Qt Creator.) - warning(Please specify its location on the qmake command line, e.g.) - warning( qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger) + warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.") + warning("Please specify its location on the qmake command line, eg") + warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger") warning() - error(QMLJSDEBUGGER defined, but no QMLJSDEBUGGER_PATH set on command line. Aborting.) + error("QMLJSDEBUGGER defined, but no QMLJSDEBUGGER_PATH set on command line. Aborting.") DEFINES -= QMLJSDEBUGGER } else { include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri) diff --git a/share/qtcreator/templates/shared/deployment.pri b/share/qtcreator/templates/shared/deployment.pri index 77a0d84fda753ca354f17736aca1ee25e687b6e0..7ec5a99ae532ad442064c954a28995f271e39538 100644 --- a/share/qtcreator/templates/shared/deployment.pri +++ b/share/qtcreator/templates/shared/deployment.pri @@ -1,5 +1,5 @@ # This file should not be edited. -# Following versions of Qt Creator might offer new version. +# Future versions of Qt Creator might offer updated versions of this file. defineTest(qtcAddDeployment) { for(deploymentfolder, DEPLOYMENTFOLDERS) { @@ -16,6 +16,7 @@ for(deploymentfolder, DEPLOYMENTFOLDERS) { MAINPROFILEPWD = $$PWD symbian { + ICON = $${TARGET}.svg TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -leiksrv -lcone contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices @@ -81,6 +82,7 @@ symbian { INSTALLS += desktopfile icon target } +export (ICON) export (INSTALLS) export (DEPLOYMENT) export (TARGET.EPOCHEAPSIZE) diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.pluginspec b/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.pluginspec index 60e6f8df4a5a0689ec2c050cca5c4020436de051..c7c5e2f5e925dd66defd18fe34a35f33989308f0 100644 --- a/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.pluginspec +++ b/share/qtcreator/templates/wizards/qtcreatorplugin/MyPlugin.pluginspec @@ -5,6 +5,6 @@ <description>%Description%</description> <url>%URL%</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 60321e251a2bbb0fbe4a92560e0257862bc590e9..bb83e6febf51f8432728632686c9ab4e7c6da9dc 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -15462,13 +15462,13 @@ Die folgenden Encodings scheinen der Datei zu entsprechen:</translation> <location line="+113"/> <source>Check All</source> <extracomment>Check all for submit</extracomment> - <translation>Haken für alle setzen</translation> + <translation>Alle markieren</translation> </message> <message> <location line="+2"/> <source>Uncheck All</source> <extracomment>Uncheck all for submit</extracomment> - <translation>Alle Haken entfernen</translation> + <translation>Alle Markierungen entfernen</translation> </message> </context> <context> @@ -21253,27 +21253,27 @@ Haben Sie Qemu gestartet?</translation> <message> <location line="+29"/> <source>Check All</source> - <translation>Haken für alle setzen</translation> + <translation>Alle markieren</translation> </message> <message> <location line="+2"/> <source>Check all Qt versions</source> - <translation>Alle Qt-Versionen setzen</translation> + <translation>Alle Qt-Versionen markieren</translation> </message> <message> <location line="+47"/> <source>Check only this version</source> - <translation>Haken nur für diese Qt-Version setzen</translation> + <translation>Nur diese Qt-Version markieren</translation> </message> <message> <location line="+5"/> <source>Check all versions</source> - <translation>Haken für alle Qt-Versionen setzen</translation> + <translation>Alle Qt-Versionen markieren</translation> </message> <message> <location line="+4"/> <source>Uncheck all versions</source> - <translation>Haken bei allen Qt-Versionen entfernen</translation> + <translation>Alle Markierungen von Qt-Versionen entfernen</translation> </message> <message> <location line="+39"/> @@ -21342,13 +21342,13 @@ Haben Sie Qemu gestartet?</translation> <location/> <location filename="../../../src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp" line="-155"/> <source>Uncheck all Qt versions</source> - <translation>Haken bei allen Qt-Versionen entfernen</translation> + <translation>Alle Markierungen von Qt-Versionen entfernen</translation> </message> <message> <location/> <location filename="../../../src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp" line="-2"/> <source>Uncheck All</source> - <translation>Alle Haken entfernen</translation> + <translation>Alle Markierungen entfernen</translation> </message> </context> <context> diff --git a/share/qtcreator/translations/qtcreator_pl.ts b/share/qtcreator/translations/qtcreator_pl.ts index b14f0ec62b328b2ff405f5ca8cb8f57a2e01b831..8bbd70645df61d300747b5a5de4f2155933a7eca 100644 --- a/share/qtcreator/translations/qtcreator_pl.ts +++ b/share/qtcreator/translations/qtcreator_pl.ts @@ -36,7 +36,7 @@ </message> <message> <source>Compatibility Version:</source> - <translation>Zgodność z wersjÄ…:</translation> + <translation type="obsolete">Zgodność z wersjÄ…:</translation> </message> <message> <source>Vendor:</source> @@ -44,7 +44,7 @@ </message> <message> <source>Url:</source> - <translation>Url:</translation> + <translation type="obsolete">Url:</translation> </message> <message> <source>Location:</source> @@ -70,6 +70,14 @@ <source>Group:</source> <translation>Grupa:</translation> </message> + <message> + <source>Compatibility version:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>URL:</source> + <translation>URL:</translation> + </message> </context> <context> <name>ExtensionSystem::Internal::PluginErrorView</name> @@ -79,7 +87,11 @@ </message> <message> <source>Error Message:</source> - <translation>Komunikat BÅ‚Ä™du:</translation> + <translation type="obsolete">Komunikat BÅ‚Ä™du:</translation> + </message> + <message> + <source>Error message:</source> + <translation>Komunikat bÅ‚Ä™du:</translation> </message> </context> <context> @@ -109,11 +121,11 @@ </message> <message> <source>TextLabel</source> - <translation>Etykieta</translation> + <translation type="obsolete">Etykieta</translation> </message> <message> <source>CheckBox</source> - <translation>CheckBox</translation> + <translation type="obsolete">CheckBox</translation> </message> </context> <context> @@ -197,12 +209,16 @@ <source>&Path:</source> <translation>Åš&cieżka:</translation> </message> + <message> + <source>Inherits QDeclarativeItem</source> + <translation>Wywiedziony z QDeclarativeItem</translation> + </message> </context> <context> <name>Utils::ProjectIntroPage</name> <message> <source>Introduction and project location</source> - <translation>Nazwa oraz poÅ‚ożenie projektu</translation> + <translation type="obsolete">Nazwa oraz poÅ‚ożenie projektu</translation> </message> <message> <source>Name:</source> @@ -228,6 +244,10 @@ <source>Use as default project location</source> <translation>Ustaw jako domyÅ›lne poÅ‚ożenie projektów</translation> </message> + <message> + <source>Introduction and Project Location</source> + <translation>Nazwa oraz poÅ‚ożenie projektu</translation> + </message> </context> <context> <name>Utils::SubmitEditorWidget</name> @@ -243,6 +263,28 @@ <source>F&iles</source> <translation>Pl&iki</translation> </message> + <message numerus="yes"> + <source>Commit %1/%n Files</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message> + <source>Commit</source> + <translation type="unfinished">WyÅ›lij</translation> + </message> + <message> + <source>Check All</source> + <extracomment>Check all for submit</extracomment> + <translation>Zaznacz wszystko</translation> + </message> + <message> + <source>Uncheck All</source> + <extracomment>Uncheck all for submit</extracomment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Core::Internal::NewDialog</name> @@ -516,8 +558,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>&Case-sensitivity:</source> - <translation>UwzglÄ™dnianie &wielkoÅ›ci liter: -</translation> + <translation>UwzglÄ™dnianie &wielkoÅ›ci liter:</translation> </message> <message> <source>Full</source> @@ -535,6 +576,22 @@ p, li { white-space: pre-wrap; } <source>First Letter</source> <translation>Tylko pierwsza litera</translation> </message> + <message> + <source>Activate completion:</source> + <translation>Uaktywniaj uzupeÅ‚nianie:</translation> + </message> + <message> + <source>Manually</source> + <translation>RÄ™cznie</translation> + </message> + <message> + <source>When Triggered</source> + <translation>Tylko na żądanie</translation> + </message> + <message> + <source>Always</source> + <translation>Zawsze</translation> + </message> </context> <context> <name>CppFileSettingsPage</name> @@ -575,7 +632,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Describe all files matching commit id</source> - <translation>Opisz wszystkie pliki pasujÄ…ce do identyfikatora operacji</translation> + <translation>Opisz wszystkie pliki zgodne z identyfikatorem operacji</translation> </message> <message> <source>Timeout:</source> @@ -614,6 +671,10 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Core File:</source> + <translation type="obsolete">Plik zrzutu:</translation> + </message> + <message> + <source>Core file:</source> <translation>Plik zrzutu:</translation> </message> </context> @@ -632,11 +693,11 @@ p, li { white-space: pre-wrap; } <name>BreakByFunctionDialog</name> <message> <source>Set Breakpoint at Function</source> - <translation>Ustaw puÅ‚apkÄ™ w funkcji</translation> + <translation type="obsolete">Ustaw puÅ‚apkÄ™ w funkcji</translation> </message> <message> <source>Function to break on:</source> - <translation>Funkcja w której przerwać:</translation> + <translation type="obsolete">Funkcja w której przerwać:</translation> </message> </context> <context> @@ -649,6 +710,22 @@ p, li { white-space: pre-wrap; } <source>Ignore count:</source> <translation>Licznik pominięć:</translation> </message> + <message> + <source>File name:</source> + <translation type="obsolete">Nazwa pliku:</translation> + </message> + <message> + <source>Line number:</source> + <translation type="obsolete">Numer linii:</translation> + </message> + <message> + <source>Function:</source> + <translation>Funkcja:</translation> + </message> + <message> + <source>Thread specification:</source> + <translation>Specyfikacja wÄ…tku:</translation> + </message> </context> <context> <name>CdbOptionsPageWidget</name> @@ -702,6 +779,10 @@ p, li { white-space: pre-wrap; } <source>Fast loading of debugging helpers</source> <translation>Szybkie Å‚adowanie asystentów debuggera</translation> </message> + <message> + <source>Break on exception</source> + <translation>Przerwij w wyjÄ…tku</translation> + </message> </context> <context> <name>CommonOptionsPage</name> @@ -731,15 +812,15 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Language</source> - <translation>JÄ™zyk</translation> + <translation type="obsolete">JÄ™zyk</translation> </message> <message> <source>Changes the debugger language according to the currently opened file.</source> - <translation>Zmienia jÄ™zyk debuggera odpowiednio do zawartoÅ›ci otwartego pliku.</translation> + <translation type="obsolete">Zmienia jÄ™zyk debuggera odpowiednio do zawartoÅ›ci otwartego pliku.</translation> </message> <message> <source>Change debugger language automatically</source> - <translation>Automatycznie zmieniaj jÄ™zyk debuggera</translation> + <translation type="obsolete">Automatycznie zmieniaj jÄ™zyk debuggera</translation> </message> <message> <source>Register Qt Creator for debugging crashed applications.</source> @@ -788,6 +869,16 @@ p, li { white-space: pre-wrap; } <source>Use Debugging Helper</source> <translation>Używaj asystenta debuggera</translation> </message> + <message> + <source>QML Observer is used to offer additional debugging facilities to QML applications, such as interactive preview of code changes and inspection tools. + +It is not strictly necessary for debugging with Qt Creator.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Use QML Observer</source> + <translation>Użyj QML Observera</translation> + </message> </context> <context> <name>GdbOptionsPage</name> @@ -881,6 +972,10 @@ dla emisji sygnaÅ‚u wskoczy bezpoÅ›rednio do podÅ‚Ä…czonego slotu.</translation> <source>Behavior of Breakpoint Setting in Plugins</source> <translation>Ustawianie puÅ‚apek we wtyczkach</translation> </message> + <message> + <source>Adjust Breakpoint Locations</source> + <translation>Poprawiaj poÅ‚ożenia puÅ‚apek</translation> + </message> </context> <context> <name>StartExternalDialog</name> @@ -900,6 +995,10 @@ dla emisji sygnaÅ‚u wskoczy bezpoÅ›rednio do podÅ‚Ä…czonego slotu.</translation> <source>Break at 'main':</source> <translation>Przerwij w "main":</translation> </message> + <message> + <source>Working directory:</source> + <translation>Katalog roboczy:</translation> + </message> </context> <context> <name>StartRemoteDialog</name> @@ -1002,7 +1101,7 @@ dla emisji sygnaÅ‚u wskoczy bezpoÅ›rednio do podÅ‚Ä…czonego slotu.</translation> </message> <message> <source>vim's "tabstop" option</source> - <translation>Opcja "tabstop" Vima</translation> + <translation type="obsolete">Opcja "tabstop" Vima</translation> </message> <message> <source>Tabulator size:</source> @@ -1072,6 +1171,18 @@ dla emisji sygnaÅ‚u wskoczy bezpoÅ›rednio do podÅ‚Ä…czonego slotu.</translation> <source>Show position of text marks</source> <translation>Pokazuj znaczniki</translation> </message> + <message> + <source>Checking this box passes key sequences like Ctrl-S to the Creator core instead of interpreting them in FakeVim. This gives easier access to Creator core functionality at the price of losing some features of FakeVim.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pass control key</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Vim tabstop option</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Find::Internal::FindDialog</name> @@ -1107,6 +1218,14 @@ dla emisji sygnaÅ‚u wskoczy bezpoÅ›rednio do podÅ‚Ä…czonego slotu.</translation> <source>Search && Replace</source> <translation>Wyszukaj i zastÄ…p</translation> </message> + <message> + <source>Use regular e&xpressions</source> + <translation>Używaj wyrażeÅ„ &regularnych</translation> + </message> + <message> + <source>Cancel</source> + <translation>Anuluj</translation> + </message> </context> <context> <name>Find::Internal::FindWidget</name> @@ -1128,7 +1247,23 @@ dla emisji sygnaÅ‚u wskoczy bezpoÅ›rednio do podÅ‚Ä…czonego slotu.</translation> </message> <message> <source>All</source> - <translation>Wszystko</translation> + <translation type="obsolete">Wszystko</translation> + </message> + <message> + <source>Replace</source> + <translation>ZastÄ…p</translation> + </message> + <message> + <source>Replace && Find</source> + <translation>ZastÄ…p i znajdź</translation> + </message> + <message> + <source>Replace All</source> + <translation>ZastÄ…p wszystkie</translation> + </message> + <message> + <source>Advanced...</source> + <translation>Zaawansowane...</translation> </message> </context> <context> @@ -1160,6 +1295,10 @@ dla emisji sygnaÅ‚u wskoczy bezpoÅ›rednio do podÅ‚Ä…czonego slotu.</translation> <source>Diff</source> <translation>Pokaż różnice</translation> </message> + <message> + <source>Log</source> + <translation>Dziennik</translation> + </message> <message> <source>Refresh</source> <translation>OdÅ›wież</translation> @@ -1422,6 +1561,18 @@ dla emisji sygnaÅ‚u wskoczy bezpoÅ›rednio do podÅ‚Ä…czonego slotu.</translation> <source>From System</source> <translation>Z systemu</translation> </message> + <message> + <source>Set "HOME" environment variable</source> + <translation>Ustaw zmiennÄ… Å›rodowiskowÄ… "HOME"</translation> + </message> + <message> + <source>Gitk</source> + <translation>Gitk</translation> + </message> + <message> + <source>Arguments:</source> + <translation>Argumenty:</translation> + </message> </context> <context> <name>DocSettingsPage</name> @@ -1474,6 +1625,10 @@ Add, modify, and remove document filters, which determine the documentation set Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokumentacji wyÅ›wietlanej w trybie "Pomocy". Atrybuty sÄ… zdefiniowane w dokumentach. Zaznaczenie ich spowoduje wyÅ›wietlenie zestawu odpowiedniej dokumentacji. Zwróć uwagÄ™ że niektóre atrybuty mogÄ… być zdefiniowane w kilku dokumentach. </p></body></html></translation> </message> + <message> + <source>No user defined filters available or no filter selected.</source> + <translation>Brak dostÄ™pnych filtrów użytkownika lub żaden filtr nie jest zaznaczony.</translation> + </message> </context> <context> <name>GeneralSettingsPage</name> @@ -1561,6 +1716,26 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <source>Show My Tabs from Last Session</source> <translation>Pokazuj moje karty z ostatniej sesji</translation> </message> + <message> + <source>Always Show Help in External Window</source> + <translation>Zawsze pokazuj pomoc w zewnÄ™trznym oknie</translation> + </message> + <message> + <source>Behaviour</source> + <translation>Zachowanie</translation> + </message> + <message> + <source>Switch to editor context after last help page is closed.</source> + <translation>PrzeÅ‚Ä…czaj do trybu edycji po zamkniÄ™ciu ostatniej strony pomocy.</translation> + </message> + <message> + <source>Return to editor on closing the last page</source> + <translation type="obsolete">Powracaj do edytora po zamkniÄ™ciu ostatniej strony</translation> + </message> + <message> + <source>Return to editor on closing the last page</source> + <translation>Powracaj do edytora po zamkniÄ™ciu ostatniej strony</translation> + </message> </context> <context> <name>Perforce::Internal::ChangeNumberDialog</name> @@ -1657,6 +1832,10 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <source>Environment Variables</source> <translation>Zmienne Å›rodowiskowe</translation> </message> + <message> + <source>Automatically open files when editing</source> + <translation>Automatycznie otwieraj pliki jeÅ›li zostaÅ‚y zmodyfikowane</translation> + </message> </context> <context> <name>Perforce::Internal::SubmitPanel</name> @@ -1688,7 +1867,7 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <name>ProjectExplorer::Internal::ProcessStepWidget</name> <message> <source>Name:</source> - <translation>Nazwa:</translation> + <translation type="obsolete">Nazwa:</translation> </message> <message> <source>Command:</source> @@ -1743,7 +1922,7 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum </message> <message> <source>Always build project before running</source> - <translation>Zawsze buduj projekt przed uruchomieniem</translation> + <translation type="obsolete">Zawsze buduj projekt przed uruchomieniem</translation> </message> <message> <source>Show compiler output on building</source> @@ -1757,6 +1936,18 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <source><i>jom</i> is a drop-in replacement for <i>nmake</i> which distributes the compilation process to multiple CPU cores. The latest binary is available at <a href="ftp://ftp.qt.nokia.com/jom/">ftp://ftp.qt.nokia.com/jom/</a>. Disable it if you experience problems with your builds.</source> <translation><i>jom</i> jest zamiennikiem <i>nmake</i> który dystrybuuje proces kompilacji do wielu rdzeni procesora .Najnowsza wersja jest dostÄ™pna tu: <a href="ftp://ftp.qt.nokia.com/jom/">ftp://ftp.qt.nokia.com/jom/</a>. WyÅ‚Ä…cz tÄ™ opcjÄ™ jeÅ›li doÅ›wiadczasz problemów podczas budowania.</translation> </message> + <message> + <source>Always build project before deploying it</source> + <translation>Zawsze buduj projekt przed zainstalowaniem</translation> + </message> + <message> + <source>Always deploy project before running it</source> + <translation>Zawsze instaluj projekt przed uruchomieniem</translation> + </message> + <message> + <source>Word-wrap application output</source> + <translation>Zawijaj komunikaty aplikacji</translation> + </message> </context> <context> <name>ProjectExplorer::Internal::ProjectWelcomePageWidget</name> @@ -1808,7 +1999,7 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <name>ProjectExplorer::Internal::WizardPage</name> <message> <source>Project management</source> - <translation>Organizacja projektu</translation> + <translation type="obsolete">Organizacja projektu</translation> </message> <message> <source>The following files will be added: @@ -1830,6 +2021,10 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <source>Add to &version control:</source> <translation>Dodaj do systemu kontroli &wersji:</translation> </message> + <message> + <source>Project Management</source> + <translation>Organizacja projektu</translation> + </message> </context> <context> <name>ProjectExplorer::Internal::RemoveFileDialog</name> @@ -1854,16 +2049,32 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <name>ProjectExplorer::Internal::RunSettingsPropertiesPage</name> <message> <source>+</source> - <translation>+</translation> + <translation type="obsolete">+</translation> </message> <message> <source>-</source> - <translation>-</translation> + <translation type="obsolete">-</translation> </message> <message> <source>Run configuration:</source> <translation>Konfiguracja uruchamiania:</translation> </message> + <message> + <source>Deployment:</source> + <translation>Instalacja:</translation> + </message> + <message> + <source>Add</source> + <translation>Dodaj</translation> + </message> + <message> + <source>Remove</source> + <translation>UsuÅ„</translation> + </message> + <message> + <source>Rename</source> + <translation>ZmieÅ„ nazwÄ™</translation> + </message> </context> <context> <name>ProjectExplorer::Internal::SessionDialog</name> @@ -1907,6 +2118,14 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <source><a href="qthelp://com.nokia.qtcreator/doc/creator-project-managing-sessions.html">What is a Session?</a></source> <translation><a href="qthelp://com.nokia.qtcreator/doc/creator-project-managing-sessions.html">Co to jest sesja?</a></translation> </message> + <message> + <source>Automatically restore the last session when Qt Creator is started.</source> + <translation>Automatycznie przywracaj ostatniÄ… sesjÄ™ po uruchomieniu Qt Creatora.</translation> + </message> + <message> + <source>Restore last session on startup</source> + <translation>Przywracaj ostatniÄ… sesjÄ™ po uruchomieniu</translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::ClassDefinition</name> @@ -2113,6 +2332,10 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum </message> <message> <source>Choose an example...</source> + <translation type="obsolete">Wybierz przykÅ‚ad...</translation> + </message> + <message> + <source>Choose an Example...</source> <translation>Wybierz przykÅ‚ad...</translation> </message> <message> @@ -2167,6 +2390,10 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <translatorcomment>Po dodaniu do projektu zewnÄ™trznej biblioteki, Qt Creator automatycznie </translatorcomment> <translation>PodÅ›wietlanie skÅ‚adni i uzupeÅ‚nianie kodu zadziaÅ‚a automatycznie również dla zewnÄ™trznych bibliotek dodanych do projektu.</translation> </message> + <message> + <source>You can quickly search methods, classes, help and more using the <a href="qthelp://com.nokia.qtcreator/doc/creator-editor-locator.html">Locator bar</a> (<tt>%1+K</tt>).</source> + <translation>UżywajÄ…c <a href="qthelp://com.nokia.qtcreator/doc/creator-editor-locator.html">lokalizatora</a> (<tt>%1+K</tt>) możesz szybko znaleźć metody, klasy, itd. lub przeszukać dokumentacjÄ™.</translation> + </message> <message> <source>You can switch between Qt Creator's modes using <tt>Ctrl+number</tt>:<ul><li>1 - Welcome</li><li>2 - Edit</li><li>3 - Debug</li><li>4 - Projects</li><li>5 - Help</li></ul></source> <translation type="obsolete">Możesz przeÅ‚Ä…czać tryby Qt Creator'a używajÄ…c <tt>Ctrl+liczba</tt>:<ul><li>1 - Powitanie</li><li>2 - Edycja</li><li>3 - Debugowanie</li><li>4 - Projekty</li><li>5 - Pomoc</li></ul></translation> @@ -2213,7 +2440,7 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum </message> <message> <source>You can quickly search methods, classes, help and more using the <a href="qthelp://com.nokia.qtcreator/doc/creator-navigation.html">Locator bar</a> (<tt>%1+K</tt>).</source> - <translation>UżywajÄ…c <a href="qthelp://com.nokia.qtcreator/doc/creator-navigation.html">lokalizatora</a> (<tt>%1+K</tt>) możesz szybko znaleźć metody, klasy, itd. lub przeszukać dokumentacjÄ™.</translation> + <translation type="obsolete">UżywajÄ…c <a href="qthelp://com.nokia.qtcreator/doc/creator-navigation.html">lokalizatora</a> (<tt>%1+K</tt>) możesz szybko znaleźć metody, klasy, itd. lub przeszukać dokumentacjÄ™.</translation> </message> <message> <source>You can add custom build steps in the <a href="qthelp://com.nokia.qtcreator/doc/creator-build-settings.html">build settings</a>.</source> @@ -2255,6 +2482,30 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <source>Open Project...</source> <translation>Otwórz projekt...</translation> </message> + <message> + <source>Examples</source> + <translation>PrzykÅ‚ady</translation> + </message> + <message> + <source>Explore Qt C++ Mobile Examples</source> + <translation>Poznaj dogÅ‚Ä™bnie mobilne przykÅ‚ady Qt C++</translation> + </message> + <message> + <source>Featured</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Image</source> + <translation type="obsolete">Obrazek</translation> + </message> + <message> + <source>Text</source> + <translation type="obsolete">Tekst</translation> + </message> + <message> + <source>Link</source> + <translation type="obsolete">OdsyÅ‚acz</translation> + </message> </context> <context> <name>MakeStep</name> @@ -2289,6 +2540,10 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <source>Release</source> <translation>Release</translation> </message> + <message> + <source>Debug and release</source> + <translation>Debug i release</translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::S60DevicesPreferencePane</name> @@ -2351,9 +2606,21 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum <source>General</source> <translation>Ogólne</translation> </message> + <message> + <source>Invalid Qt version</source> + <translation>Niepoprawna wersja Qt</translation> + </message> + <message> + <source>Error:</source> + <translation>BÅ‚Ä…d:</translation> + </message> + <message> + <source>Warning:</source> + <translation>Ostrzeżenie:</translation> + </message> <message> <source>Building in subdirectories of the source directory is not supported by qmake.</source> - <translation>Budowanie wewnÄ…trz katalogu ze źródÅ‚ami nie jest obsÅ‚ugiwane przez qmake.</translation> + <translation type="obsolete">Budowanie wewnÄ…trz katalogu ze źródÅ‚ami nie jest obsÅ‚ugiwane przez qmake.</translation> </message> <message> <source>An incompatible build exists in %1, which will be overwritten.</source> @@ -2366,7 +2633,7 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum </message> <message> <source>Configuration name:</source> - <translation>Nazwa konfiguracji:</translation> + <translation type="obsolete">Nazwa konfiguracji:</translation> </message> <message> <source>Qt version:</source> @@ -2374,7 +2641,7 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum </message> <message> <source>This Qt version is invalid.</source> - <translation>Ta wersja Qt nie jest poprawna.</translation> + <translation type="obsolete">Ta wersja Qt nie jest poprawna.</translation> </message> <message> <source>Tool chain:</source> @@ -2405,7 +2672,7 @@ Dodaj, zmodyfikuj lub usuÅ„ filtry dokumentów, które determinujÄ… zestaw dokum p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Unable to detect MSVC version.</span></p></body></html></source> - <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> @@ -2461,7 +2728,15 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Debugging helper:</source> - <translation>Asystent debuggera:</translation> + <translation type="obsolete">Asystent debuggera:</translation> + </message> + <message> + <source>Unable to detect MSVC version.</source> + <translation>Nie można okreÅ›lić wersji MSVC.</translation> + </message> + <message> + <source>Debugging helpers:</source> + <translation>Asystenci debuggera:</translation> </message> </context> <context> @@ -2636,6 +2911,93 @@ p, li { white-space: pre-wrap; } <source>In Leading White Space</source> <translation>JeÅ›li poprzedzony jest spacjÄ…</translation> </message> + <message> + <source><html><head/><body> +Controls the indentation style of curly brace blocks. + +<ul> +<li>Exclude Braces: The braces are not indented. +<pre> +void foo() +{ + if (a) + { + bar(); + } +} +</pre> +</li> + +<li>Include Braces: The braces are indented. The contents of the block are on the same level as the braces. +<pre> +void foo() + { + if (a) + { + bar(); + } + } +</pre> +</li> + +<li>GNU Style: Indent the braces for blocks in statements. The contents are indented twice. +<pre> +void foo() +{ + if (a) + { + bar(); + } +} +</pre> +</li> +</ul></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Align continuation lines:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><html><head/><body> +Influences the indentation of continuation lines. + +<ul> +<li>Not At All: Do not align at all. Lines will only be indented to the current logical indentation depth. +<pre> +(tab)int i = foo(a, b +(tab)c, d); +</pre> +</li> + +<li>With Spaces: Always use spaces for alignment, regardless of the other indentation settings. +<pre> +(tab)int i = foo(a, b +(tab) c, d); +</pre> +</li> + +<li>With Regular Indent: Use tabs and/or spaces for alignment, as configured above. +<pre> +(tab)int i = foo(a, b +(tab)(tab)(tab) c, d); +</pre> +</li> +</ul></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Not At All</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>With Spaces</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>With Regular Indent</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>TextEditor::Internal::ColorSchemeEdit</name> @@ -2657,12 +3019,16 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Erase background</source> - <translation>Wyczyść tÅ‚o</translation> + <translation>Wyczyść kolor tÅ‚o</translation> </message> <message> <source>x</source> <translation>x</translation> </message> + <message> + <source>Erase foreground</source> + <translation>Wyczyść kolor pierwszoplanowy</translation> + </message> </context> <context> <name>TextEditor::DisplaySettingsPage</name> @@ -2776,11 +3142,23 @@ p, li { white-space: pre-wrap; } <source>Path:</source> <translation>Åšcieżka:</translation> </message> + <message> + <source>Branch:</source> + <translation>Gałąź:</translation> + </message> + <message> + <source>...</source> + <translation>...</translation> + </message> </context> <context> <name>NickNameDialog</name> <message> <source>Nick Names</source> + <translation type="obsolete">Przydomki</translation> + </message> + <message> + <source>Nicknames</source> <translation>Przydomki</translation> </message> </context> @@ -2796,7 +3174,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><b>Forum Nokia</b><br /><font color='gray'>Mobile Application Support</font></source> - <translation><b>Forum Nokii</b><br /><font color='gray'>Wsparcie techniczne dla mobilnych aplikacji</font></translation> + <translation type="obsolete"><b>Forum Nokii</b><br /><font color='gray'>Wsparcie techniczne dla mobilnych aplikacji</font></translation> </message> <message> <source><b>Qt LGPL Support</b><br /><font color='gray'>Buy professional Qt support</font></source> @@ -2808,7 +3186,15 @@ p, li { white-space: pre-wrap; } </message> <message> <source><b>Qt Centre</b><br /><font color='gray'>Community based Qt support</font></source> - <translation><b>Qt Centre</b><br /><font color='gray'>SpoÅ‚eczne wsparcie techniczne Qt</font></translation> + <translation type="obsolete"><b>Qt Centre</b><br /><font color='gray'>SpoÅ‚eczne wsparcie techniczne Qt</font></translation> + </message> + <message> + <source><b>Forum Nokia</b><br /><font color='gray'>Mobile application support</font></source> + <translation><b>Forum Nokii</b><br /><font color='gray'>Wsparcie techniczne dla mobilnych aplikacji</font></translation> + </message> + <message> + <source><b>Qt DevNet</b><br /><font color='gray'>Qt Developer Resources</font></source> + <translation><b>Qt DevNet</b><br /><font color='gray'>Zasoby deweloperskie Qt</font></translation> </message> <message> <source><b>Qt Home</b><br /><font color='gray'>Qt by Nokia on the web</font></source> @@ -2824,6 +3210,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>http://labs.trolltech.com/blogs/feed</source> + <extracomment>Add localized feed here only if one exists</extracomment> <translation>http://labs.trolltech.com/blogs/feed</translation> </message> <message> @@ -2874,7 +3261,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Add in Folder:</source> - <translation>Dodaj w katalogu:</translation> + <translation type="obsolete">Dodaj w katalogu:</translation> </message> <message> <source>+</source> @@ -2896,6 +3283,10 @@ p, li { white-space: pre-wrap; } <source>Rename Folder</source> <translation>ZmieÅ„ nazwÄ™ katalogu</translation> </message> + <message> + <source>Add in folder:</source> + <translation>Dodaj w katalogu:</translation> + </message> </context> <context> <name>FilterNameDialogClass</name> @@ -2926,6 +3317,10 @@ p, li { white-space: pre-wrap; } <source>&Close</source> <translation>&Zamknij</translation> </message> + <message> + <source>Filter</source> + <translation>Filtr</translation> + </message> <message> <source>Choose a topic for <b>%1</b>:</source> <translation>Wybierz temat dla <b>%1</b>:</translation> @@ -3240,9 +3635,13 @@ Przyczyna: %3</translation> <source>Cannot create temporary directory '%1': %2</source> <translation>Nie można utworzyć tymczasowego katalogu "%1": %2</translation> </message> + <message> + <source>Unexpected output from helper program (%1).</source> + <translation>Nieoczekiwany komunikat od programu pomocniczego (%1).</translation> + </message> <message> <source>Unexpected output from helper program.</source> - <translation>Nieoczekiwany komunikat od programu pomocniczego.</translation> + <translation type="obsolete">Nieoczekiwany komunikat od programu pomocniczego.</translation> </message> <message> <source>Cannot change to working directory '%1': %2</source> @@ -3284,23 +3683,23 @@ Przyczyna: %3</translation> <name>Utils::FileNameValidatingLineEdit</name> <message> <source>Name is empty.</source> - <translation type="obsolete">Nazwa jest pusta.</translation> + <translation>Nazwa jest pusta.</translation> </message> <message> <source>Name contains white space.</source> - <translation type="obsolete">Nazwa zawiera spacje.</translation> + <translation>Nazwa zawiera spacjÄ™.</translation> </message> <message> <source>Invalid character '%1'.</source> - <translation type="obsolete">Niepoprawny znak: "%1".</translation> + <translation>Niepoprawny znak: "%1".</translation> </message> <message> <source>Invalid characters '%1'.</source> - <translation type="obsolete">Niepoprawne znaki: "%1".</translation> + <translation>Niepoprawne znaki: "%1".</translation> </message> <message> <source>Name matches MS Windows device. (%1).</source> - <translation type="obsolete">Nazwa pasuje do urzÄ…dzenia MS Windows. (%1).</translation> + <translation>Nazwa wskazuje na urzÄ…dzenie MS Windows. (%1).</translation> </message> </context> <context> @@ -3344,10 +3743,23 @@ Przyczyna: %3</translation> <source>Choose Directory</source> <translation>Wybierz katalog</translation> </message> + <message> + <source>Choose Executable</source> + <translation>Wybierz plik wykonywalny</translation> + </message> <message> <source>Choose File</source> <translation></translation> </message> + <message> + <source><not valid></source> + <extracomment>Selected path is not valid:</extracomment> + <translation><niepoprawny></translation> + </message> + <message> + <source>Full path: <b>%1</b></source> + <translation>PeÅ‚na Å›cieżka: <b>%1</b></translation> + </message> <message> <source>The path must not be empty.</source> <translation>Åšcieżka nie może być pusta.</translation> @@ -3357,15 +3769,27 @@ Przyczyna: %3</translation> <translation>Åšcieżka "%1" nie istnieje.</translation> </message> <message> - <source>The path '%1' is not a directory.</source> - <translation>"%1" nie jest katalogiem.</translation> + <source>The path <b>%1</b> is not a directory.</source> + <translation>Åšcieżka <b>%1</b> nie jest katalogiem.</translation> </message> <message> - <source>The path '%1' is not a file.</source> - <translation>"%1" nie jest plikiem.</translation> + <source>The path <b>%1</b> is not a file.</source> + <translation>Åšcieżka <b>%1</b> nie jest plikiem.</translation> </message> <message> - <source>Path:</source> + <source>The path <b>%1</b> is not a executable file.</source> + <translation>Åšcieżka <b>%1</b> nie jest plikiem wykonywalnym.</translation> + </message> + <message> + <source>The path '%1' is not a directory.</source> + <translation type="obsolete">"%1" nie jest katalogiem.</translation> + </message> + <message> + <source>The path '%1' is not a file.</source> + <translation type="obsolete">"%1" nie jest plikiem.</translation> + </message> + <message> + <source>Path:</source> <translation>Åšcieżka:</translation> </message> </context> @@ -3548,11 +3972,11 @@ Przyczyna: %3</translation> <name>CMakeProjectManager::Internal::CMakeRunPage</name> <message> <source>Please specify the path to the cmake executable. No cmake executable was found in the path.</source> - <translation>Podaj Å›cieżkÄ™ do programu cmake. Programu cmake nie wykryto w Å›cieżce.</translation> + <translation type="obsolete">Podaj Å›cieżkÄ™ do programu cmake. Programu cmake nie wykryto w Å›cieżce.</translation> </message> <message> <source> The cmake executable (%1) does not exist.</source> - <translation> Program cmake (%1) nie istnieje.</translation> + <translation type="obsolete"> Program cmake (%1) nie istnieje.</translation> </message> <message> <source> The path %1 is not a executable.</source> @@ -3560,7 +3984,7 @@ Przyczyna: %3</translation> </message> <message> <source> The path %1 is not a valid cmake.</source> - <translation> Åšcieżka %1 nie pokazuje na poprawny program cmake.</translation> + <translation type="obsolete"> Åšcieżka %1 nie pokazuje na poprawny program cmake.</translation> </message> <message> <source>Run CMake</source> @@ -3572,23 +3996,59 @@ Przyczyna: %3</translation> </message> <message> <source>The directory %1 already contains a cbp file, which is recent enough. You can pass special arguments or change the used toolchain here and rerun cmake. Or simply finish the wizard directly</source> - <translation>Katalog %1 zawiera już uaktualniony plik cbp. Możesz przekazać specjalne argumenty lub zmienić istniejÄ…cy zestaw narzÄ™dzi i ponownie uruchomić cmake. Możesz również bezpoÅ›rednio zakoÅ„czyć kreatora.</translation> + <translation type="obsolete">Katalog %1 zawiera już uaktualniony plik cbp. Możesz przekazać specjalne argumenty lub zmienić istniejÄ…cy zestaw narzÄ™dzi i ponownie uruchomić cmake. Możesz również bezpoÅ›rednio zakoÅ„czyć kreatora.</translation> </message> <message> <source>The directory %1 does not contain a cbp file. Qt Creator needs to create this file by running cmake. Some projects require command line arguments to the initial cmake call.</source> - <translation>Katalog %1 nie zawiera pliku cbp. Qt Creator wymaga utworzenia go poprzez uruchomienie cmake. Niektóre projekty wymagajÄ… dodatkowych argumentów w komendzie cmake.</translation> + <translation type="obsolete">Katalog %1 nie zawiera pliku cbp. Qt Creator wymaga utworzenia go poprzez uruchomienie cmake. Niektóre projekty wymagajÄ… dodatkowych argumentów w komendzie cmake.</translation> </message> <message> <source>The directory %1 contains an outdated .cbp file. Qt Creator needs to update this file by running cmake. If you want to add additional command line arguments, add them below. Note that cmake remembers command line arguments from the previous runs.</source> - <translation>Katalog %1 zawiera nieaktualny plik cbp. Qt Creator wymaga uaktualnienia go poprzez uruchomienie cmake. Poniżej podaj dodatkowe argumenty dla komendy cmake. Zwróć uwagÄ™ że cmake zapamiÄ™tuje argumenty komendy z ostatniego uruchomienia.</translation> + <translation type="obsolete">Katalog %1 zawiera nieaktualny plik cbp. Qt Creator wymaga uaktualnienia go poprzez uruchomienie cmake. Poniżej podaj dodatkowe argumenty dla komendy cmake. Zwróć uwagÄ™ że cmake zapamiÄ™tuje argumenty komendy z ostatniego uruchomienia.</translation> </message> <message> <source>The directory %1 specified in a build-configuration, does not contain a cbp file. Qt Creator needs to recreate this file, by running cmake. Some projects require command line arguments to the initial cmake call. Note that cmake remembers command line arguments from the previous runs.</source> - <translation>Katalog %1 podany w konfiguracji budowania nie zawiera pliku cbp. Qt Creator wymaga utworzenia go poprzez uruchomienie cmake. Niektóre projekty wymagajÄ… dodatkowych argumentów w komendzie cmake. Zwróć uwagÄ™ że cmake zapamiÄ™tuje argumenty komendy z ostatniego uruchomienia.</translation> + <translation type="obsolete">Katalog %1 podany w konfiguracji budowania nie zawiera pliku cbp. Qt Creator wymaga utworzenia go poprzez uruchomienie cmake. Niektóre projekty wymagajÄ… dodatkowych argumentów w komendzie cmake. Zwróć uwagÄ™ że cmake zapamiÄ™tuje argumenty komendy z ostatniego uruchomienia.</translation> </message> <message> <source>Qt Creator needs to run cmake in the new build directory. Some projects require command line arguments to the initial cmake call.</source> - <translation>Qt Creator wymaga uruchomienia cmake w nowym katalogu budowania. Niektóre projekty wymagajÄ… dodatkowych argumentów w komendzie cmake.</translation> + <translation type="obsolete">Qt Creator wymaga uruchomienia cmake w nowym katalogu budowania. Niektóre projekty wymagajÄ… dodatkowych argumentów w komendzie cmake.</translation> + </message> + <message> + <source>Please specify the path to the CMake executable. No CMake executable was found in the path.</source> + <translation>Podaj Å›cieżkÄ™ do programu CMake. Programu CMake nie wykryto w Å›cieżce.</translation> + </message> + <message> + <source> The CMake executable (%1) does not exist.</source> + <translation>Program CMake (%1) nie istnieje.</translation> + </message> + <message> + <source> The path %1 is not a valid CMake.</source> + <translation>Åšcieżka %1 nie pokazuje na poprawny program CMake.</translation> + </message> + <message> + <source>The directory %1 already contains a cbp file, which is recent enough. You can pass special arguments or change the used toolchain here and rerun CMake. Or simply finish the wizard directly.</source> + <translation>Katalog %1 zawiera już uaktualniony plik cbp. Możesz przekazać specjalne argumenty lub zmienić istniejÄ…cy zestaw narzÄ™dzi i ponownie uruchomić CMake. Możesz również bezpoÅ›rednio zakoÅ„czyć kreatora.</translation> + </message> + <message> + <source>The directory %1 does not contain a cbp file. Qt Creator needs to create this file by running CMake. Some projects require command line arguments to the initial CMake call.</source> + <translation>Katalog %1 nie zawiera pliku cbp. Qt Creator wymaga utworzenia go poprzez uruchomienie CMake. Niektóre projekty wymagajÄ… dodatkowych argumentów w komendzie CMake.</translation> + </message> + <message> + <source>The directory %1 contains an outdated .cbp file. Qt Creator needs to update this file by running CMake. If you want to add additional command line arguments, add them below. Note that CMake remembers command line arguments from the previous runs.</source> + <translation>Katalog %1 zawiera nieaktualny plik cbp. Qt Creator wymaga uaktualnienia go poprzez uruchomienie CMake. Poniżej podaj dodatkowe argumenty dla komendy CMake. Zwróć uwagÄ™ że CMake zapamiÄ™tuje argumenty komendy z ostatniego uruchomienia.</translation> + </message> + <message> + <source>The directory %1 specified in a build-configuration, does not contain a cbp file. Qt Creator needs to recreate this file, by running CMake. Some projects require command line arguments to the initial CMake call. Note that CMake remembers command line arguments from the previous runs.</source> + <translation>Katalog %1 podany w konfiguracji budowania nie zawiera pliku cbp. Qt Creator wymaga utworzenia go poprzez uruchomienie CMake. Niektóre projekty wymagajÄ… dodatkowych argumentów w komendzie CMake. Zwróć uwagÄ™ że CMake zapamiÄ™tuje argumenty komendy z ostatniego uruchomienia.</translation> + </message> + <message> + <source>Qt Creator needs to run CMake in the new build directory. Some projects require command line arguments to the initial CMake call.</source> + <translation>Qt Creator wymaga uruchomienia CMake w nowym katalogu budowania. Niektóre projekty wymagajÄ… dodatkowych argumentów w komendzie CMake.</translation> + </message> + <message> + <source>Refreshing cbp file in %1.</source> + <translation>OdÅ›wieżanie pliku cbp w "%1".</translation> </message> <message> <source>NMake Generator</source> @@ -3602,9 +4062,13 @@ Przyczyna: %3</translation> <source>MinGW Generator</source> <translation>Generator MinGW</translation> </message> + <message> + <source>No valid CMake executable specified.</source> + <translation>Brak poprawnego pliku wykonywalnego CMake.</translation> + </message> <message> <source>No valid cmake executable specified.</source> - <translation>Brak poprawnego pliku wykonywalnego cmake.</translation> + <translation type="obsolete">Brak poprawnego pliku wykonywalnego cmake.</translation> </message> </context> <context> @@ -3614,16 +4078,28 @@ Przyczyna: %3</translation> <translation>Budowanie</translation> </message> <message> - <source>New configuration</source> + <source>New Configuration</source> <translation>Nowa konfiguracja</translation> </message> <message> - <source>New Configuration Name:</source> + <source>New configuration name:</source> <translation>Nazwa nowej konfiguracji:</translation> </message> + <message> + <source>New configuration</source> + <translation type="obsolete">Nowa konfiguracja</translation> + </message> + <message> + <source>New Configuration Name:</source> + <translation type="obsolete">Nazwa nowej konfiguracji:</translation> + </message> </context> <context> <name>CMakeProjectManager::Internal::CMakeBuildSettingsWidget</name> + <message> + <source>Reconfigure project:</source> + <translation>Przekonfiguruj projekt:</translation> + </message> <message> <source>&Change</source> <translation>&ZmieÅ„</translation> @@ -3656,8 +4132,16 @@ Przyczyna: %3</translation> </message> <message> <source>Working Directory:</source> + <translation type="obsolete">Katalog roboczy:</translation> + </message> + <message> + <source>Working directory:</source> <translation>Katalog roboczy:</translation> </message> + <message> + <source>Debugger:</source> + <translation>Debugger:</translation> + </message> <message> <source>Run Environment</source> <translation>Åšrodowisko uruchamiania</translation> @@ -3805,6 +4289,10 @@ Czy chcesz je nadpisać?</translation> <source>Resource Editor</source> <translation>Edytor zasobów</translation> </message> + <message> + <source>Image Viewer</source> + <translation>PrzeglÄ…darka plików graficznych</translation> + </message> </context> <context> <name>Core::Internal::OpenWithDialog</name> @@ -4011,6 +4499,10 @@ Czy chcesz je nadpisać?</translation> <source>Go to Next Split</source> <translation>Przejdź do kolejnego podzielonego okna</translation> </message> + <message> + <source>The file <i>%1</i> is read only.</source> + <translation>Plik <i>%1</i> jest plikiem tylko do odczytu.</translation> + </message> <message> <source>Save %1 &As...</source> <translation>Zachowaj %1 j&ako...</translation> @@ -4029,7 +4521,7 @@ Czy chcesz je nadpisać?</translation> </message> <message> <source>All Files (*)</source> - <translation>Wszystkie pliki (*)</translation> + <translation type="obsolete">Wszystkie pliki (*)</translation> </message> <message> <source>Opening File</source> @@ -4045,7 +4537,7 @@ Czy chcesz je nadpisać?</translation> </message> <message> <source>The file %1 is read only.</source> - <translation>Plik %1 jest plikiem tylko do odczytu.</translation> + <translation type="obsolete">Plik %1 jest plikiem tylko do odczytu.</translation> </message> <message> <source>Open with VCS (%1)</source> @@ -4409,15 +4901,15 @@ Czy chcesz je nadpisać?</translation> <name>Core::Internal::NavigationWidget</name> <message> <source>Hide Sidebar</source> - <translation>Ukrywaj boczny pasek</translation> + <translation type="obsolete">Ukrywaj boczny pasek</translation> </message> <message> <source>Show Sidebar</source> - <translation>Pokazuj boczny pasek</translation> + <translation type="obsolete">Pokazuj boczny pasek</translation> </message> <message> <source>Activate %1 Pane</source> - <translation>Uaktywnij panel %1</translation> + <translation type="obsolete">Uaktywnij panel %1</translation> </message> </context> <context> @@ -4435,7 +4927,7 @@ Czy chcesz je nadpisać?</translation> <name>Core::Internal::NavComboBox</name> <message> <source>Activate %1</source> - <translation>Uaktywnij %1</translation> + <translation type="obsolete">Uaktywnij %1</translation> </message> </context> <context> @@ -4535,7 +5027,7 @@ Czy chcesz je nadpisać?</translation> <name>Core::Internal::ComboBox</name> <message> <source>Activate %1</source> - <translation>Uaktywnij %1</translation> + <translation type="obsolete">Uaktywnij %1</translation> </message> </context> <context> @@ -4721,6 +5213,14 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Switch Between Method Declaration/Definition</source> <translation>PrzeÅ‚Ä…cz miÄ™dzy deklaracjÄ… a definicjÄ… metody</translation> </message> + <message> + <source>Open Type Hierarchy</source> + <translation>Otwórz hierarchiÄ™ typów</translation> + </message> + <message> + <source>Ctrl+Shift+T</source> + <translation>Ctrl+Shift+T</translation> + </message> <message> <source>Rename Symbol Under Cursor</source> <translation>ZmieÅ„ nazwÄ™ symbolu pod kursorem</translation> @@ -4771,6 +5271,10 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <name>CppTools::Internal::CppCurrentDocumentFilter</name> <message> <source>Methods in current Document</source> + <translation type="obsolete">Metody w bieżącym dokumencie</translation> + </message> + <message> + <source>Methods in Current Document</source> <translation>Metody w bieżącym dokumencie</translation> </message> </context> @@ -4986,6 +5490,26 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Revert "%1"...</source> <translation>Odwróć zmiany w "%1"...</translation> </message> + <message> + <source>Edit</source> + <translation>Zmodyfikuj</translation> + </message> + <message> + <source>Edit "%1"</source> + <translation>Zmodyfikuj "%1"</translation> + </message> + <message> + <source>Unedit</source> + <translation>Cofnij modyfikacje</translation> + </message> + <message> + <source>Unedit "%1"</source> + <translation>Cofnij modyfikacje w "%1"</translation> + </message> + <message> + <source>Unedit Repository</source> + <translation>Cofnij modyfikacje w skÅ‚adnicy</translation> + </message> <message> <source>Diff Project "%1"</source> <translation>Pokaż różnice w projekcie "%1"</translation> @@ -5014,10 +5538,30 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Update Project "%1"</source> <translation>Uaktualnij projekt "%1"</translation> </message> + <message> + <source>Commit Project</source> + <translation type="unfinished">WyÅ›lij projekt</translation> + </message> + <message> + <source>Commit Project "%1"</source> + <translation type="unfinished">WyÅ›lij projekt "%1"</translation> + </message> + <message> + <source>Diff Repository</source> + <translation>Pokaż zmiany w skÅ‚adnicy</translation> + </message> + <message> + <source>Repository Status</source> + <translation>Stan skÅ‚adnicy</translation> + </message> <message> <source>Repository Log</source> <translation>Dziennik skÅ‚adnicy</translation> </message> + <message> + <source>Update Repository</source> + <translation>Uaktualnij skÅ‚adnicÄ™</translation> + </message> <message> <source>Revert Repository...</source> <translation>Odwróć zmiany w skÅ‚adnicy...</translation> @@ -5082,10 +5626,22 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Cannot create temporary file: %1</source> <translation>Nie można utworzyć tymczasowego pliku: %1</translation> </message> + <message> + <source>Would you like to discard your changes to the repository '%1'?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Would you like to discard your changes to the file '%1'?</source> + <translation type="unfinished"></translation> + </message> <message> <source>Project status</source> <translation>Stan projektu</translation> </message> + <message> + <source>Repository status</source> + <translation>Stan skÅ‚adnicy</translation> + </message> <message> <source>The initial revision %1 cannot be described.</source> <translation>PoczÄ…tkowa poprawka %1 nie może być opisana.</translation> @@ -5097,13 +5653,13 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <message> <source>Executing: %1 %2 </source> - <translation>Wykonywanie: %1 %2 + <translation type="obsolete">Wykonywanie: %1 %2 </translation> </message> <message> <source>Executing in %1: %2 %3 </source> - <translation>Wykonywanie w %1: %2 %3 + <translation type="obsolete">Wykonywanie w %1: %2 %3 </translation> </message> <message> @@ -5112,19 +5668,19 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>The process terminated with exit code %1.</source> - <translation>Proces zakoÅ„czyÅ‚ siÄ™ kodem wyjÅ›ciowym %1.</translation> + <translation type="obsolete">Proces zakoÅ„czyÅ‚ siÄ™ kodem wyjÅ›ciowym %1.</translation> </message> <message> <source>The process terminated abnormally.</source> - <translation>Proces niepoprawnie zakoÅ„czony.</translation> + <translation type="obsolete">Proces niepoprawnie zakoÅ„czony.</translation> </message> <message> <source>Could not start cvs '%1'. Please check your settings in the preferences.</source> - <translation>Nie można uruchomić cvs "%1". Sprawdź stosowne ustawienia.</translation> + <translation type="obsolete">Nie można uruchomić cvs "%1". Sprawdź stosowne ustawienia.</translation> </message> <message> <source>CVS did not respond within timeout limit (%1 ms).</source> - <translation>CVS nie odpowiedziaÅ‚ w okreÅ›lonym czasie (%1 ms).</translation> + <translation type="obsolete">CVS nie odpowiedziaÅ‚ w okreÅ›lonym czasie (%1 ms).</translation> </message> </context> <context> @@ -5171,6 +5727,26 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Property</source> <translation>WÅ‚aÅ›ciwość</translation> </message> + <message> + <source>Breakpoint Type:</source> + <translation>Typ puÅ‚apki:</translation> + </message> + <message> + <source>Breakpoint</source> + <translation>Breakpoint</translation> + </message> + <message> + <source>Watchpoint</source> + <translation>Watchpoint</translation> + </message> + <message> + <source>Unknown breakpoint type</source> + <translation>Nieznany typ puÅ‚apki</translation> + </message> + <message> + <source>State:</source> + <translation>Stan:</translation> + </message> <message> <source>Requested</source> <translation>Zażądano</translation> @@ -5207,6 +5783,10 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Ignore Count:</source> <translation>Licznik pominięć:</translation> </message> + <message> + <source>Thread Specification:</source> + <translation>Specyfikacja wÄ…tku:</translation> + </message> <message> <source>Number</source> <translation>Numer</translation> @@ -5235,6 +5815,10 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Address</source> <translation>Adres</translation> </message> + <message> + <source>Threads</source> + <translation>WÄ…tki</translation> + </message> <message> <source>Breakpoint will only be hit if this condition is met.</source> <translation>Program przerwie dziaÅ‚anie w puÅ‚apce tylko gdy ten warunek bÄ™dzie speÅ‚niony.</translation> @@ -5243,6 +5827,14 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Breakpoint will only be hit after being ignored so many times.</source> <translation>Program przerwie dziaÅ‚anie w puÅ‚apce po tym jak zostanie ona zignorowana podanÄ… ilość razy.</translation> </message> + <message> + <source>(all)</source> + <translation>(wszystko)</translation> + </message> + <message> + <source>Breakpoint will only be hit in the specified thread(s).</source> + <translation>Program przerwie dziaÅ‚anie w puÅ‚apce tylko w podanych wÄ…tkach.</translation> + </message> </context> <context> <name>Debugger::Internal::BreakWindow</name> @@ -5274,9 +5866,33 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Always Adjust Column Widths to Contents</source> <translation>Zawsze wyrównuj szerokoÅ›ci kolumn do ich zawartoÅ›ci</translation> </message> + <message> + <source>Edit Breakpoint...</source> + <translation>Zmodyfikuj puÅ‚apkÄ™...</translation> + </message> + <message> + <source>Associate Breakpoint With All Threads</source> + <translation>Skojarz puÅ‚apkÄ™ ze wszystkimi wÄ…tkami</translation> + </message> + <message> + <source>Associate Breakpoint With Thread %1</source> + <translation>Skojarz puÅ‚apkÄ™ z wÄ…tkiem %1</translation> + </message> + <message> + <source>Add Breakpoint...</source> + <translation>Dodaj puÅ‚apkÄ™...</translation> + </message> + <message> + <source>Edit Breakpoint Properties</source> + <translation>Zmodyfikuj wÅ‚aÅ›ciwoÅ›ci puÅ‚apki</translation> + </message> + <message> + <source>Set Breakpoint...</source> + <translation type="obsolete">Ustaw puÅ‚apkÄ™...</translation> + </message> <message> <source>Edit Condition...</source> - <translation>Zmodyfikuj warunek...</translation> + <translation type="obsolete">Zmodyfikuj warunek...</translation> </message> <message> <source>Synchronize Breakpoints</source> @@ -5308,11 +5924,11 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>Set Breakpoint at Function...</source> - <translation>Ustaw puÅ‚apkÄ™ w funkcji...</translation> + <translation type="obsolete">Ustaw puÅ‚apkÄ™ w funkcji...</translation> </message> <message> <source>Set Breakpoint at Function "main"</source> - <translation>Ustaw puÅ‚apkÄ™ w funkcji "main"</translation> + <translation type="obsolete">Ustaw puÅ‚apkÄ™ w funkcji "main"</translation> </message> <message> <source>Set Breakpoint at "throw"</source> @@ -5324,7 +5940,7 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>Conditions on Breakpoint %1</source> - <translation>Warunki dla puÅ‚apki %1</translation> + <translation type="obsolete">Warunki dla puÅ‚apki %1</translation> </message> </context> <context> @@ -5332,123 +5948,119 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <message> <source>The function "%1()" failed: %2</source> <extracomment>Function call failed</extracomment> - <translation>Funkcja "%1()" zakoÅ„czona niepowodzeniem: %2</translation> + <translation type="obsolete">Funkcja "%1()" zakoÅ„czona niepowodzeniem: %2</translation> </message> <message> <source>Version: %1</source> - <translation>Wersja: %1</translation> + <translation type="obsolete">Wersja: %1</translation> </message> <message> <source><html>The installed version of the <i>Debugging Tools for Windows</i> (%1) is rather old. Upgrading to version %2 is recommended for the proper display of Qt's data types.</html></source> - <translation><html>Zainstalowana wersja <i>narzÄ™dzi debugowych dla Windows</i> (%1) jest przestarzaÅ‚a. Zalecane jest uaktualnienie do wersji %2 w celu poprawnego wyÅ›wietlania typów danych Qt.</html></translation> + <translation type="obsolete"><html>Zainstalowana wersja <i>narzÄ™dzi debugowych dla Windows</i> (%1) jest przestarzaÅ‚a. Zalecane jest uaktualnienie do wersji %2 w celu poprawnego wyÅ›wietlania typów danych Qt.</html></translation> </message> <message> <source>Debugger</source> - <translation>Debugger</translation> + <translation type="obsolete">Debugger</translation> </message> <message> <source>The dumper library was not found at %1.</source> - <translation>Biblioteka zrzutów nie zostaÅ‚a znaleziona w %1.</translation> - </message> - <message> - <source>The console stub process was unable to start '%1'.</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Biblioteka zrzutów nie zostaÅ‚a znaleziona w %1.</translation> </message> <message> <source>Attaching to core files is not supported!</source> - <translation>DoÅ‚Ä…czanie siÄ™ do pliku zrzutu nie jest obsÅ‚ugiwane!</translation> + <translation type="obsolete">DoÅ‚Ä…czanie siÄ™ do pliku zrzutu nie jest obsÅ‚ugiwane!</translation> </message> <message> <source>The process exited with exit code %1.</source> - <translation>Proces zakoÅ„czyÅ‚ siÄ™ kodem wyjÅ›ciowym %1.</translation> + <translation type="obsolete">Proces zakoÅ„czyÅ‚ siÄ™ kodem wyjÅ›ciowym %1.</translation> </message> <message> <source>Continuing with '%1'...</source> - <translation>Kontynuacja z "%1"...</translation> + <translation type="obsolete">Kontynuacja z "%1"...</translation> </message> <message> <source>Unable to continue: %1</source> - <translation>Nie można kontynuować: %1</translation> + <translation type="obsolete">Nie można kontynuować: %1</translation> </message> <message> <source>Reverse stepping is not implemented.</source> - <translation>Kroczenie wstecz nie jest zaimplementowane.</translation> + <translation type="obsolete">Kroczenie wstecz nie jest zaimplementowane.</translation> </message> <message> <source>Thread %1 cannot be stepped.</source> - <translation>WÄ…tek %1 nie może być Å›ledzony krok po kroku.</translation> + <translation type="obsolete">WÄ…tek %1 nie może być Å›ledzony krok po kroku.</translation> </message> <message> <source>Stepping %1</source> - <translation>Kroczenie %1</translation> + <translation type="obsolete">Kroczenie %1</translation> </message> <message> <source>Running requested...</source> - <translation>Zażądano uruchomienia...</translation> + <translation type="obsolete">Zażądano uruchomienia...</translation> </message> <message> <source>Running up to %1:%2...</source> - <translation>Wykonanie do osiÄ…gniÄ™cia %1:%2...</translation> + <translation type="obsolete">Wykonanie do osiÄ…gniÄ™cia %1:%2...</translation> </message> <message> <source>Running up to function '%1()'...</source> - <translation>Wykonanie do osiÄ…gniÄ™cia funkcji '%1()'...</translation> + <translation type="obsolete">Wykonanie do osiÄ…gniÄ™cia funkcji '%1()'...</translation> </message> <message> <source>Jump to line is not implemented</source> - <translation>Skok do linii nie jest obsÅ‚ugiwany</translation> + <translation type="obsolete">Skok do linii nie jest obsÅ‚ugiwany</translation> </message> <message> <source>Unable to assign the value '%1' to '%2': %3</source> - <translation>Nie można podstawić wartoÅ›ci "%1" do "%2": %3</translation> + <translation type="obsolete">Nie można podstawić wartoÅ›ci "%1" do "%2": %3</translation> </message> <message> <source>Unable to retrieve %1 bytes of memory at 0x%2: %3</source> - <translation>Nie można odczytać %1 bajtów pamiÄ™ci spod adresu 0x%2: %3</translation> + <translation type="obsolete">Nie można odczytać %1 bajtów pamiÄ™ci spod adresu 0x%2: %3</translation> </message> <message> <source>Cannot retrieve symbols while the debuggee is running.</source> - <translation>Nie można odczytać symboli dopóki debugowany program pracuje.</translation> + <translation type="obsolete">Nie można odczytać symboli dopóki debugowany program pracuje.</translation> </message> <message> <source>Debugger Error</source> - <translation>BÅ‚Ä…d debuggera</translation> + <translation type="obsolete">BÅ‚Ä…d debuggera</translation> </message> <message> <source>Ignoring initial breakpoint...</source> - <translation>Zignorowano poczÄ…tkowÄ… puÅ‚apkÄ™...</translation> + <translation type="obsolete">Zignorowano poczÄ…tkowÄ… puÅ‚apkÄ™...</translation> </message> <message> <source>Interrupted in thread %1, current thread: %2</source> - <translation>Przerwano w wÄ…tku %1, bieżący wÄ…tek: %2</translation> + <translation type="obsolete">Przerwano w wÄ…tku %1, bieżący wÄ…tek: %2</translation> </message> <message> <source>Stopped, current thread: %1</source> - <translation>Zatrzymano, bieżący wÄ…tek: %1</translation> + <translation type="obsolete">Zatrzymano, bieżący wÄ…tek: %1</translation> </message> <message> <source>Changing threads: %1 -> %2</source> - <translation>Zmiana wÄ…tków: %1 -> %2</translation> + <translation type="obsolete">Zmiana wÄ…tków: %1 -> %2</translation> </message> <message> <source>Stopped at %1:%2 in thread %3.</source> - <translation>Zatrzymano w %1:%2 w wÄ…tku %3.</translation> + <translation type="obsolete">Zatrzymano w %1:%2 w wÄ…tku %3.</translation> </message> <message> <source>Stopped at %1 in thread %2 (missing debug information).</source> - <translation>Zatrzymano w %1 w wÄ…tku %2 (brak informacji debugowej).</translation> + <translation type="obsolete">Zatrzymano w %1 w wÄ…tku %2 (brak informacji debugowej).</translation> </message> <message> <source>Stopped at %1 (%2) in thread %3 (missing debug information).</source> - <translation>Zatrzymano w %1 (%2) w wÄ…tku %3 (brak informacji debugowej).</translation> + <translation type="obsolete">Zatrzymano w %1 (%2) w wÄ…tku %3 (brak informacji debugowej).</translation> </message> <message> <source>Stopped in thread %1 (missing debug information).</source> - <translation>Zatrzymano w wÄ…tku %1 (brak informacji debugowej).</translation> + <translation type="obsolete">Zatrzymano w wÄ…tku %1 (brak informacji debugowej).</translation> </message> <message> <source>Breakpoint: %1</source> - <translation>PuÅ‚apka: %1</translation> + <translation type="obsolete">PuÅ‚apka: %1</translation> </message> </context> <context> @@ -5487,11 +6099,11 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>Initializing dumpers...</source> - <translation type="unfinished"></translation> + <translation>Inicjalizacja zrzutów...</translation> </message> <message> <source>Disabling dumpers due to debuggee crash...</source> - <translation type="unfinished"></translation> + <translation>WyÅ‚Ä…czanie zrzutów z powodu zakoÅ„czenia pracy debugowanego programu...</translation> </message> <message> <source>Querying dumpers for '%1'/'%2' (%3)</source> @@ -5566,7 +6178,7 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>Pick a local cache directory</source> - <translation>Wybierz katalog z lokalnym cache</translation> + <translation type="obsolete">Wybierz katalog z lokalnym cache</translation> </message> </context> <context> @@ -5577,7 +6189,7 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>This switches the Locals&Watchers view to automatically derefence pointers. This saves a level in the tree view, but also loses data for the now-missing intermediate level.</source> - <translation>WÅ‚Ä…cza automatyczne wyÅ‚uskiwanie wskaźników w widoku ze zmiennymi lokalnymi i obserwowanymi. Brak jednego poziomu w widoku upraszcza go, ale jednoczeÅ›nie powoduje utratÄ™ danych w brakujÄ…cym poziomie poÅ›rednim.</translation> + <translation type="obsolete">WÅ‚Ä…cza automatyczne wyÅ‚uskiwanie wskaźników w widoku ze zmiennymi lokalnymi i obserwowanymi. Brak jednego poziomu w widoku upraszcza go, ale jednoczeÅ›nie powoduje utratÄ™ danych w brakujÄ…cym poziomie poÅ›rednim.</translation> </message> <message> <source>Debugger Properties...</source> @@ -5617,15 +6229,19 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>Watch Expression "%1"</source> - <translation>Obserwuj wyrażenie "%1"</translation> + <translation type="obsolete">Obserwuj wyrażenie "%1"</translation> </message> <message> <source>Remove Watch Expression "%1"</source> - <translation>UsuÅ„ obserwowanie wyrażenia "%1"</translation> + <translation type="obsolete">UsuÅ„ obserwowanie wyrażenia "%1"</translation> </message> <message> <source>Watch Expression "%1" in Separate Window</source> - <translation>Obserwuj wyrażenie "%1" w osobnym oknie</translation> + <translation type="obsolete">Obserwuj wyrażenie "%1" w osobnym oknie</translation> + </message> + <message> + <source>This switches the Locals&Watchers view to automatically dereference pointers. This saves a level in the tree view, but also loses data for the now-missing intermediate level.</source> + <translation type="obsolete">WÅ‚Ä…cza automatyczne wyÅ‚uskiwanie wskaźników w widoku ze zmiennymi lokalnymi i obserwowanymi. Brak jednego poziomu w widoku upraszcza go, ale jednoczeÅ›nie powoduje utratÄ™ danych w brakujÄ…cym poziomie poÅ›rednim.</translation> </message> <message> <source>Show "std::" Namespace in Types</source> @@ -5635,6 +6251,10 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Show Qt's Namespace in Types</source> <translation>Pokazuj przestrzeÅ„ nazw Qt w widoku typów</translation> </message> + <message> + <source>Sort Members of Classes and Structs Alphabetically</source> + <translation>Sortuj alfabetycznie skÅ‚adniki klas i struktur</translation> + </message> <message> <source>Use Debugging Helpers</source> <translation>Używaj asystenta debuggera</translation> @@ -5653,7 +6273,15 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>Recheck Debugging Helper Availability</source> - <translation>Sprawdź ponownie dostÄ™pność asystenta debuggera</translation> + <translation type="obsolete">Sprawdź ponownie dostÄ™pność asystenta debuggera</translation> + </message> + <message> + <source>This switches the Locals&&Watchers view to automatically dereference pointers. This saves a level in the tree view, but also loses data for the now-missing intermediate level.</source> + <translation>WÅ‚Ä…cza automatyczne wyÅ‚uskiwanie wskaźników w widoku ze zmiennymi lokalnymi i obserwowanymi. Brak jednego poziomu w widoku upraszcza go, ale jednoczeÅ›nie powoduje utratÄ™ danych w brakujÄ…cym poziomie poÅ›rednim.</translation> + </message> + <message> + <source>Use QML Observer</source> + <translation>Użyj QML Observera</translation> </message> <message> <source>Synchronize Breakpoints</source> @@ -5667,6 +6295,14 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Selecting this causes breakpoint synchronization being done after each step. This results in up-to-date breakpoint information on whether a breakpoint has been resolved after loading shared libraries, but slows down stepping.</source> <translation>Wybranie tej opcji spowoduje synchronizacjÄ™ puÅ‚apek po każdym kroku. W rezultacie informacja o rozwiÄ…zaniu puÅ‚apek po zaÅ‚adowaniu dzielonych bibliotek bÄ™dzie aktualizowana na bieżąco, ale kroki bÄ™dÄ… wykonywane w dÅ‚uższym czasie.</translation> </message> + <message> + <source>Adjust Breakpoint Locations</source> + <translation>Poprawiaj poÅ‚ożenia puÅ‚apek</translation> + </message> + <message> + <source>Not all source code lines generate executable code. Putting a breakpoint on such a line acts as if the breakpoint was set on the next line that generated code. Selecting 'Adjust Breakpoint Locations' shifts the red breakpoint markers in such cases to the location of the true breakpoint.</source> + <translation type="unfinished"></translation> + </message> <message> <source>Break on "throw"</source> <translation>Przerwij w "throw"</translation> @@ -5737,11 +6373,11 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>Change debugger language automatically</source> - <translation>Automatycznie zmieniaj jÄ™zyk debuggera</translation> + <translation type="obsolete">Automatycznie zmieniaj jÄ™zyk debuggera</translation> </message> <message> <source>Changes the debugger language according to the currently opened file.</source> - <translation>Zmienia jÄ™zyk debuggera odpowiednio do zawartoÅ›ci otwartego pliku.</translation> + <translation type="obsolete">Zmienia jÄ™zyk debuggera odpowiednio do zawartoÅ›ci otwartego pliku.</translation> </message> <message> <source>Checking this will enable tooltips in the locals view during debugging.</source> @@ -5791,85 +6427,85 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> </message> <message> <source>Error Loading Symbols</source> - <translation>BÅ‚Ä…d w trakcie Å‚adowania symboli</translation> + <translation type="obsolete">BÅ‚Ä…d w trakcie Å‚adowania symboli</translation> </message> <message> <source>No executable to load symbols from specified.</source> - <translation>Nie podano programu z którego można zaÅ‚adować symbole.</translation> + <translation type="obsolete">Nie podano programu z którego można zaÅ‚adować symbole.</translation> </message> <message> <source>Symbols found.</source> - <translation>Symbole odnalezione.</translation> + <translation type="obsolete">Symbole odnalezione.</translation> </message> <message> <source>Loading symbols from "%1" failed: </source> - <translation>Nie można zaÅ‚adować symboli z "%1": + <translation type="obsolete">Nie można zaÅ‚adować symboli z "%1": </translation> </message> <message> <source>Attached to core temporarily.</source> - <translation>Tymczasowo doÅ‚Ä…czono do zrzutu.</translation> + <translation type="obsolete">Tymczasowo doÅ‚Ä…czono do zrzutu.</translation> </message> <message> <source>Unable to determine executable from core file.</source> - <translation>Nie można okreÅ›lić pliku wykonywalnego na podstawie zrzutu pamiÄ™ci.</translation> + <translation type="obsolete">Nie można okreÅ›lić pliku wykonywalnego na podstawie zrzutu pamiÄ™ci.</translation> </message> <message> <source>Attached to core.</source> - <translation>DoÅ‚Ä…czono do zrzutu.</translation> + <translation type="obsolete">DoÅ‚Ä…czono do zrzutu.</translation> </message> <message> <source>Attach to core "%1" failed: </source> - <translation>DoÅ‚Ä…czenie do zrzutu "%1" nie powiodÅ‚o siÄ™:</translation> + <translation type="obsolete">DoÅ‚Ä…czenie do zrzutu "%1" nie powiodÅ‚o siÄ™:</translation> </message> <message> <source>Cannot set up communication with child process: %1</source> - <translation>Nie można ustanowić komunikacji z podprocesem: %1</translation> + <translation type="obsolete">Nie można ustanowić komunikacji z podprocesem: %1</translation> </message> <message> <source>Starting executable failed: </source> - <translation>Nie można uruchomić programu: + <translation type="obsolete">Nie można uruchomić programu: </translation> </message> <message> <source>The upload process failed to start. Shell missing?</source> - <translation>Nie można rozpocząć procesu przesyÅ‚ania. Brak powÅ‚oki?</translation> + <translation type="obsolete">Nie można rozpocząć procesu przesyÅ‚ania. Brak powÅ‚oki?</translation> </message> <message> <source>The upload process crashed some time after starting successfully.</source> - <translation>Proces przesyÅ‚ania zakoÅ„czony bÅ‚Ä™dem po poprawnym uruchomieniu.</translation> + <translation type="obsolete">Proces przesyÅ‚ania zakoÅ„czony bÅ‚Ä™dem po poprawnym uruchomieniu.</translation> </message> <message> <source>The last waitFor...() function timed out. The state of QProcess is unchanged, and you can try calling waitFor...() again.</source> - <translation>Ostatnie wywoÅ‚anie funkcji waitFor...() zakoÅ„czyÅ‚o siÄ™ niepowodzeniem po okreÅ›lonym czasie. Stan QProcess siÄ™ nie zmieniÅ‚, możesz ponownie spróbować wywoÅ‚ać waitFor...().</translation> + <translation type="obsolete">Ostatnie wywoÅ‚anie funkcji waitFor...() zakoÅ„czyÅ‚o siÄ™ niepowodzeniem po okreÅ›lonym czasie. Stan QProcess siÄ™ nie zmieniÅ‚, możesz ponownie spróbować wywoÅ‚ać waitFor...().</translation> </message> <message> <source>An error occurred when attempting to write to the upload process. For example, the process may not be running, or it may have closed its input channel.</source> - <translation>WystÄ…piÅ‚ bÅ‚Ä…d podczas próby pisania do procesu przesyÅ‚ania. Być może proces nie jest uruchomiony lub zamknÄ…Å‚ on swój kanaÅ‚ wejÅ›ciowy.</translation> + <translation type="obsolete">WystÄ…piÅ‚ bÅ‚Ä…d podczas próby pisania do procesu przesyÅ‚ania. Być może proces nie jest uruchomiony lub zamknÄ…Å‚ on swój kanaÅ‚ wejÅ›ciowy.</translation> </message> <message> <source>An error occurred when attempting to read from the upload process. For example, the process may not be running.</source> - <translation>WystÄ…piÅ‚ bÅ‚Ä…d podczas próby czytania z procesu przesyÅ‚ania. Być może proces nie jest uruchomiony.</translation> + <translation type="obsolete">WystÄ…piÅ‚ bÅ‚Ä…d podczas próby czytania z procesu przesyÅ‚ania. Być może proces nie jest uruchomiony.</translation> </message> <message> <source>An unknown error in the upload process occurred. This is the default return value of error().</source> - <translation>WystÄ…piÅ‚ nieznany bÅ‚Ä…d podczas procesu przesyÅ‚ania. Jest to domyÅ›lna wartość zwrócona przez error().</translation> + <translation type="obsolete">WystÄ…piÅ‚ nieznany bÅ‚Ä…d podczas procesu przesyÅ‚ania. Jest to domyÅ›lna wartość zwrócona przez error().</translation> </message> <message> <source>Error</source> - <translation>BÅ‚Ä…d</translation> + <translation type="obsolete">BÅ‚Ä…d</translation> </message> <message> <source>Starting remote executable failed: </source> - <translation>Uruchamianie zdalnego programu zakoÅ„czone niepowodzeniem:</translation> + <translation type="obsolete">Uruchamianie zdalnego programu zakoÅ„czone niepowodzeniem:</translation> </message> <message> <source>Debugger Error</source> - <translation>BÅ‚Ä…d debuggera</translation> + <translation type="obsolete">BÅ‚Ä…d debuggera</translation> </message> </context> <context> @@ -5908,6 +6544,10 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <source>Select Executable</source> <translation>Wybierz plik wykonywalny</translation> </message> + <message> + <source>Select Working Directory</source> + <translation>Wybierz katalog roboczy</translation> + </message> <message> <source>Executable:</source> <translation>Plik wykonywalny:</translation> @@ -5940,6 +6580,10 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <name>Debugger::Internal::AddressDialog</name> <message> <source>Select start address</source> + <translation type="obsolete">Wybierz adres startowy</translation> + </message> + <message> + <source>Select Start Address</source> <translation>Wybierz adres startowy</translation> </message> <message> @@ -5951,156 +6595,156 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <name>Debugger::DebuggerManager</name> <message> <source>Continue</source> - <translation>Kontynuuj</translation> + <translation type="obsolete">Kontynuuj</translation> </message> <message> <source>Interrupt</source> - <translation>Przerwij</translation> + <translation type="obsolete">Przerwij</translation> </message> <message> <source>Step Over</source> - <translation>Przeskocz</translation> + <translation type="obsolete">Przeskocz</translation> </message> <message> <source>Step Into</source> - <translation>Wskocz do wnÄ™trza</translation> + <translation type="obsolete">Wskocz do wnÄ™trza</translation> </message> <message> <source>Step Out</source> - <translation>Wyskocz na zewnÄ…trz</translation> + <translation type="obsolete">Wyskocz na zewnÄ…trz</translation> </message> <message> <source>Run to Line</source> - <translation>Uruchom do linii</translation> + <translation type="obsolete">Uruchom do linii</translation> </message> <message> <source>Run to Outermost Function</source> - <translation>Uruchom do skrajnej funkcji</translation> + <translation type="obsolete">Uruchom do skrajnej funkcji</translation> </message> <message> <source>Immediately Return From Inner Function</source> - <translation>Powróć natychmiast z wewnÄ™trznej funkcji</translation> + <translation type="obsolete">Powróć natychmiast z wewnÄ™trznej funkcji</translation> </message> <message> <source>Jump to Line</source> - <translation>Skocz do linii</translation> + <translation type="obsolete">Skocz do linii</translation> </message> <message> <source>Toggle Breakpoint</source> - <translation>PrzeÅ‚Ä…cz ustawienie puÅ‚apki</translation> + <translation type="obsolete">PrzeÅ‚Ä…cz ustawienie puÅ‚apki</translation> </message> <message> <source>Add to Watch Window</source> - <translation>Dodaj do okna obserwowanych</translation> + <translation type="obsolete">Dodaj do okna obserwowanych</translation> </message> <message> <source>Snapshot</source> - <translation>Zrzut</translation> + <translation type="obsolete">Zrzut</translation> </message> <message> <source>Reverse Direction</source> - <translation>Odwrotny kierunek</translation> + <translation type="obsolete">Odwrotny kierunek</translation> </message> <message> <source>Running...</source> - <translation>Uruchamianie...</translation> + <translation type="obsolete">Uruchamianie...</translation> </message> <message> <source>Changing breakpoint state requires either a fully running or fully stopped application.</source> - <translation>Zmienianie stanu puÅ‚apki wymaga albo w peÅ‚ni uruchomionej albo w peÅ‚ni zatrzymanej aplikacji.</translation> + <translation type="obsolete">Zmienianie stanu puÅ‚apki wymaga albo w peÅ‚ni uruchomionej albo w peÅ‚ni zatrzymanej aplikacji.</translation> </message> <message> <source>The application requires the debugger engine '%1', which is disabled.</source> - <translation>Program wymaga silnika debuggera '%1', który jest wyÅ‚Ä…czony.</translation> + <translation type="obsolete">Program wymaga silnika debuggera '%1', który jest wyÅ‚Ä…czony.</translation> </message> <message> <source>Starting debugger for tool chain '%1'...</source> - <translation>Uruchamianie debuggera dla zestawu narzÄ™dzi '%1'...</translation> + <translation type="obsolete">Uruchamianie debuggera dla zestawu narzÄ™dzi '%1'...</translation> </message> <message> <source>Cannot debug '%1' (tool chain: '%2'): %3</source> - <translation>Nie można debugować "%1" (zestaw narzÄ™dzi: "%2"): %3</translation> + <translation type="obsolete">Nie można debugować "%1" (zestaw narzÄ™dzi: "%2"): %3</translation> </message> <message> <source>Warning</source> - <translation>Ostrzeżenie</translation> + <translation type="obsolete">Ostrzeżenie</translation> </message> <message> <source>Save Debugger Log</source> - <translation>Zachowaj dziennik debuggera</translation> + <translation type="obsolete">Zachowaj dziennik debuggera</translation> </message> <message> <source>%1 (explicitly set in the Debugger Options)</source> - <translation>%1 (ustawione jawnie w opcjach debuggera)</translation> + <translation type="obsolete">%1 (ustawione jawnie w opcjach debuggera)</translation> </message> <message> <source>Open Qt preferences</source> - <translation>Otwórz ustawienia Qt</translation> + <translation type="obsolete">Otwórz ustawienia Qt</translation> </message> <message> <source>Turn off helper usage</source> - <translation>WyÅ‚Ä…cz asystenta</translation> + <translation type="obsolete">WyÅ‚Ä…cz asystenta</translation> </message> <message> <source>The debugger could not load the debugging helper library.</source> - <translation>Debugger nie mógÅ‚ zaÅ‚adować biblioteki asystenta debuggera.</translation> + <translation type="obsolete">Debugger nie mógÅ‚ zaÅ‚adować biblioteki asystenta debuggera.</translation> </message> <message> <source>The debugging helper is used to nicely format the values of some Qt and Standard Library data types. It must be compiled for each used Qt version separately. This can be done in the Qt preferences page by selecting a Qt installation and clicking on 'Rebuild' in the 'Debugging Helper' row.</source> - <translation>Asystent debuggera jest używany do Å‚adnego formatowania niektórych typów Qt i Biblioteki Standardowej. Musi być skompilowany oddzielnie dla każdej używanej wersji Qt. Można to zrobić z poziomu strony ustawieÅ„ Qt poprzez wybranie instalacji Qt i klikniÄ™cie na "Przebuduj" w linijce "Asystent debuggera".</translation> + <translation type="obsolete">Asystent debuggera jest używany do Å‚adnego formatowania niektórych typów Qt i Biblioteki Standardowej. Musi być skompilowany oddzielnie dla każdej używanej wersji Qt. Można to zrobić z poziomu strony ustawieÅ„ Qt poprzez wybranie instalacji Qt i klikniÄ™cie na "Przebuduj" w linijce "Asystent debuggera".</translation> </message> <message> <source>Continue anyway</source> - <translation>Kontynuuj</translation> + <translation type="obsolete">Kontynuuj</translation> </message> <message> <source>Abort Debugging</source> - <translation>Przerwij debugowanie</translation> + <translation type="obsolete">Przerwij debugowanie</translation> </message> <message> <source>Aborts debugging and resets the debugger to the initial state.</source> - <translation>Przerywa debugowanie i przywraca debugger do stanu poczÄ…tkowego.</translation> + <translation type="obsolete">Przerywa debugowanie i przywraca debugger do stanu poczÄ…tkowego.</translation> </message> <message> <source>Stopped</source> - <translation>Zatrzymano</translation> + <translation type="obsolete">Zatrzymano</translation> </message> <message> <source>Exited</source> - <translation>ZakoÅ„czono</translation> + <translation type="obsolete">ZakoÅ„czono</translation> </message> <message> <source>Debugging helper missing</source> - <translation>Brak asystenta debuggera</translation> + <translation type="obsolete">Brak asystenta debuggera</translation> </message> <message> <source>Stop Debugger</source> - <translation>Zatrzymaj debugger</translation> + <translation type="obsolete">Zatrzymaj debugger</translation> </message> </context> <context> <name>DebuggerPane</name> <message> <source>Clear Contents</source> - <translation>Wyczyść zawartość</translation> + <translation type="obsolete">Wyczyść zawartość</translation> </message> <message> <source>Save Contents</source> - <translation>Zachowaj zawartość</translation> + <translation type="obsolete">Zachowaj zawartość</translation> </message> </context> <context> <name>InputPane</name> <message> <source>Type Ctrl-<Return> to execute a line.</source> - <translation>NaciÅ›nij Ctrl-<Return> aby wykonać liniÄ™.</translation> + <translation type="obsolete">NaciÅ›nij Ctrl-<Return> aby wykonać liniÄ™.</translation> </message> </context> <context> <name>Debugger::Internal::DebuggerOutputWindow</name> <message> <source>Debugger</source> - <translation>Debugger</translation> + <translation type="obsolete">Debugger</translation> </message> </context> <context> @@ -6115,16 +6759,16 @@ Zwróć uwagÄ™ że spowoduje to usuniÄ™cie lokalnego pliku.</translation> <message> <source>A debugging session is still in progress. Would you like to terminate it?</source> - <translation>Trwa sesja debugowa. + <translation type="obsolete">Trwa sesja debugowa. Czy chcesz jÄ… zakoÅ„czyć?</translation> </message> <message> <source>Close Debugging Session</source> - <translation>ZakoÅ„cz sesjÄ™ debugowÄ…</translation> + <translation type="obsolete">ZakoÅ„cz sesjÄ™ debugowÄ…</translation> </message> <message> <source>A debugging session is still in progress. Terminating the session in the current state (%1) can leave the target in an inconsistent state. Would you still like to terminate it?</source> - <translation>Trwa sesja debugowa. ZakoÅ„czenie jej w bieżącym stanie (%1) może spowodować, że program znajdzie siÄ™ w niespójnym stanie. Czy wciąż chcesz jÄ… zakoÅ„czyć?</translation> + <translation type="obsolete">Trwa sesja debugowa. ZakoÅ„czenie jej w bieżącym stanie (%1) może spowodować, że program znajdzie siÄ™ w niespójnym stanie. Czy wciąż chcesz jÄ… zakoÅ„czyć?</translation> </message> </context> <context> @@ -6146,97 +6790,90 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> <name>Debugger::Internal::DebuggerPlugin</name> <message> <source>Option '%1' is missing the parameter.</source> - <translation>Brak parametru w opcji "%1".</translation> + <translation type="obsolete">Brak parametru w opcji "%1".</translation> </message> <message> <source>The parameter '%1' of option '%2' is not a number.</source> - <translation>Parametr "%1" w opcji "%2" nie jest liczbÄ….</translation> + <translation type="obsolete">Parametr "%1" w opcji "%2" nie jest liczbÄ….</translation> </message> <message> <source>Invalid debugger option: %1</source> - <translation>Niepoprawna opcja debuggera: %1</translation> + <translation type="obsolete">Niepoprawna opcja debuggera: %1</translation> </message> <message> <source>Error evaluating command line arguments: %1</source> - <translation>BÅ‚Ä…d podczas przetwarzania argumentów komendy: %1</translation> + <translation type="obsolete">BÅ‚Ä…d podczas przetwarzania argumentów komendy: %1</translation> </message> <message> <source>Start and Debug External Application...</source> - <translation>Uruchom i zdebuguj zewnÄ™trznÄ… aplikacjÄ™...</translation> + <translation type="obsolete">Uruchom i zdebuguj zewnÄ™trznÄ… aplikacjÄ™...</translation> </message> <message> <source>Attach to Running External Application...</source> - <translation>DoÅ‚Ä…cz do uruchomionej zewnÄ™trznej aplikacji...</translation> + <translation type="obsolete">DoÅ‚Ä…cz do uruchomionej zewnÄ™trznej aplikacji...</translation> </message> <message> <source>Attach to Core...</source> - <translation>DoÅ‚Ä…cz do zrzutu...</translation> + <translation type="obsolete">DoÅ‚Ä…cz do zrzutu...</translation> </message> <message> <source>Start and Attach to Remote Application...</source> - <translation>Uruchom i doÅ‚Ä…cz do zdalnej aplikacji...</translation> + <translation type="obsolete">Uruchom i doÅ‚Ä…cz do zdalnej aplikacji...</translation> </message> <message> <source>Detach Debugger</source> - <translation>OdÅ‚Ä…cz debugger</translation> + <translation type="obsolete">OdÅ‚Ä…cz debugger</translation> </message> <message> <source>Stop Debugger/Interrupt Debugger</source> - <translation>Zatrzymaj debugger / przerwij debugger</translation> + <translation type="obsolete">Zatrzymaj debugger / przerwij debugger</translation> </message> <message> <source>Reset Debugger</source> - <translation>Wyzeruj debugger</translation> + <translation type="obsolete">Wyzeruj debugger</translation> </message> <message> <source>Threads:</source> - <translation>WÄ…tki:</translation> + <translation type="obsolete">WÄ…tki:</translation> </message> <message> <source>Attaching to PID %1.</source> - <translation>DoÅ‚Ä…czanie do PID %1.</translation> + <translation type="obsolete">DoÅ‚Ä…czanie do PID %1.</translation> </message> <message> <source>Remove Breakpoint</source> - <translation>UsuÅ„ puÅ‚apkÄ™</translation> + <translation type="obsolete">UsuÅ„ puÅ‚apkÄ™</translation> </message> <message> <source>Disable Breakpoint</source> - <translation>WyÅ‚Ä…cz puÅ‚apkÄ™</translation> + <translation type="obsolete">WyÅ‚Ä…cz puÅ‚apkÄ™</translation> </message> <message> <source>Enable Breakpoint</source> - <translation>WÅ‚Ä…cz puÅ‚apkÄ™</translation> + <translation type="obsolete">WÅ‚Ä…cz puÅ‚apkÄ™</translation> </message> <message> <source>Set Breakpoint</source> - <translation>Ustaw puÅ‚apkÄ™</translation> + <translation type="obsolete">Ustaw puÅ‚apkÄ™</translation> </message> <message> <source>Warning</source> - <translation>Ostrzeżenie</translation> + <translation type="obsolete">Ostrzeżenie</translation> </message> <message> <source>Cannot attach to PID 0</source> - <translation>Nie można doÅ‚Ä…czyć siÄ™ do PID 0</translation> + <translation type="obsolete">Nie można doÅ‚Ä…czyć siÄ™ do PID 0</translation> </message> <message> <source>Attaching to core %1.</source> - <translation>DoÅ‚Ä…czanie do zrzutu %1.</translation> + <translation type="obsolete">DoÅ‚Ä…czanie do zrzutu %1.</translation> </message> </context> <context> <name>Debugger::Internal::DebuggerRunControlFactory</name> <message> <source>Debug</source> - <translation>Debug</translation> - </message> -</context> -<context> - <name>Debugger::Internal::DebuggerRunControl</name> - <message> - <source>Debugger</source> - <translation></translation> + <translation type="obsolete">Debug</translation> </message> </context> <context> @@ -6276,11 +6913,11 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> <name>Debugger::Internal::CoreGdbAdapter</name> <message> <source>Error Loading Symbols</source> - <translation type="obsolete">BÅ‚Ä…d w trakcie Å‚adowania symboli</translation> + <translation>BÅ‚Ä…d w trakcie Å‚adowania symboli</translation> </message> <message> <source>No executable to load symbols from specified.</source> - <translation type="obsolete">Nie podano programu z którego można zaÅ‚adować symbole.</translation> + <translation>Nie podano programu z którego można zaÅ‚adować symbole.</translation> </message> <message> <source>Loading symbols from "%1" failed: @@ -6290,7 +6927,7 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> </message> <message> <source>Attached to core temporarily.</source> - <translation type="obsolete">Tymczasowo doÅ‚Ä…czono do zrzutu.</translation> + <translation>Tymczasowo doÅ‚Ä…czono do zrzutu.</translation> </message> <message> <source>Unable to determine executable from core file.</source> @@ -6299,22 +6936,27 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> <message> <source>Attach to core "%1" failed: </source> - <translation type="obsolete">DoÅ‚Ä…czenie do zrzutu "%1" nie powiodÅ‚o siÄ™:</translation> + <translation>DoÅ‚Ä…czenie do zrzutu "%1" zakoÅ„czone niepowodzeniem: +</translation> </message> <message> <source>Symbols found.</source> - <translation type="obsolete">Symbole odnalezione.</translation> + <translation>Symbole odnalezione.</translation> + </message> + <message> + <source>Attach to core failed.</source> + <translation>DoÅ‚Ä…czenie do zrzutu zakoÅ„czone niepowodzeniem.</translation> </message> <message> <source>Attached to core.</source> - <translation type="obsolete">DoÅ‚Ä…czono do zrzutu.</translation> + <translation>DoÅ‚Ä…czono do zrzutu.</translation> </message> </context> <context> <name>Debugger::Internal::GdbEngine</name> <message> <source>The Gdb process failed to start. Either the invoked program '%1' is missing, or you may have insufficient permissions to invoke the program.</source> - <translation>Nie można rozpocząć procesu Gdb. Brak programu "%1" albo brak wymaganych uprawnieÅ„ aby go uruchomić.</translation> + <translation type="obsolete">Nie można rozpocząć procesu Gdb. Brak programu "%1" albo brak wymaganych uprawnieÅ„ aby go uruchomić.</translation> </message> <message> <source>The Gdb process crashed some time after starting successfully.</source> @@ -6346,7 +6988,7 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> </message> <message> <source>Running...</source> - <translation>Uruchamianie...</translation> + <translation type="obsolete">Uruchamianie...</translation> </message> <message> <source>Stop requested...</source> @@ -6354,7 +6996,7 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> </message> <message> <source>Stopping temporarily.</source> - <translation>Zatrzymywanie tymczasowe.</translation> + <translation type="obsolete">Zatrzymywanie tymczasowe.</translation> </message> <message> <source>Executable failed</source> @@ -6362,7 +7004,7 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> </message> <message> <source>Process failed to start.</source> - <translation>Nie można uruchomić procesu.</translation> + <translation type="obsolete">Nie można uruchomić procesu.</translation> </message> <message> <source>Executable failed: %1</source> @@ -6374,7 +7016,7 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> </message> <message> <source>Processing queued commands.</source> - <translation>Przetwarzanie kolejki komend.</translation> + <translation type="obsolete">Przetwarzanie kolejki komend.</translation> </message> <message> <source>Loading %1...</source> @@ -6408,6 +7050,18 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> <source>Running requested...</source> <translation>Zażądano uruchomienia...</translation> </message> + <message> + <source>Watchpoint %1 at %2 triggered:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Stopped at breakpoint %1 in thread %2</source> + <translation>Zatrzymano w puÅ‚apce %1 w wÄ…tku %2. {1 ?} {2?}</translation> + </message> + <message> + <source>Raw structure</source> + <translation type="unfinished"></translation> + </message> <message> <source>Step requested...</source> <translation type="unfinished"></translation> @@ -6440,6 +7094,10 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> <source>Unable to run '%1': %2</source> <translation>Nie można uruchomić "%1": %2</translation> </message> + <message> + <source>Retrieving data for stack view thread 0x%1...</source> + <translation type="unfinished"></translation> + </message> <message> <source>Retrieving data for stack view...</source> <translation>Pobieranie danych dla widoku stosu...</translation> @@ -6464,6 +7122,15 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> <source>Debugging helpers not found.</source> <translation>Brak asystentów debuggera.</translation> </message> + <message> + <source>Debugging helpers: Qt version mismatch</source> + <translation>Asystenci debuggera: Niezgodna wersja Qt</translation> + </message> + <message> + <source>The Qt version used to build the debugging helpers (%1) does not match the Qt version used to build the debugged application (%2). +This might yield incorrect results.</source> + <translation type="unfinished"></translation> + </message> <message> <source>Custom dumper setup: %1</source> <translation type="unfinished"></translation> @@ -6483,6 +7150,7 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> </message> <message> <source><shadowed></source> + <extracomment>Type of local variable or parameter shadowed by another variable of the same name in a nested block.</extracomment> <translation><przykryto></translation> </message> <message> @@ -6504,7 +7172,7 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> </message> <message> <source>Unable to start gdb '%1': %2</source> - <translation>Nie można uruchomić gdb "%1": %2</translation> + <translation type="obsolete">Nie można uruchomić gdb "%1": %2</translation> </message> <message> <source>Gdb I/O Error</source> @@ -6534,12 +7202,12 @@ Czy chcesz jÄ… zakoÅ„czyć?</translation> </message> <message> <source>Snapshot Reloading</source> - <translation>PrzeÅ‚adowywanie zrzutu</translation> + <translation type="obsolete">PrzeÅ‚adowywanie zrzutu</translation> </message> <message> <source>In order to load snapshots the debugged process needs to be stopped. Continuation will not be possible afterwards. Do you want to stop the debugged process and load the selected snapshot?</source> - <translation>W celu zaÅ‚adowania zrzutów należy zatrzymać debugowany proces. Kontynuacja debugowania nie bÄ™dzie wtedy możliwa. + <translation type="obsolete">W celu zaÅ‚adowania zrzutów należy zatrzymać debugowany proces. Kontynuacja debugowania nie bÄ™dzie wtedy możliwa. Czy chcesz zatrzymać debugowany proces i zaÅ‚adować wybrany zrzut?</translation> </message> <message> @@ -6562,6 +7230,11 @@ Czy chcesz zatrzymać debugowany proces i zaÅ‚adować wybrany zrzut?</translatio <source>Cannot find debugger initialization script</source> <translation>Nie można odnaleźć skryptu inicjalizujÄ…cego dla debuggera</translation> </message> + <message> + <source>The Gdb process failed to start. Either the invoked program '%1' is missing, or you may have insufficient permissions to invoke the program. +%2</source> + <translation type="unfinished"></translation> + </message> <message> <source>Library %1 loaded</source> <translation>ZaÅ‚adowano bibliotekÄ™ %1</translation> @@ -6590,6 +7263,14 @@ Czy chcesz zatrzymać debugowany proces i zaÅ‚adować wybrany zrzut?</translatio <source>Thread %1 selected</source> <translation>Wybrano wÄ…tek %1</translation> </message> + <message> + <source>Stopping temporarily</source> + <translation>Zatrzymywanie tymczasowe</translation> + </message> + <message> + <source>Processing queued commands</source> + <translation>Przetwarzanie kolejki komend</translation> + </message> <message> <source>The gdb process has not responded to a command within %1 seconds. This could mean it is stuck in an endless loop or taking longer than expected to perform the operation. You can choose between waiting longer or abort debugging.</source> @@ -6608,6 +7289,10 @@ Możesz poczekać dÅ‚użej na odpowiedź lub przerwać debugowanie.</translation <source>Stop debugging</source> <translation>Zatrzymaj debugowanie</translation> </message> + <message> + <source>Process failed to start</source> + <translation>Nie można uruchomić procesu</translation> + </message> <message> <source><unknown></source> <translation><nieznany></translation> @@ -6634,7 +7319,7 @@ Możesz poczekać dÅ‚użej na odpowiedź lub przerwać debugowanie.</translation </message> <message> <source>Stopped at breakpoint %1 in thread %2.</source> - <translation>Zatrzymano w puÅ‚apce %1 w wÄ…tku %2.</translation> + <translation type="obsolete">Zatrzymano w puÅ‚apce %1 w wÄ…tku %2.</translation> </message> <message> <source> <Unknown> </source> @@ -6678,7 +7363,7 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </message> <message> <source>Launching</source> - <translation>Uruchamianie</translation> + <translation type="obsolete">Uruchamianie</translation> </message> <message> <source>Immediate return from function requested...</source> @@ -6686,7 +7371,7 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </message> <message> <source>ATTEMPT BREAKPOINT SYNC</source> - <translation>PRÓBA SYNCHRONIZACJI PUÅAPEK</translation> + <translation type="obsolete">PRÓBA SYNCHRONIZACJI PUÅAPEK</translation> </message> <message> <source><unknown></source> @@ -6698,6 +7383,10 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>Jumping out of bogus frame...</source> <translation>Wyskakiwanie z bÅ‚Ä™dnej ramki...</translation> </message> + <message> + <source>Setting up inferior...</source> + <translation type="unfinished"></translation> + </message> <message> <source>Failed to start application: </source> <translation>Nie można uruchomić aplikacji:</translation> @@ -6720,7 +7409,7 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </message> <message> <source>Starting inferior...</source> - <translation>Uruchamianie podprocesu...</translation> + <translation type="obsolete">Uruchamianie podprocesu...</translation> </message> <message> <source>Adapter crashed</source> @@ -6801,6 +7490,10 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>Process started, PID: 0x%1, thread id: 0x%2, code segment: 0x%3, data segment: 0x%4.</source> <translation>Proces uruchomiony, PID: 0x%1, identyfikator wÄ…tku: 0x%2, segment kodu: 0x%3, segment danych: 0x%4.</translation> </message> + <message> + <source>The reported code segment address (0x%1) might be invalid. Symbol resolution or setting breakoints may not work.</source> + <translation type="unfinished"></translation> + </message> <message> <source>Connecting to TRK server adapter failed: </source> @@ -6822,9 +7515,17 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>Module name</source> <translation>Nazwa moduÅ‚u</translation> </message> + <message> + <source>Module path</source> + <translation>Åšcieżka do moduÅ‚u</translation> + </message> <message> <source>Symbols read</source> - <translation>Przeczytane symbole</translation> + <translation>Symbole przeczytane</translation> + </message> + <message> + <source>Symbols type</source> + <translation>Typ symboli</translation> </message> <message> <source>Start address</source> @@ -6834,6 +7535,18 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>End address</source> <translation>Adres koÅ„cowy</translation> </message> + <message> + <source>unknown</source> + <translation>nieznane</translation> + </message> + <message> + <source>plain</source> + <translation>zwykÅ‚e</translation> + </message> + <message> + <source>fast</source> + <translation>szybkie</translation> + </message> </context> <context> <name>Debugger::Internal::ModulesWindow</name> @@ -6853,6 +7566,10 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>Load Symbols for All Modules</source> <translation>ZaÅ‚aduj symbole ze wszystkich modułów</translation> </message> + <message> + <source>Examine All Modules</source> + <translation>Sprawdź wszystkie moduÅ‚y</translation> + </message> <message> <source>Load Symbols for Module</source> <translation>ZaÅ‚aduj symbole z moduÅ‚u</translation> @@ -6887,19 +7604,19 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </message> <message> <source>Address</source> - <translation>Adres</translation> + <translation type="obsolete">Adres</translation> </message> <message> <source>Code</source> - <translation>Kod</translation> + <translation type="obsolete">Kod</translation> </message> <message> <source>Symbol</source> - <translation>Symbol</translation> + <translation type="obsolete">Symbol</translation> </message> <message> <source>Symbols in "%1"</source> - <translation>Symbole w "%1"</translation> + <translation type="obsolete">Symbole w "%1"</translation> </message> </context> <context> @@ -7104,6 +7821,10 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </context> <context> <name>Debugger::Internal::ScriptEngine</name> + <message> + <source>Error:</source> + <translation>BÅ‚Ä…d:</translation> + </message> <message> <source>Running requested...</source> <translation>Zażądano uruchomienia...</translation> @@ -7133,11 +7854,11 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <name>Debugger::Internal::SourceFilesModel</name> <message> <source>Internal name</source> - <translation>Nazwa wewnÄ™trzna</translation> + <translation type="obsolete">Nazwa wewnÄ™trzna</translation> </message> <message> <source>Full name</source> - <translation>PeÅ‚na nazwa</translation> + <translation type="obsolete">PeÅ‚na nazwa</translation> </message> </context> <context> @@ -7218,15 +7939,39 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <name>Debugger::Internal::ThreadsHandler</name> <message> <source>Thread: %1</source> - <translation>WÄ…tek: %1</translation> + <translation type="obsolete">WÄ…tek: %1</translation> </message> <message> <source>Thread: %1 at %2 (0x%3)</source> - <translation>WÄ…tek: %1 w %2 (0x%3)</translation> + <translation type="obsolete">WÄ…tek: %1 w %2 (0x%3)</translation> </message> <message> <source>Thread: %1 at %2, %3:%4 (0x%5)</source> - <translation>WÄ…tek: %1 w %2, %3:%4 (0x%5)</translation> + <translation type="obsolete">WÄ…tek: %1 w %2, %3:%4 (0x%5)</translation> + </message> + <message> + <source>Thread&nbsp;id:</source> + <translation>Identyfikator&nbsp;wÄ…tku:</translation> + </message> + <message> + <source>Target&nbsp;id:</source> + <translation>Identyfikator&nbsp;produktu:</translation> + </message> + <message> + <source>Name:</source> + <translation>Nazwa:</translation> + </message> + <message> + <source>State:</source> + <translation>Stan:</translation> + </message> + <message> + <source>Core:</source> + <translation>Zrzut:</translation> + </message> + <message> + <source>Stopped&nbsp;at:</source> + <translation>Zatrzymano&nbsp;w:</translation> </message> <message> <source>Thread ID</source> @@ -7248,6 +7993,18 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>Address</source> <translation>Adres</translation> </message> + <message> + <source>Core</source> + <translation>Zrzut</translation> + </message> + <message> + <source>State</source> + <translation>Stan</translation> + </message> + <message> + <source>Name</source> + <translation>Nazwa</translation> + </message> </context> <context> <name>Debugger::Internal::StackWindow</name> @@ -7263,9 +8020,17 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>Open Memory Editor</source> <translation>Otwórz edytor pamiÄ™ci</translation> </message> + <message> + <source>Open Memory Editor at 0x%1</source> + <translation>Otwórz edytor pamiÄ™ci z adresem 0x%1</translation> + </message> + <message> + <source>Open Disassembler at 0x%1</source> + <translation>Otwórz deasembler w 0x%1</translation> + </message> <message> <source>Open Memory Editor at %1</source> - <translation>Otwórz edytor pamiÄ™ci z adresem %1</translation> + <translation type="obsolete">Otwórz edytor pamiÄ™ci z adresem %1</translation> </message> <message> <source>Open Disassembler</source> @@ -7273,7 +8038,7 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </message> <message> <source>Open Disassembler at %1</source> - <translation>Otwórz deasembler w %1</translation> + <translation type="obsolete">Otwórz deasembler w %1</translation> </message> <message> <source>Adjust Column Widths to Contents</source> @@ -7303,10 +8068,12 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <name>Debugger::Internal::WatchData</name> <message> <source><not in scope></source> + <extracomment>Value of variable in Debugger Locals display for variables out of scope (stopped above initialization).</extracomment> <translation><poza zakresem></translation> </message> <message> <source>%1 <shadowed %2></source> + <extracomment>Display of variables shadowed by variables of the same name in nested scopes: Variable %1 is the variable name, %2 is a simple count.</extracomment> <translation>%1 <przykryÅ‚o %2></translation> </message> </context> @@ -7348,6 +8115,10 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>Root</source> <translation>KorzeÅ„</translation> </message> + <message> + <source>Return Value</source> + <translation>Zwrócona wartość</translation> + </message> <message> <source>Locals</source> <translation>Zmienne lokalne</translation> @@ -7360,13 +8131,49 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>Tooltip</source> <translation>Podpowiedź</translation> </message> + <message> + <source><empty></source> + <translation><pusty></translation> + </message> + <message> + <source><uninitialized></source> + <translation><niezainicjalizowany></translation> + </message> + <message> + <source><invalid></source> + <translation><niepoprawny></translation> + </message> + <message> + <source><not accessible></source> + <translation><niedostÄ™pny></translation> + </message> + <message numerus="yes"> + <source><%n items></source> + <translation> + <numerusform><%n element></numerusform> + <numerusform><%n elementy></numerusform> + <numerusform><%n elementów></numerusform> + </translation> + </message> + <message> + <source>%1 Object at %2</source> + <translation>Obiekt %1 pod adresem %2</translation> + </message> + <message> + <source>%1 Object at Unknown Address</source> + <translation>Obiekt %1 pod nieznanym adresem</translation> + </message> + <message> + <source>Locals & Watchers</source> + <translation>Zmienne lokalne i obserwowane</translation> + </message> <message> <source>unknown address</source> - <translation>nieznany adres</translation> + <translation type="obsolete">nieznany adres</translation> </message> <message> <source>%1 object at %2</source> - <translation>%1 obiekt w %2</translation> + <translation type="obsolete">%1 obiekt w %2</translation> </message> <message> <source><Edit></source> @@ -7393,7 +8200,15 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </message> <message> <source>Bald pointer</source> - <translation>Åysy wskaźnik</translation> + <translation type="obsolete">Åysy wskaźnik</translation> + </message> + <message> + <source><Edit></source> + <translation><Zmodyfikuj></translation> + </message> + <message> + <source>Raw pointer</source> + <translation>Wskaźnik</translation> </message> <message> <source>Latin1 string</source> @@ -7436,10 +8251,10 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </message> <message numerus="yes"> <source>%n known types, Qt version: %1, Qt namespace: %2 Dumper version: %3</source> - <translation type="unfinished"> - <numerusform></numerusform> - <numerusform></numerusform> - <numerusform></numerusform> + <translation> + <numerusform>%n znany typ, wersja Qt: %1, przestrzeÅ„ nazw Qt: %2, wersja zrzutu: %3</numerusform> + <numerusform>%n znane typy, wersja Qt: %1, przestrzeÅ„ nazw Qt: %2, wersja zrzutu: %3</numerusform> + <numerusform>%n znanych typów, wersja Qt: %1, przestrzeÅ„ nazw Qt: %2, wersja zrzutu: %3</numerusform> </translation> </message> </context> @@ -7453,13 +8268,57 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <source>Change Format for Type "%1"</source> <translation>ZmieÅ„ format typu "%1"</translation> </message> + <message> + <source>Automatic</source> + <translation>Automatyczny</translation> + </message> <message> <source>Change Format for Type</source> <translation>ZmieÅ„ format typu</translation> </message> + <message> + <source>Change Format for Object Named "%1"</source> + <translation>ZmieÅ„ format obiektu o nazwie %1</translation> + </message> + <message> + <source>Open Memory Editor at Object's Address (0x%1)</source> + <translation>Otwórz edytor pamiÄ™ci z adresem obiektu (0x%1)</translation> + </message> + <message> + <source>Open Memory Editor at Referenced Address (0x%1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Break on Changes at Object's Address (0x%1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Break on Changes at Referenced Address (0x%1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Break on Changing Contents</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Watch Expression</source> + <translation>Obserwuj wyrażenie</translation> + </message> + <message> + <source>Watch Expression "%1"</source> + <translation>Obserwuj wyrażenie "%1"</translation> + </message> + <message> + <source>Remove Watch Expression</source> + <translation>UsuÅ„ obserwowanie wyrażenia</translation> + </message> + <message> + <source>Remove Watch Expression "%1"</source> + <translation>UsuÅ„ obserwowanie wyrażenia "%1"</translation> + </message> <message> <source>Change Format for Object at %1</source> - <translation>ZmieÅ„ format obiektu w %1</translation> + <translation type="obsolete">ZmieÅ„ format obiektu w %1</translation> </message> <message> <source>Change Format for Object</source> @@ -7479,12 +8338,16 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </message> <message> <source>Open Memory Editor at %1</source> - <translation>Otwórz edytor pamiÄ™ci z adresem %1</translation> + <translation type="obsolete">Otwórz edytor pamiÄ™ci z adresem %1</translation> </message> <message> <source>Refresh Code Model Snapshot</source> <translation>OdÅ›wież kopiÄ™ modelu danych</translation> </message> + <message> + <source>Show View Contents in Editor</source> + <translation type="unfinished"></translation> + </message> <message> <source>Adjust Column Widths to Contents</source> <translation>Wyrównaj szerokoÅ›ci kolumn do ich zawartoÅ›ci</translation> @@ -7495,7 +8358,7 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> </message> <message> <source>Clear</source> - <translation>Wyczyść</translation> + <translation type="obsolete">Wyczyść</translation> </message> </context> <context> @@ -7517,7 +8380,7 @@ Zaleca siÄ™ użycie gdb wersji 7.1 lub późniejszej.</translation> <name>Designer</name> <message> <source>Xml Editor</source> - <translation>Edytor xml</translation> + <translation type="obsolete">Edytor xml</translation> </message> <message> <source>Designer</source> @@ -7633,6 +8496,18 @@ Spróbuj ponownie przebudować projekt.</translation> <source>Ctrl+J</source> <translation>Ctrl+J</translation> </message> + <message> + <source>Alt+Shift+R</source> + <translation>Alt+Shift+R</translation> + </message> + <message> + <source>Switch Source/Form</source> + <translation>PrzeÅ‚Ä…cz miÄ™dzy źródÅ‚em a formularzem</translation> + </message> + <message> + <source>Shift+F4</source> + <translation>Shift+F4</translation> + </message> <message> <source>Signals && Slots Editor</source> <translation>Edytor sygnałów / slotów</translation> @@ -7663,7 +8538,7 @@ Spróbuj ponownie przebudować projekt.</translation> </message> <message> <source>Ctrl+Alt+R</source> - <translation>Ctrl+Alt+R</translation> + <translation type="obsolete">Ctrl+Alt+R</translation> </message> <message> <source>About Qt Designer plugins....</source> @@ -7743,7 +8618,7 @@ Spróbuj ponownie przebudować projekt.</translation> <message> <source>No documents matching '%1' could be found. Rebuilding the project might help.</source> - <translation>Brak dokumentów zaÅ‚Ä…czajÄ…cych "%1". + <translation>Brak dokumentów doÅ‚Ä…czajÄ…cych "%1". Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> </message> <message> @@ -7884,15 +8759,15 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <name>FakeVim::Internal::FakeVimPluginPrivate</name> <message> <source>Switch to next file</source> - <translation>PrzeÅ‚Ä…cz do nastÄ™pnego pliku</translation> + <translation type="obsolete">PrzeÅ‚Ä…cz do nastÄ™pnego pliku</translation> </message> <message> <source>Switch to previous file</source> - <translation>PrzeÅ‚Ä…cz do poprzedniego pliku</translation> + <translation type="obsolete">PrzeÅ‚Ä…cz do poprzedniego pliku</translation> </message> <message> <source>Quit FakeVim</source> - <translation>ZakoÅ„cz FakeVim</translation> + <translation type="obsolete">ZakoÅ„cz FakeVim</translation> </message> <message> <source>File not saved</source> @@ -7943,7 +8818,15 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> </message> <message> <source>Replace && Find Next</source> - <translation>ZastÄ…p i znajdź nastÄ™pne</translation> + <translation type="obsolete">ZastÄ…p i znajdź nastÄ™pne</translation> + </message> + <message> + <source>Replace</source> + <translation>ZastÄ…p</translation> + </message> + <message> + <source>Replace && Find</source> + <translation>ZastÄ…p i znajdź</translation> </message> <message> <source>Ctrl+=</source> @@ -8020,27 +8903,39 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <translation>Budowanie</translation> </message> <message> - <source>New configuration</source> + <source>New Configuration</source> <translation>Nowa konfiguracja</translation> </message> <message> - <source>New Configuration Name:</source> + <source>New configuration name:</source> <translation>Nazwa nowej konfiguracji:</translation> </message> + <message> + <source>New configuration</source> + <translation type="obsolete">Nowa konfiguracja</translation> + </message> + <message> + <source>New Configuration Name:</source> + <translation type="obsolete">Nazwa nowej konfiguracji:</translation> + </message> </context> <context> <name>GenericProjectManager::Internal::GenericBuildSettingsWidget</name> <message> <source>Configuration Name:</source> - <translation>Nazwa konfiguracji:</translation> + <translation type="obsolete">Nazwa konfiguracji:</translation> </message> <message> <source>Build directory:</source> <translation>Katalog budowania wersji:</translation> </message> + <message> + <source>Tool chain:</source> + <translation>Zestaw narzÄ™dzi:</translation> + </message> <message> <source>Tool Chain:</source> - <translation>ÅaÅ„cuch narzÄ™dzi:</translation> + <translation type="obsolete">ÅaÅ„cuch narzÄ™dzi:</translation> </message> <message> <source>Generic Manager</source> @@ -8136,6 +9031,10 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <source>Clone URL:</source> <translation>URL klonu:</translation> </message> + <message> + <source>Delete master branch</source> + <translation>UsuÅ„ gałąź "master"</translation> + </message> </context> <context> <name>Git::Internal::GitClient</name> @@ -8155,7 +9054,7 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <source>Executing: %1 %2 </source> <extracomment>Executing: <executable> <arguments></extracomment> - <translation>Uruchamianie: %1 %2 + <translation type="obsolete">Uruchamianie: %1 %2 </translation> </message> <message> @@ -8215,6 +9114,10 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <numerusform>Nie można usunąć %n plików z %1 plików: %2</numerusform> </translation> </message> + <message> + <source>Unable to move from %1 to %2: %3</source> + <translation type="unfinished"></translation> + </message> <message> <source>Unable to reset %1: %2</source> <translation type="unfinished"></translation> @@ -8283,6 +9186,31 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <source>Unable apply patch %1 to %2: %3</source> <translation>Nie można zastosować Å‚aty %1 do %2: %3</translation> </message> + <message> + <source>Cannot locate %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unable to launch %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unable to retrieve the last commit data of the repository %1.</source> + <translation type="unfinished"></translation> + </message> + <message numerus="yes"> + <source>Amended %1 (%n file(s)). +</source> + <translation type="unfinished"> + <numerusform></numerusform> + <numerusform></numerusform> + <numerusform></numerusform> + </translation> + </message> + <message> + <source>Amended %1.</source> + <translation type="unfinished"></translation> + </message> <message> <source>Unable to restore stash %1: %2</source> <translation type="unfinished"></translation> @@ -8611,6 +9539,10 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <source>Clean Repository...</source> <translation>Wyczyść skÅ‚adnicÄ™...</translation> </message> + <message> + <source>Launch gitk</source> + <translation type="unfinished"></translation> + </message> <message> <source>Saves the current state of your work and resets the repository.</source> <translation>Zachowuje bieżący stan Twojej pracy i przywraca skÅ‚adnicÄ™ do stanu sprzed zmian.</translation> @@ -8635,6 +9567,10 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <source>Alt+G,Alt+C</source> <translation>Alt+G,Alt+C</translation> </message> + <message> + <source>Amend Last Commit...</source> + <translation type="unfinished"></translation> + </message> <message> <source>Push</source> <translation>Popchnij</translation> @@ -8654,24 +9590,44 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> %1?</translation> </message> <message> - <source>Unable to retrieve file list</source> - <translation>Nie można uzyskać listy plików</translation> + <source>Amend %1</source> + <translation type="unfinished"></translation> </message> <message> - <source>Repository clean</source> - <translation>Czysta skÅ‚adnica</translation> + <source>Git Commit</source> + <translation type="unfinished"></translation> </message> <message> - <source>The repository is clean.</source> - <translation>SkÅ‚adnica jest czysta.</translation> + <source>Closing Git Editor</source> + <translation type="unfinished"></translation> </message> <message> - <source>Patches (*.patch *.diff)</source> - <translation>Åaty (*.patch *.diff)</translation> - </message> + <source>Unable to retrieve file list</source> + <translation>Nie można uzyskać listy plików</translation> + </message> + <message> + <source>Repository Clean</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Choose Patch</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Repository clean</source> + <translation type="obsolete">Czysta skÅ‚adnica</translation> + </message> + <message> + <source>The repository is clean.</source> + <translation>SkÅ‚adnica jest czysta.</translation> + </message> + <message> + <source>Patches (*.patch *.diff)</source> + <translation>Åaty (*.patch *.diff)</translation> + </message> <message> <source>Choose patch</source> - <translation>Wybierz Å‚atÄ™</translation> + <translation type="obsolete">Wybierz Å‚atÄ™</translation> </message> <message> <source>Patch %1 successfully applied to %2</source> @@ -8723,7 +9679,7 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> </message> <message> <source>Closing git editor</source> - <translation>Zamykanie edytora git</translation> + <translation type="obsolete">Zamykanie edytora git</translation> </message> <message> <source>Do you want to commit the change?</source> @@ -8741,13 +9697,6 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <translation>Nie można odnaleźć pliku binarnego "%1" w Å›cieżce "%2"</translation> </message> </context> -<context> - <name>Git::Internal::GitSubmitEditor</name> - <message> - <source>Git Commit</source> - <translation type="unfinished"></translation> - </message> -</context> <context> <name>HelloWorld::Internal::HelloWorldPlugin</name> <message> @@ -8814,6 +9763,26 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <source>Filters</source> <translation>Filtry</translation> </message> + <message> + <source>Unfiltered</source> + <translation>Nieprzefiltrowane</translation> + </message> + <message> + <source>No user defined filters available or no filter selected.</source> + <translation>Brak dostÄ™pnych filtrów użytkownika lub żaden filtr nie jest zaznaczony.</translation> + </message> + <message> + <source>The filter "%1" will show every documentation file available, as no attributes are specified.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The filter "%1" will only show documentation files that have the attribute %2 specified.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The filter "%1" will only show documentation files that have the attributes %2 specified.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Help::Internal::GeneralSettingsPage</name> @@ -8823,7 +9792,11 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> </message> <message> <source>Open Image</source> - <translation>Otwórz plik graficzny</translation> + <translation type="obsolete">Otwórz plik graficzny</translation> + </message> + <message> + <source>Import Bookmarks</source> + <translation>Zaimportuj zakÅ‚adki</translation> </message> <message> <source>Files (*.xbel)</source> @@ -8842,6 +9815,10 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <name>Help::Internal::HelpIndexFilter</name> <message> <source>Help index</source> + <translation type="obsolete">Indeks pomocy</translation> + </message> + <message> + <source>Help Index</source> <translation>Indeks pomocy</translation> </message> </context> @@ -8963,9 +9940,13 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <translation>Poprzedni</translation> </message> <message> - <source>Close current Page</source> + <source>Close current page</source> <translation>Zamknij bieżącÄ… stronÄ™</translation> </message> + <message> + <source>Close current Page</source> + <translation type="obsolete">Zamknij bieżącÄ… stronÄ™</translation> + </message> <message> <source>Next</source> <translation>NastÄ™pny</translation> @@ -9270,7 +10251,7 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <message> <source>Executing: %1 </source> - <translation>Wykonywanie: %1 + <translation type="obsolete">Wykonywanie: %1 </translation> </message> <message> @@ -9416,15 +10397,23 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <source>The process "%1" crashed.</source> <translation>Proces "%1" zakoÅ„czyÅ‚ pracÄ™ bÅ‚Ä™dem.</translation> </message> + <message> + <source>Could not start process "%1" %2</source> + <translation>Nie można uruchomić procesu "%1" %2</translation> + </message> <message> <source>Could not start process "%1"</source> - <translation>Nie można uruchomić procesu "%1"</translation> + <translation type="obsolete">Nie można uruchomić procesu "%1"</translation> </message> </context> <context> <name>ProjectExplorer::Internal::AllProjectsFilter</name> <message> <source>Files in any project</source> + <translation type="obsolete">Pliki we wszystkich projektach</translation> + </message> + <message> + <source>Files in Any Project</source> <translation>Pliki we wszystkich projektach</translation> </message> </context> @@ -9492,6 +10481,10 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <comment>Category for build system isses listened under 'Build Issues'</comment> <translation>System budowania</translation> </message> + <message> + <source>Build canceled</source> + <translation>Anulowano budowanie</translation> + </message> <message> <source>Canceled build.</source> <translation>Anulowano budowanie.</translation> @@ -9547,60 +10540,89 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <source>Remove</source> <translation>UsuÅ„</translation> </message> + <message> + <source>Rename</source> + <translation>ZmieÅ„ nazwÄ™</translation> + </message> <message> <source>&Clone Selected</source> <translation>S&klonuj wybranÄ…</translation> </message> + <message> + <source>Remove Build Configuration</source> + <translation>UsuÅ„ konfiguracjÄ™ budowania</translation> + </message> + <message> + <source>Do you really want to delete the build configuration <b>%1</b>?</source> + <translation>Czy na pewno usunąć konfiguracjÄ™ budowania <b>%1</b>?</translation> + </message> + <message> + <source>Rename...</source> + <translation>ZmieÅ„ nazwÄ™...</translation> + </message> + <message> + <source>New name for build configuration <b>%1</b>:</source> + <translation>Nowa nazwa dla konfiguracji budowania <b>%1</b>:</translation> + </message> + <message> + <source>Clone Configuration</source> + <extracomment>Title of a the cloned BuildConfiguration window, text of the window</extracomment> + <translation>Sklonuj konfiguracjÄ™</translation> + </message> + <message> + <source>New configuration name:</source> + <translation>Nazwa nowej konfiguracji:</translation> + </message> <message> <source>Build Steps</source> - <translation>Kroki procesu budowania</translation> + <translation type="obsolete">Kroki procesu budowania</translation> </message> <message> <source>Clean Steps</source> - <translation>Kroki procesu czyszczenia</translation> + <translation type="obsolete">Kroki procesu czyszczenia</translation> </message> <message> <source>Clone configuration</source> - <translation>Sklonuj konfiguracjÄ™</translation> + <translation type="obsolete">Sklonuj konfiguracjÄ™</translation> </message> <message> <source>New Configuration Name:</source> - <translation>Nazwa nowej konfiguracji:</translation> + <translation type="obsolete">Nazwa nowej konfiguracji:</translation> </message> </context> <context> <name>ProjectExplorer::Internal::BuildStepsPage</name> <message> <source>Move Up</source> - <translation>PrzenieÅ› do góry</translation> + <translation type="obsolete">PrzenieÅ› do góry</translation> </message> <message> <source>Move Down</source> - <translation>PrzenieÅ› na dół</translation> + <translation type="obsolete">PrzenieÅ› na dół</translation> </message> <message> <source>Remove Item</source> - <translation>UsuÅ„ element</translation> + <translation type="obsolete">UsuÅ„ element</translation> </message> <message> <source>Removing Step failed</source> - <translation>Nie można usunąć kroku</translation> + <translation type="obsolete">Nie można usunąć kroku</translation> </message> <message> <source>Can't remove build step while building</source> - <translation>Nie można usunąć kroku podczas budowania</translation> + <translation type="obsolete">Nie można usunąć kroku podczas budowania</translation> </message> <message> <source>No Build Steps</source> - <translation>Brak kroków procesu budowania</translation> + <translation type="obsolete">Brak kroków procesu budowania</translation> </message> <message> <source>Add Clean Step</source> - <translation>Dodaj krok do procesu czyszczenia</translation> + <translation type="obsolete">Dodaj krok do procesu czyszczenia</translation> </message> <message> <source>Add Build Step</source> - <translation>Dodaj krok do procesu budowania</translation> + <translation type="obsolete">Dodaj krok do procesu budowania</translation> </message> <message> <source>Clean Steps</source> @@ -9622,29 +10644,33 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <name>ProjectExplorer::Internal::CoreListenerCheckingForRunningBuild</name> <message> <source>Cancel Build && Close</source> - <translation>Anuluj budowanie i zamknij</translation> + <translation type="obsolete">Anuluj budowanie i zamknij</translation> </message> <message> <source>Do not Close</source> - <translation>Nie zamykaj</translation> + <translation type="obsolete">Nie zamykaj</translation> </message> <message> <source>Close Qt Creator?</source> - <translation>Czy zamknąć Qt Creator?</translation> + <translation type="obsolete">Czy zamknąć Qt Creator?</translation> </message> <message> <source>A project is currently being built.</source> - <translation>Trwa budowanie projektu.</translation> + <translation type="obsolete">Trwa budowanie projektu.</translation> </message> <message> <source>Do you want to cancel the build process and close Qt Creator anyway?</source> - <translation>Czy chcesz anulować proces budowania i zamknąć Qt Creator?</translation> + <translation type="obsolete">Czy chcesz anulować proces budowania i zamknąć Qt Creator?</translation> </message> </context> <context> <name>ProjectExplorer::Internal::CurrentProjectFilter</name> <message> <source>Files in current project</source> + <translation type="obsolete">Pliki w bieżącym projekcie</translation> + </message> + <message> + <source>Files in Current Project</source> <translation>Pliki w bieżącym projekcie</translation> </message> </context> @@ -9663,7 +10689,7 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> <name>ProjectExplorer::Internal::CustomExecutableConfigurationWidget</name> <message> <source>Name:</source> - <translation>Nazwa:</translation> + <translation type="obsolete">Nazwa:</translation> </message> <message> <source>Executable:</source> @@ -9675,12 +10701,20 @@ Przebudowanie projektu może pomóc w ich odnalezieniu.</translation> </message> <message> <source>Working Directory:</source> + <translation type="obsolete">Katalog roboczy:</translation> + </message> + <message> + <source>Working directory:</source> <translation>Katalog roboczy:</translation> </message> <message> <source>Run in &Terminal</source> <translation>Uruchom w &terminalu</translation> </message> + <message> + <source>Debugger:</source> + <translation>Debugger:</translation> + </message> <message> <source>Run Environment</source> <translation>Åšrodowisko uruchamiania</translation> @@ -9771,13 +10805,13 @@ Powód: %2</translation> <message> <source>Building debugging helper library in %1 </source> - <translation>Budowanie biblioteki asystenta debuggera w %1 + <translation type="obsolete">Budowanie biblioteki asystenta debuggera w %1 </translation> </message> <message> <source>Running %1 %2... </source> - <translation>Uruchamianie %1 %2... + <translation type="obsolete">Uruchamianie %1 %2... </translation> </message> <message> @@ -9789,7 +10823,7 @@ Powód: %2</translation> <message> <source>Running %1 ... </source> - <translation>Uruchamianie %1... + <translation type="obsolete">Uruchamianie %1... </translation> </message> </context> @@ -9797,6 +10831,10 @@ Powód: %2</translation> <name>DependenciesModel</name> <message> <source>Unable to add dependency</source> + <translation type="obsolete">Nie można dodać zależnoÅ›ci</translation> + </message> + <message> + <source>Unable to Add Dependency</source> <translation>Nie można dodać zależnoÅ›ci</translation> </message> <message> @@ -9818,18 +10856,24 @@ Powód: %2</translation> <source>Value</source> <translation>Wartość</translation> </message> + <message> + <source><VALUE></source> + <extracomment>Value when inserting a new variable</extracomment> + <translation><WARTOŚĆ></translation> + </message> <message> <source><VARIABLE></source> <comment>Name when inserting a new variable</comment> - <translation><ZMIENNA></translation> + <translation type="obsolete"><ZMIENNA></translation> </message> <message> <source><VALUE></source> <comment>Value when inserting a new variable</comment> - <translation><WARTOŚĆ></translation> + <translation type="obsolete"><WARTOŚĆ></translation> </message> <message> <source><VARIABLE></source> + <extracomment>Name when inserting a new variable</extracomment> <translation><ZMIENNA></translation> </message> </context> @@ -9895,15 +10939,15 @@ Powód: %2</translation> </message> <message> <source>The application is still running.</source> - <translation>Aplikacja jest wciąż uruchomiona.</translation> + <translation type="obsolete">Aplikacja jest wciąż uruchomiona.</translation> </message> <message> <source>Force it to quit?</source> - <translation>ZakoÅ„czyć jÄ…?</translation> + <translation type="obsolete">ZakoÅ„czyć jÄ…?</translation> </message> <message> <source>Force Quit</source> - <translation>ZakoÅ„cz</translation> + <translation type="obsolete">ZakoÅ„cz</translation> </message> <message> <source>Application Output</source> @@ -9911,7 +10955,7 @@ Powód: %2</translation> </message> <message> <source>Unable to close</source> - <translation>Nie można zamknąć</translation> + <translation type="obsolete">Nie można zamknąć</translation> </message> </context> <context> @@ -9937,9 +10981,18 @@ Powód: %2</translation> <source>Could not open the following project: '%1'</source> <translation>Nie można otworzyć projektu: "%1"</translation> </message> + <message> + <source>All Projects</source> + <translation>Wszystkie projekty</translation> + </message> </context> <context> <name>ProjectExplorer::Internal::ProcessStep</name> + <message> + <source>Custom Process Step</source> + <extracomment>Default ProcessStep display name</extracomment> + <translation>WÅ‚asny krok procesu</translation> + </message> <message> <source>Custom Process Step</source> <comment>item in combobox</comment> @@ -10031,6 +11084,10 @@ Powód: %2</translation> <source>Rebuild All</source> <translation>Przebuduj wszystko</translation> </message> + <message> + <source>Deploy All</source> + <translation>Zainstaluj wszystko</translation> + </message> <message> <source>Clean All</source> <translation>Wyczyść wszystko</translation> @@ -10055,6 +11112,14 @@ Powód: %2</translation> <source>Rebuild Project "%1"</source> <translation>Przebuduj projekt "%1"</translation> </message> + <message> + <source>Deploy Project</source> + <translation>Zainstaluj projekt</translation> + </message> + <message> + <source>Deploy Project "%1"</source> + <translation>Zainstaluj projekt "%1"</translation> + </message> <message> <source>Clean Project</source> <translation>Wyczyść projekt</translation> @@ -10071,6 +11136,10 @@ Powód: %2</translation> <source>Rebuild Without Dependencies</source> <translation>Przebuduj bez zależnoÅ›ci</translation> </message> + <message> + <source>Deploy Without Dependencies</source> + <translation>Zainstaluj bez zależnoÅ›ci</translation> + </message> <message> <source>Clean Without Dependencies</source> <translation>Wyczyść bez zależnoÅ›ci</translation> @@ -10083,6 +11152,63 @@ Powód: %2</translation> <source>Ctrl+R</source> <translation>Ctrl+R</translation> </message> + <message> + <source>Remove Project...</source> + <extracomment>Remove project from parent profile (Project explorer view); will not physically delete any files.</extracomment> + <translation>UsuÅ„ projekt...</translation> + </message> + <message> + <source>Delete File...</source> + <translation>UsuÅ„ plik...</translation> + </message> + <message> + <source>Set as Startup Project</source> + <translation>Ustaw jako projekt startowy</translation> + </message> + <message> + <source>Cancel Build && Close</source> + <translation>Anuluj budowanie i zamknij</translation> + </message> + <message> + <source>Do Not Close</source> + <translation>Nie zamykaj</translation> + </message> + <message> + <source>Close Qt Creator?</source> + <translation>Czy zamknąć Qt Creatora?</translation> + </message> + <message> + <source>A project is currently being built.</source> + <translation>Trwa budowanie projektu.</translation> + </message> + <message> + <source>Do you want to cancel the build process and close Qt Creator anyway?</source> + <translation>Czy chcesz anulować proces budowania i zamknąć Qt Creatora?</translation> + </message> + <message> + <source>Adding Files to Project Failed</source> + <translation>Nie można dodać plików do projektu</translation> + </message> + <message> + <source>Adding to Version Control Failed</source> + <translation>Nie można dodać do systemu kontroli wersji</translation> + </message> + <message> + <source>Removing File Failed</source> + <translation>Nie można usunąć pliku</translation> + </message> + <message> + <source>Deleting File Failed</source> + <translation>Nie można usunąć pliku</translation> + </message> + <message> + <source>Delete File</source> + <translation>UsuÅ„ plik</translation> + </message> + <message> + <source>Delete %1 from file system?</source> + <translation>Usunąć %1 z systemu plików?</translation> + </message> <message> <source>Projects (%1)</source> <translation>Projekty (%1)</translation> @@ -10169,7 +11295,7 @@ Powód: %2</translation> </message> <message> <source>Add files to project failed</source> - <translation>Nie można dodać plików do projektu</translation> + <translation type="obsolete">Nie można dodać plików do projektu</translation> </message> <message> <source>Add to Version Control</source> @@ -10191,11 +11317,11 @@ do systemu kontroli wersji (%2)?</translation> </message> <message> <source>Add files to version control failed</source> - <translation>Nie można dodać plików do systemu kontroli wersji</translation> + <translation type="obsolete">Nie można dodać plików do systemu kontroli wersji</translation> </message> <message> <source>Remove file failed</source> - <translation>Nie można usunąć pliku</translation> + <translation type="obsolete">Nie można usunąć pliku</translation> </message> <message> <source>Could not remove file %1 from project %2.</source> @@ -10203,7 +11329,7 @@ do systemu kontroli wersji (%2)?</translation> </message> <message> <source>Delete file failed</source> - <translation>Nie można usunąć pliku</translation> + <translation type="obsolete">Nie można usunąć pliku</translation> </message> <message> <source>Could not delete file %1.</source> @@ -10226,7 +11352,7 @@ do systemu kontroli wersji (%2)?</translation> </message> <message> <source>Run configuration does not match build configuration</source> - <translation>Konfiguracja uruchamiania nie odpowiada konfiguracji budowania</translation> + <translation>Konfiguracja uruchamiania nie jest zgodna z konfiguracjÄ… budowania</translation> </message> <message> <source>This can happen if the active build configuration uses the wrong Qt version and/or tool chain for the active run configuration (for example, running in Symbian emulator requires building with the WINSCW tool chain).</source> @@ -10258,6 +11384,16 @@ do systemu kontroli wersji (%2)?</translation> </context> <context> <name>ProjectExplorer::Internal::ProjectFileWizardExtension</name> + <message> + <source><Implicitly Add></source> + <translation><Niejawnie dodaj></translation> + </message> + <message> + <source>The files are implicitly added to the projects: +</source> + <translation>Pliki zostaÅ‚y niejawnie dodane do projektów: +</translation> + </message> <message> <source><None></source> <extracomment>No version control system selected @@ -10265,6 +11401,12 @@ do systemu kontroli wersji (%2)?</translation> No project selected</extracomment> <translation><Brak></translation> </message> + <message> + <source>Failed to add subproject '%1' +to project '%2'.</source> + <translation>Nie można dodac podprojektu "%1" +do projektu "%2".</translation> + </message> <message> <source>Failed to add one or more files to project '%1' (%2).</source> @@ -10284,10 +11426,18 @@ No project selected</extracomment> <name>ProjectExplorer::Internal::ProjectTreeWidget</name> <message> <source>Simplify tree</source> - <translation>Uprość drzewo</translation> + <translation type="obsolete">Uprość drzewo</translation> </message> <message> <source>Hide generated files</source> + <translation type="obsolete">Ukryj wygenerowane pliki</translation> + </message> + <message> + <source>Simplify Tree</source> + <translation>Uprość drzewo</translation> + </message> + <message> + <source>Hide Generated Files</source> <translation>Ukryj wygenerowane pliki</translation> </message> <message> @@ -10302,9 +11452,13 @@ No project selected</extracomment> <translation>Projekty</translation> </message> <message> - <source>Filter tree</source> + <source>Filter Tree</source> <translation>Przefiltruj drzewo</translation> </message> + <message> + <source>Filter tree</source> + <translation type="obsolete">Przefiltruj drzewo</translation> + </message> </context> <context> <name>ProjectExplorer::Internal::ProjectWelcomePage</name> @@ -10332,11 +11486,39 @@ No project selected</extracomment> <name>ProjectExplorer::Internal::RunSettingsWidget</name> <message> <source>Add</source> - <translation>Dodaj</translation> + <translation type="obsolete">Dodaj</translation> </message> <message> <source>Remove</source> - <translation>UsuÅ„</translation> + <translation type="obsolete">UsuÅ„</translation> + </message> + <message> + <source>Remove Run Configuration?</source> + <translation>Usunąć konfiguracjÄ™ uruchamiania?</translation> + </message> + <message> + <source>Do you really want to delete the run configuration <b>%1</b>?</source> + <translation>Czy na pewno usunąć konfiguracjÄ™ uruchamiania <b>%1</b>?</translation> + </message> + <message> + <source>Rename...</source> + <translation>ZmieÅ„ nazwÄ™...</translation> + </message> + <message> + <source>New name for run configuration <b>%1</b>:</source> + <translation>Nowa nazwa dla konfiguracji uruchamiania <b>%1</b>:</translation> + </message> + <message> + <source>Remove Deploy Configuration?</source> + <translation>Usunąć konfiguracjÄ™ instalowania?</translation> + </message> + <message> + <source>Do you really want to delete deploy configuration <b>%1</b>?</source> + <translation>Czy na pewno usunąć konfiguracjÄ™ instalowania <b>%1</b>?</translation> + </message> + <message> + <source>New name for deploy configuration <b>%1</b>:</source> + <translation>Nowa nazwa dla konfiguracji instalowania <b>%1</b>:</translation> </message> </context> <context> @@ -10348,7 +11530,7 @@ No project selected</extracomment> <message> <source>Untitled</source> <comment>default file name to display</comment> - <translation>Nienazwany</translation> + <translation type="obsolete">Nienazwany</translation> </message> </context> <context> @@ -10361,6 +11543,22 @@ No project selected</extracomment> <source>Could not restore session %1</source> <translation>Nie można przywrócić sesji %1</translation> </message> + <message> + <source>Failed to restore project files</source> + <translation>Nie można przywrócić plików projektu</translation> + </message> + <message> + <source>Could not restore the following project files:<br><b>%1</b></source> + <translation>Nie można przywrócić nastÄ™pujÄ…cych plików projektu:<br><b>%1</b></translation> + </message> + <message> + <source>Keep projects in Session</source> + <translation>Przechowaj projekty w sesji</translation> + </message> + <message> + <source>Remove projects from Session</source> + <translation>UsuÅ„ projekty z sesji</translation> + </message> <message> <source>Error while saving session</source> <translation>BÅ‚Ä…d podczas zachowywania sesji</translation> @@ -10379,7 +11577,7 @@ No project selected</extracomment> </message> <message> <source>Session ('%1')</source> - <translation>Sesja ("%1")</translation> + <translation type="obsolete">Sesja ("%1")</translation> </message> </context> <context> @@ -10601,7 +11799,12 @@ No project selected</extracomment> <message> <source>qmake</source> <comment>QMakeStep display name.</comment> - <translation>QMake</translation> + <translation type="obsolete">QMake</translation> + </message> + <message> + <source>qmake</source> + <extracomment>QMakeStep default display name</extracomment> + <translation>qmake</translation> </message> <message> <source>Configuration is faulty, please check the Build Issues view for details.</source> @@ -10624,7 +11827,7 @@ No project selected</extracomment> <name>Qt4ProjectManager::QMakeStepConfigWidget</name> <message> <source><b>qmake:</b> No Qt version set. Cannot run qmake.</source> - <translation><b>QMake:</b> Brak ustawionej wersji Qt. Nie można uruchomić qmake.</translation> + <translation><b>qmake:</b> Brak ustawionej wersji Qt. Nie można uruchomić qmake.</translation> </message> <message> <source><b>qmake:</b> %1 %2</source> @@ -10642,22 +11845,28 @@ No project selected</extracomment> <name>Qt4ProjectManager::Internal::S60DeviceRunConfiguration</name> <message> <source>%1 on Symbian Device</source> + <extracomment>S60 device runconfiguration default display name, %1 is base pro-File name</extracomment> <translation>%1 na urzÄ…dzeniu Symbian</translation> </message> + <message> + <source>Run on Symbian device</source> + <extracomment>S60 device runconfiguration default display name (no profile set)</extracomment> + <translation>Uruchom na urzÄ…dzeniu Symbian</translation> + </message> <message> <source>QtS60DeviceRunConfiguration</source> - <translation>Konfiguracja uruchamiania urzÄ…dzenia QtS60</translation> + <translation type="obsolete">Konfiguracja uruchamiania urzÄ…dzenia QtS60</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::S60DeviceRunConfigurationWidget</name> <message> <source>Device:</source> - <translation>UrzÄ…dzenie:</translation> + <translation type="obsolete">UrzÄ…dzenie:</translation> </message> <message> <source>Name:</source> - <translation>Nazwa:</translation> + <translation type="obsolete">Nazwa:</translation> </message> <message> <source>Arguments:</source> @@ -10665,19 +11874,19 @@ No project selected</extracomment> </message> <message> <source>Installation file:</source> - <translation>Plik instalacyjny:</translation> + <translation type="obsolete">Plik instalacyjny:</translation> </message> <message> <source>Device on serial port:</source> - <translation>UrzÄ…dzenie na porcie szeregowym:</translation> + <translation type="obsolete">UrzÄ…dzenie na porcie szeregowym:</translation> </message> <message> <source>Queries the device for information</source> - <translation>Zapytaj urzÄ…dzenie o informacje</translation> + <translation type="obsolete">Zapytaj urzÄ…dzenie o informacje</translation> </message> <message> <source>Connecting...</source> - <translation>ÅÄ…czenie...</translation> + <translation type="obsolete">ÅÄ…czenie...</translation> </message> </context> <context> @@ -10691,151 +11900,209 @@ No project selected</extracomment> <name>Qt4ProjectManager::Internal::S60DeviceRunControlBase</name> <message> <source>There is no device plugged in.</source> - <translation>Brak podÅ‚Ä…czonego urzÄ…dzenia.</translation> + <translation type="obsolete">Brak podÅ‚Ä…czonego urzÄ…dzenia.</translation> </message> <message> <source>Executable file: %1</source> - <translation>Plik wykonywalny: %1</translation> + <translation type="obsolete">Plik wykonywalny: %1</translation> </message> <message> <source>Debugger for Symbian Platform</source> - <translation>Debugger dla platformy Symbian</translation> + <translation type="obsolete">Debugger dla platformy Symbian</translation> </message> <message> <source>Package: %1 Deploying application to '%2'...</source> - <translation>Pakiet: %1 + <translation type="obsolete">Pakiet: %1 Umieszczanie aplikacji w "%2"...</translation> </message> <message> <source>Unable to remove existing file '%1': %2</source> - <translation>Nie można usunąć istniejÄ…cego pliku "%1": %2</translation> + <translation type="obsolete">Nie można usunąć istniejÄ…cego pliku "%1": %2</translation> </message> <message> <source>Unable to rename file '%1' to '%2': %3</source> - <translation>Nie można zmienić nazwy pliku "%1" na "%2": %3</translation> + <translation type="obsolete">Nie można zmienić nazwy pliku "%1" na "%2": %3</translation> </message> <message> <source>Deploying</source> - <translation>Instalowanie</translation> + <translation type="obsolete">Instalowanie</translation> </message> <message> <source>Renaming new package '%1' to '%2'</source> - <translation>Zmienianie nazwy pakietu "%1" na "%2"</translation> + <translation type="obsolete">Zmienianie nazwy pakietu "%1" na "%2"</translation> </message> <message> <source>Removing old package '%1'</source> - <translation>Usuwanie starego pakietu "%1"</translation> + <translation type="obsolete">Usuwanie starego pakietu "%1"</translation> </message> <message> <source>Package file not found</source> - <translation>Plik pakietu nie zostaÅ‚ odnaleziony</translation> + <translation type="obsolete">Plik pakietu nie zostaÅ‚ odnaleziony</translation> </message> <message> <source>Failed to find package '%1': %2</source> - <translation>Nie można odnaleźć pakietu "%1": %2</translation> + <translation type="obsolete">Nie można odnaleźć pakietu "%1": %2</translation> </message> <message> <source>Could not connect to phone on port '%1': %2 Check if the phone is connected and App TRK is running.</source> - <translation>Nie można nawiÄ…zać poÅ‚Ä…czenia z telefonem na porcie "%1": %2 + <translation type="obsolete">Nie można nawiÄ…zać poÅ‚Ä…czenia z telefonem na porcie "%1": %2 Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</translation> </message> <message> <source>Could not create file %1 on device: %2</source> - <translation>Nie można utworzyć pliku %1 na urzÄ…dzeniu: %2</translation> + <translation type="obsolete">Nie można utworzyć pliku %1 na urzÄ…dzeniu: %2</translation> </message> <message> <source>Could not write to file %1 on device: %2</source> - <translation>Nie można zapisać do pliku %1 na urzÄ…dzeniu: %2</translation> + <translation type="obsolete">Nie można zapisać do pliku %1 na urzÄ…dzeniu: %2</translation> </message> <message> <source>Could not close file %1 on device: %2. It will be closed when App TRK is closed.</source> - <translation>Nie można zamknąć pliku %1 w urzÄ…dzeniu: %2, bÄ™dzie on zamkniÄ™ty gdy aplikacja TRK zostanie zakoÅ„czona.</translation> + <translation type="obsolete">Nie można zamknąć pliku %1 w urzÄ…dzeniu: %2, bÄ™dzie on zamkniÄ™ty gdy aplikacja TRK zostanie zakoÅ„czona.</translation> </message> <message> <source>Could not connect to App TRK on device: %1. Restarting App TRK might help.</source> - <translation>Nie można ustanowić poÅ‚Ä…czenia z aplikacjÄ… TRK w urzÄ…dzeniu: %1. Spróbuj ponownie uruchomić aplikacjÄ™ TRK.</translation> + <translation type="obsolete">Nie można ustanowić poÅ‚Ä…czenia z aplikacjÄ… TRK w urzÄ…dzeniu: %1. Spróbuj ponownie uruchomić aplikacjÄ™ TRK.</translation> </message> <message> <source>The device '%1' has been disconnected</source> - <translation>UrzÄ…dzenie "%1" zostaÅ‚o odÅ‚Ä…czone</translation> + <translation type="obsolete">UrzÄ…dzenie "%1" zostaÅ‚o odÅ‚Ä…czone</translation> </message> <message> <source>Installing application...</source> - <translation>Instalowanie aplikacji...</translation> + <translation type="obsolete">Instalowanie aplikacji...</translation> </message> <message> <source>Copying installation file...</source> - <translation>Kopiowanie pliku instalacyjnego...</translation> + <translation type="obsolete">Kopiowanie pliku instalacyjnego...</translation> </message> <message> <source>Could not install from package %1 on device: %2</source> - <translation>Nie można zainstalować z pakietu %1 na urzÄ…dzeniu: %2</translation> + <translation type="obsolete">Nie można zainstalować z pakietu %1 na urzÄ…dzeniu: %2</translation> </message> <message> <source>Waiting for App TRK</source> - <translation>Oczekiwanie na aplikacjÄ™ TRK</translation> + <translation type="obsolete">Oczekiwanie na aplikacjÄ™ TRK</translation> </message> <message> <source>Please start App TRK on %1.</source> - <translation>ProszÄ™ uruchomić aplikacjÄ™ TRK na porcie %1.</translation> + <translation type="obsolete">ProszÄ™ uruchomić aplikacjÄ™ TRK na porcie %1.</translation> </message> <message> <source>Canceled.</source> - <translation>Anulowano.</translation> + <translation type="obsolete">Anulowano.</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::S60DeviceRunControl</name> <message> - <source>Finished.</source> - <translation>ZakoÅ„czono.</translation> + <source>Launching</source> + <translation>Uruchamianie</translation> </message> <message> - <source>Starting application...</source> - <translation>Uruchamianie aplikacji...</translation> + <source>There is no device plugged in.</source> + <translation>Brak podÅ‚Ä…czonego urzÄ…dzenia.</translation> </message> <message> - <source>Application running with pid %1.</source> - <translation>Aplikacja wykonuje siÄ™ z pid %1.</translation> + <source>Executable file: %1</source> + <translation>Plik wykonywalny: %1</translation> </message> <message> - <source>Could not start application: %1</source> - <translation>Nie można uruchomić aplikacji: %1</translation> + <source>Debugger for Symbian Platform</source> + <translation>Debugger dla platformy Symbian</translation> </message> -</context> -<context> - <name>Qt4ProjectManager::Internal::S60DeviceDebugRunControl</name> <message> - <source>Warning: Cannot locate the symbol file belonging to %1.</source> - <translation>Ostrzeżenie: nie można odnaleźć pliku z symbolami należącego do %1.</translation> + <source>Could not connect to phone on port '%1': %2 +Check if the phone is connected and App TRK is running.</source> + <translation>Nie można nawiÄ…zać poÅ‚Ä…czenia z telefonem na porcie "%1": %2 +Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</translation> </message> <message> - <source>Launching debugger...</source> - <translation>Uruchamianie debuggera...</translation> + <source>Could not connect to App TRK on device: %1. Restarting App TRK might help.</source> + <translation>Nie można ustanowić poÅ‚Ä…czenia z aplikacjÄ… TRK w urzÄ…dzeniu: %1. Spróbuj ponownie uruchomić aplikacjÄ™ TRK.</translation> </message> <message> - <source>Debugging finished.</source> - <translation>ZakoÅ„czono debugowanie.</translation> + <source>Waiting for App TRK</source> + <translation>Oczekiwanie na aplikacjÄ™ TRK</translation> + </message> + <message> + <source>Qt Creator is waiting for the TRK application to connect.<br>Please make sure the application is running on your mobile phone and the right port is configured in the project settings.</source> + <translation>Qt Creator oczekuje na poÅ‚Ä…czenie od aplikacji TRK.<br>Sprawdź czy aplikacja jest uruchomiona na telefonie komórkowym i czy wÅ‚aÅ›ciwy port jest skonfigurowany w ustawieniach projektu.</translation> + </message> + <message> + <source>Canceled.</source> + <translation>Anulowano.</translation> + </message> + <message> + <source>The device '%1' has been disconnected</source> + <translation>UrzÄ…dzenie "%1" zostaÅ‚o odÅ‚Ä…czone</translation> + </message> + <message> + <source>Finished.</source> + <translation>ZakoÅ„czono.</translation> + </message> + <message> + <source>Starting application...</source> + <translation>Uruchamianie aplikacji...</translation> + </message> + <message> + <source>Application running with pid %1.</source> + <translation>Aplikacja wykonuje siÄ™ z pid %1.</translation> + </message> + <message> + <source>Could not start application: %1</source> + <translation>Nie można uruchomić aplikacji: %1</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60DeviceDebugRunControl</name> + <message> + <source>Warning: Cannot locate the symbol file belonging to %1.</source> + <translation>Ostrzeżenie: nie można odnaleźć pliku z symbolami należącego do %1.</translation> + </message> + <message> + <source>Debugger for Symbian Platform</source> + <translation>Debugger dla platformy Symbian</translation> + </message> + <message> + <source>Debugging</source> + <translation>Debugowanie</translation> + </message> + <message> + <source>Launching debugger...</source> + <translation>Uruchamianie debuggera...</translation> + </message> + <message> + <source>Debugging finished.</source> + <translation type="obsolete">ZakoÅ„czono debugowanie.</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::S60EmulatorRunConfiguration</name> <message> <source>%1 in Symbian Emulator</source> + <extracomment>S60 emulator run configuration default display name, %1 is base pro-File name +---------- +S60 emulator run configuration default display name, %1 is base pro-File name</extracomment> <translation>%1 w emulatorze Symbian</translation> </message> + <message> + <source>Run on Symbian Emulator</source> + <extracomment>S60 emulator run configuration default display name (no pro-file name)</extracomment> + <translation>Uruchom na emulatorze Symbiana</translation> + </message> <message> <source>Qt Symbian Emulator RunConfiguration</source> - <translation>Konfiguracja uruchamiania emulatora Qt Symbian</translation> + <translation type="obsolete">Konfiguracja uruchamiania emulatora Qt Symbian</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::S60EmulatorRunConfigurationWidget</name> <message> <source>Name:</source> - <translation>Nazwa:</translation> + <translation type="obsolete">Nazwa:</translation> </message> <message> <source>Executable:</source> @@ -10897,6 +12164,10 @@ Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</tr <source>Resources</source> <translation>Zasoby</translation> </message> + <message> + <source>QML</source> + <translation>QML</translation> + </message> <message> <source>Other files</source> <translation>Inne pliki</translation> @@ -10905,9 +12176,17 @@ Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</tr <source>Failed!</source> <translation>NiepomyÅ›lnie zakoÅ„czone!</translation> </message> + <message> + <source>Could not open the file for edit with VCS.</source> + <translation>System kontroli wersji nie może otworzyć pliku do edycji.</translation> + </message> + <message> + <source>Error while reading .pro file %1: %2</source> + <translation>BÅ‚Ä…d podczas czytania pliku pro %1: %2</translation> + </message> <message> <source>Could not open the file for edit with SCC.</source> - <translation>Nie udaÅ‚o siÄ™ otworzyć pliku do edycji przez SCC.</translation> + <translation type="obsolete">Nie udaÅ‚o siÄ™ otworzyć pliku do edycji przez SCC.</translation> </message> <message> <source>Could not set permissions to writable.</source> @@ -10923,7 +12202,7 @@ Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</tr </message> <message> <source>Error while reading PRO file %1: %2</source> - <translation>BÅ‚Ä…d podczas czytania pliku PRO %1: %2</translation> + <translation type="obsolete">BÅ‚Ä…d podczas czytania pliku PRO %1: %2</translation> </message> </context> <context> @@ -10958,13 +12237,25 @@ Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</tr <source>Build</source> <translation>Budowanie</translation> </message> + <message> + <source>Rebuild</source> + <translation>Przebuduj</translation> + </message> + <message> + <source>Clean</source> + <translation>Wyczyść</translation> + </message> + <message> + <source>Add Library...</source> + <translation>Dodaj bibliotekÄ™...</translation> + </message> <message> <source>Run qmake in %1</source> - <translation>Uruchom qmake w %1</translation> + <translation type="obsolete">Uruchom qmake w %1</translation> </message> <message> <source>Build in %1</source> - <translation>Zbuduj w %1</translation> + <translation type="obsolete">Zbuduj w %1</translation> </message> </context> <context> @@ -10990,7 +12281,7 @@ Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</tr <name>Qt4ProjectManager::Internal::Qt4RunConfigurationWidget</name> <message> <source>Name:</source> - <translation>Nazwa:</translation> + <translation type="obsolete">Nazwa:</translation> </message> <message> <source>Executable:</source> @@ -11016,6 +12307,10 @@ Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</tr <source>Run in terminal</source> <translation>Uruchom w terminalu</translation> </message> + <message> + <source>Debugger:</source> + <translation>Debugger:</translation> + </message> <message> <source>Use debug version of frameworks (DYLD_IMAGE_SUFFIX=_debug)</source> <translation>Użyj pakietów w wersji do debugowania (DYLD_IMAGE_SUFFIX=_debug)</translation> @@ -11150,10 +12445,19 @@ Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</tr <source>Building helpers</source> <translation>Budowanie asystentów</translation> </message> + <message> + <source>Binary not found</source> + <translation>Nie znaleziono pliku binarnego</translation> + </message> + <message> + <source><html><body><table><tr><td>File:</td><td><pre>%1</pre></td></tr><tr><td>Last&nbsp;modified:</td><td>%2</td></tr><tr><td>Size:</td><td>%3 Bytes</td></tr><tr><td>File:</td><td><pre>%4</pre></td></tr><tr><td>Last&nbsp;modified:</td><td>%5</td></tr><tr><td>Size:</td><td>%6 Bytes</td></tr><tr><td>File:</td><td><pre>%7</pre></td></tr><tr><td>Last&nbsp;modified:</td><td>%8</td></tr><tr><td>Size:</td><td>%9 Bytes</td></tr></table></body></html></source> + <extracomment>Tooltip showing the debugging helper library file.</extracomment> + <translation><html><body><table><tr><td>Plik:</td><td><pre>%1</pre></td></tr><tr><td>Ostatnio&nbsp;zmodyfikowany:</td><td>%2</td></tr><tr><td>Rozmiar:</td><td>%3 Bajtów</td></tr><tr><td>Plik:</td><td><pre>%4</pre></td></tr><tr><td>Ostatnio&nbsp;zmodyfikowany:</td><td>%5</td></tr><tr><td>Rozmiar:</td><td>%6 Bajtów</td></tr><tr><td>Plik:</td><td><pre>%7</pre></td></tr><tr><td>Ostatnio&nbsp;zmodyfikowany:</td><td>%8</td></tr><tr><td>Rozmiar:</td><td>%9 Bajtów</td></tr></table></body></html></translation> + </message> <message> <source><html><body><table><tr><td>File:</td><td><pre>%1</pre></td></tr><tr><td>Last&nbsp;modified:</td><td>%2</td></tr><tr><td>Size:</td><td>%3 Bytes</td></tr></table></body></html></source> <extracomment>Tooltip showing the debugging helper library file.</extracomment> - <translation><html><body><table><tr><td>Plik:</td><td><pre>%1</pre></td></tr><tr><td>Ostatnio&nbsp;zmodyfikowany:</td><td>%2</td></tr><tr><td>Rozmiar:</td><td>%3 Bajtów</td></tr></table></body></html></translation> + <translation type="obsolete"><html><body><table><tr><td>Plik:</td><td><pre>%1</pre></td></tr><tr><td>Ostatnio&nbsp;zmodyfikowany:</td><td>%2</td></tr><tr><td>Rozmiar:</td><td>%3 Bajtów</td></tr></table></body></html></translation> </message> <message> <source>This Qt Version has a unknown toolchain.</source> @@ -11233,12 +12537,16 @@ Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</tr <message> <source>EditorManager</source> <comment>Next Open Document in History</comment> - <translation>Manager edytorów</translation> + <translation type="obsolete">Manager edytorów</translation> </message> <message> <source>EditorManager</source> <comment>Previous Open Document in History</comment> - <translation>Manager edytorów</translation> + <translation type="obsolete">Manager edytorów</translation> + </message> + <message> + <source>Qt QML Viewer</source> + <translation type="obsolete">PrzeglÄ…darka Qt QML</translation> </message> </context> <context> @@ -11337,14 +12645,26 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos <name>Qt4ProjectManager::Internal::LibraryWizardDialog</name> <message> <source>Shared library</source> - <translation>Biblioteka współdzielona</translation> + <translation type="obsolete">Biblioteka współdzielona</translation> </message> <message> <source>Statically linked library</source> - <translation>Biblioteka statycznie dowiÄ…zana</translation> + <translation type="obsolete">Biblioteka statycznie dowiÄ…zana</translation> </message> <message> <source>Qt 4 plugin</source> + <translation type="obsolete">Wtyczka Qt 4</translation> + </message> + <message> + <source>Shared Library</source> + <translation>Biblioteka współdzielona</translation> + </message> + <message> + <source>Statically Linked Library</source> + <translation>Biblioteka statycznie dowiÄ…zana</translation> + </message> + <message> + <source>Qt 4 Plugin</source> <translation>Wtyczka Qt 4</translation> </message> <message> @@ -11359,11 +12679,19 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos <source>Details</source> <translation>Szczegóły</translation> </message> + <message> + <source>Symbian Specific</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::ModulesPage</name> <message> <source>Select required modules</source> + <translation type="obsolete">Wybierz wymagane moduÅ‚y</translation> + </message> + <message> + <source>Select Required Modules</source> <translation>Wybierz wymagane moduÅ‚y</translation> </message> <message> @@ -11463,11 +12791,11 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos </message> <message> <source>&Escaped Pattern:</source> - <translation>&Zabezpieczony wzorzec:</translation> + <translation type="obsolete">&Zabezpieczony wzorzec:</translation> </message> <message> <source>&Pattern Syntax:</source> - <translation>SkÅ‚adnia &wzorca:</translation> + <translation type="obsolete">SkÅ‚adnia &wzorca:</translation> </message> <message> <source>&Text:</source> @@ -11475,7 +12803,7 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos </message> <message> <source>Case &Sensitive</source> - <translation>UwzglÄ™dniaj &wielkość liter</translation> + <translation type="obsolete">UwzglÄ™dniaj &wielkość liter</translation> </message> <message> <source>&Minimal</source> @@ -11483,19 +12811,19 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos </message> <message> <source>Index of Match:</source> - <translation>Indeks dopasowania:</translation> + <translation type="obsolete">Indeks dopasowania:</translation> </message> <message> <source>Matched Length:</source> - <translation>Dopasowana dÅ‚ugość:</translation> + <translation type="obsolete">Dopasowana dÅ‚ugość:</translation> </message> <message> <source>Regular expression v1</source> - <translation>Wyrażenie regularne v1</translation> + <translation type="obsolete">Wyrażenie regularne v1</translation> </message> <message> <source>Regular expression v2</source> - <translation>Wyrażenie regularne v2</translation> + <translation type="obsolete">Wyrażenie regularne v2</translation> </message> <message> <source>Wildcard</source> @@ -11503,6 +12831,38 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos </message> <message> <source>Fixed string</source> + <translation type="obsolete">StaÅ‚y ciÄ…g</translation> + </message> + <message> + <source>&Escaped pattern:</source> + <translation>&Zabezpieczony wzorzec:</translation> + </message> + <message> + <source>&Pattern syntax:</source> + <translation>SkÅ‚adnia &wzorca:</translation> + </message> + <message> + <source>Case &sensitive</source> + <translation>UwzglÄ™dniaj &wielkość liter</translation> + </message> + <message> + <source>Index of match:</source> + <translation>Indeks dopasowania:</translation> + </message> + <message> + <source>Matched length:</source> + <translation>Dopasowana dÅ‚ugość:</translation> + </message> + <message> + <source>Regular Expression v1</source> + <translation>Wyrażenie regularne v1</translation> + </message> + <message> + <source>Regular Expression v2</source> + <translation>Wyrażenie regularne v2</translation> + </message> + <message> + <source>Fixed String</source> <translation>StaÅ‚y ciÄ…g</translation> </message> <message> @@ -11518,20 +12878,36 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos <translation>Wyrażenie regularne</translation> </message> <message> - <source>Enter pattern from code...</source> + <source>Enter Pattern from Code...</source> <translation>Wprowadź wzorzec z kodu...</translation> </message> <message> - <source>Clear patterns</source> + <source>Clear Patterns</source> <translation>Wyczyść wzorce</translation> </message> + <message> + <source>Clear Text</source> + <translation>Wyczyść tekst</translation> + </message> + <message> + <source>Enter Pattern from Code</source> + <translation>Wprowadź wzorzec z kodu</translation> + </message> + <message> + <source>Enter pattern from code...</source> + <translation type="obsolete">Wprowadź wzorzec z kodu...</translation> + </message> + <message> + <source>Clear patterns</source> + <translation type="obsolete">Wyczyść wzorce</translation> + </message> <message> <source>Clear texts</source> - <translation>Wyczyść teksty</translation> + <translation type="obsolete">Wyczyść teksty</translation> </message> <message> <source>Enter pattern from code</source> - <translation>Wprowadź wzorzec z kodu</translation> + <translation type="obsolete">Wprowadź wzorzec z kodu</translation> </message> <message> <source>Pattern</source> @@ -11820,7 +13196,7 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos <message> <source>Executing in %1: %2 %3 </source> - <translation>Wykonywanie w %1: %2 %3 + <translation type="obsolete">Wykonywanie w %1: %2 %3 </translation> </message> <message> @@ -11830,24 +13206,24 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos <message> <source>Executing: %1 %2 </source> - <translation>Wykonywanie: %1 %2 + <translation type="obsolete">Wykonywanie: %1 %2 </translation> </message> <message> <source>The process terminated with exit code %1.</source> - <translation>Proces zakoÅ„czyÅ‚ siÄ™ kodem wyjÅ›ciowym %1.</translation> + <translation type="obsolete">Proces zakoÅ„czyÅ‚ siÄ™ kodem wyjÅ›ciowym %1.</translation> </message> <message> <source>The process terminated abnormally.</source> - <translation>Proces niepoprawnie zakoÅ„czony.</translation> + <translation type="obsolete">Proces niepoprawnie zakoÅ„czony.</translation> </message> <message> <source>Could not start subversion '%1'. Please check your settings in the preferences.</source> - <translation>Nie można uruchomić subversion "%1". Sprawdź stosowne ustawienia.</translation> + <translation type="obsolete">Nie można uruchomić subversion "%1". Sprawdź stosowne ustawienia.</translation> </message> <message> <source>Subversion did not respond within timeout limit (%1 ms).</source> - <translation>Subversion nie odpowiedziaÅ‚ w okreÅ›lonym czasie (%1 ms).</translation> + <translation type="obsolete">Subversion nie odpowiedziaÅ‚ w okreÅ›lonym czasie (%1 ms).</translation> </message> </context> <context> @@ -11869,7 +13245,7 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos </message> <message> <source>Use regular e&xpressions</source> - <translation>Używaj wyrażeÅ„ &regularnych</translation> + <translation type="obsolete">Używaj wyrażeÅ„ &regularnych</translation> </message> </context> <context> @@ -11885,6 +13261,10 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos </context> <context> <name>TextEditor::BaseTextEditor</name> + <message> + <source>CTRL+D</source> + <translation>Ctrl+D</translation> + </message> <message> <source>Print Document</source> <translation>Wydruk dokumentu</translation> @@ -11897,6 +13277,10 @@ WstÄ™pnie wybiera wersjÄ™ desktopowÄ… Qt do budowania aplikacji (jeÅ›li jest dos <source>Select Encoding</source> <translation>Wybierz kodowanie</translation> </message> + <message> + <source>The text is too large to be displayed (%1 MB).</source> + <translation>Tekst jest zbyt obszerny aby mógÅ‚ zostać wyÅ›wietlony (%1 MB).</translation> + </message> </context> <context> <name>TextEditor::BaseTextEditorEditable</name> @@ -12029,6 +13413,10 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> </message> <message> <source>Line in current document</source> + <translation type="obsolete">Linia w bieżącym dokumencie</translation> + </message> + <message> + <source>Line in Current Document</source> <translation>Linia w bieżącym dokumencie</translation> </message> </context> @@ -12112,7 +13500,7 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> </message> <message> <source>Collapse</source> - <translation>ZwiÅ„</translation> + <translation type="obsolete">ZwiÅ„</translation> </message> <message> <source>Ctrl+<</source> @@ -12120,7 +13508,7 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> </message> <message> <source>Expand</source> - <translation>RozwiÅ„</translation> + <translation type="obsolete">RozwiÅ„</translation> </message> <message> <source>Ctrl+></source> @@ -12128,7 +13516,7 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> </message> <message> <source>(Un)&Collapse All</source> - <translation>&ZwiÅ„ / rozwiÅ„ wszystko</translation> + <translation type="obsolete">&ZwiÅ„ / rozwiÅ„ wszystko</translation> </message> <message> <source>Increase Font Size</source> @@ -12174,6 +13562,18 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> <source>Ctrl+[</source> <translation>Ctrl+[</translation> </message> + <message> + <source>Fold</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unfold</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>(Un)&Fold All</source> + <translation type="unfinished"></translation> + </message> <message> <source>Ctrl+]</source> <translation>Ctrl+]</translation> @@ -12238,6 +13638,22 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> <source>Ctrl+J</source> <translation>Ctrl+J</translation> </message> + <message> + <source>Insert Line Above Current Line</source> + <translation>Wstaw liniÄ™ ponad bieżącÄ… liniÄ…</translation> + </message> + <message> + <source>Ctrl+Shift+Return</source> + <translation>Ctrl+Shift+Return</translation> + </message> + <message> + <source>Insert Line Below Current Line</source> + <translation>Wstaw liniÄ™ pod bieżącÄ… liniÄ…</translation> + </message> + <message> + <source>Ctrl+Return</source> + <translation>Ctrl+Return</translation> + </message> <message> <source>Goto Line Start</source> <translation>Przejdź do poczÄ…tku linii</translation> @@ -12404,6 +13820,22 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> <source>Type</source> <translation>Typ</translation> </message> + <message> + <source>Local</source> + <translation>Zmienna lokalna</translation> + </message> + <message> + <source>Field</source> + <translation>Pole</translation> + </message> + <message> + <source>Static</source> + <translation>Statyczna</translation> + </message> + <message> + <source>Virtual Method</source> + <translation>Metoda wirtualna</translation> + </message> <message> <source>Keyword</source> <translation>SÅ‚owo kluczowe</translation> @@ -12612,16 +14044,24 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> <source>Version Control</source> <translation>System kontroli wersji</translation> </message> + <message> + <source>Executing: %1 %2 +</source> + <translation>Wykonywanie: %1 %2 +</translation> + </message> + <message> + <source>Executing in %1: %2 %3 +</source> + <translation>Wykonywanie w %1: %2 %3 +</translation> + </message> </context> <context> <name>VCSBase::VCSBaseSubmitEditor</name> - <message> - <source>Check message</source> - <translation type="unfinished"></translation> - </message> <message> <source>Insert name...</source> - <translation>Wstaw nazwÄ™...</translation> + <translation type="obsolete">Wstaw nazwÄ™...</translation> </message> <message> <source>Prompt to submit</source> @@ -12629,7 +14069,19 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> </message> <message> <source>Submit Message Check failed</source> - <translation>BÅ‚Ä…d sprawdzania opisu zmiany</translation> + <translation type="obsolete">BÅ‚Ä…d sprawdzania opisu zmiany</translation> + </message> + <message> + <source>Check Message</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Insert Name...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Submit Message Check Failed</source> + <translation type="unfinished"></translation> </message> <message> <source>Executing %1</source> @@ -12712,9 +14164,13 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> <source>Remove</source> <translation>UsuÅ„</translation> </message> + <message> + <source>Deleting a folder also removes its content.<br>Do you want to continue?</source> + <translation>UsuniÄ™cie katalogu usuwa również jego zawartość.<br>Czy chcesz kontynuować?</translation> + </message> <message> <source>You are going to delete a Folder which will also<br>remove its content. Are you sure you would like to continue?</source> - <translation>Zamierzasz usunąć katalog a to spowoduje usuniÄ™cie<br>jego zawartoÅ›ci. JesteÅ› pewien że chcesz kontynuować?</translation> + <translation type="obsolete">Zamierzasz usunąć katalog a to spowoduje usuniÄ™cie<br>jego zawartoÅ›ci. JesteÅ› pewien że chcesz kontynuować?</translation> </message> <message> <source>New Folder</source> @@ -12776,6 +14232,18 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> <source>Skip</source> <translation>PomiÅ„</translation> </message> + <message> + <source>Choose Copy Location</source> + <translation>Wybierz docelowe poÅ‚ożenie kopii</translation> + </message> + <message> + <source>Overwriting Failed</source> + <translation>BÅ‚Ä…d nadpisania</translation> + </message> + <message> + <source>Copying Failed</source> + <translation>BÅ‚Ä…d kopiowania</translation> + </message> <message> <source>Abort</source> <translation>Przerwij</translation> @@ -12790,11 +14258,11 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> </message> <message> <source>Choose copy location</source> - <translation>Wybierz docelowe poÅ‚ożenie kopii</translation> + <translation type="obsolete">Wybierz docelowe poÅ‚ożenie kopii</translation> </message> <message> <source>Overwrite failed</source> - <translation>Nie można nadpisać</translation> + <translation type="obsolete">Nie można nadpisać</translation> </message> <message> <source>Could not overwrite file %1.</source> @@ -12802,7 +14270,7 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> </message> <message> <source>Copying failed</source> - <translation>BÅ‚Ä…d kopiowania</translation> + <translation type="obsolete">BÅ‚Ä…d kopiowania</translation> </message> <message> <source>Could not copy the file to %1.</source> @@ -12836,9 +14304,17 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> <translation>UsuÅ„ element</translation> </message> <message> - <source>Open file</source> + <source>Open File</source> <translation>Otwórz plik</translation> </message> + <message> + <source>Input prefix:</source> + <translation>Wprowadź przedrostek:</translation> + </message> + <message> + <source>Open file</source> + <translation type="obsolete">Otwórz plik</translation> + </message> <message> <source>All files (*)</source> <translation>Wszystkie pliki (*)</translation> @@ -12849,7 +14325,7 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> </message> <message> <source>Input Prefix:</source> - <translation>Wprowadź przedrostek:</translation> + <translation type="obsolete">Wprowadź przedrostek:</translation> </message> <message> <source>Change Language</source> @@ -13162,6 +14638,10 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> <source>Subversion submit template</source> <translation type="unfinished"></translation> </message> + <message> + <source>Qt Creator task list file</source> + <translation type="unfinished"></translation> + </message> <message> <source>Plain text document</source> <translation>Dokument tekstowy</translation> @@ -13170,6 +14650,14 @@ NastÄ™pujÄ…ce kodowania bÄ™dÄ… najprawdopodobniej pasowaÅ‚y:</translation> <source>XML document</source> <translation>Dokument XML</translation> </message> + <message> + <source>Assembler</source> + <translation>Asembler</translation> + </message> + <message> + <source>Qt Creator Generic Assembler</source> + <translation type="unfinished"></translation> + </message> <message> <source>Differences between files</source> <translation>Różnice pomiÄ™dzy plikami</translation> @@ -13283,7 +14771,7 @@ aktywny tylko po wpisaniu przedrostka</translation> <name>Debugger::Internal::TermGdbAdapter</name> <message> <source>Debugger Error</source> - <translation type="obsolete">BÅ‚Ä…d debuggera</translation> + <translation>BÅ‚Ä…d debuggera</translation> </message> </context> <context> @@ -13321,6 +14809,10 @@ aktywny tylko po wpisaniu przedrostka</translation> <name>Locator::Internal::FileSystemFilter</name> <message> <source>Files in file system</source> + <translation type="obsolete">Pliki w systemie plików</translation> + </message> + <message> + <source>Files in File System</source> <translation>Pliki w systemie plików</translation> </message> </context> @@ -13385,6 +14877,10 @@ aktywny tylko po wpisaniu przedrostka</translation> <name>Locator::Internal::OpenDocumentsFilter</name> <message> <source>Open documents</source> + <translation type="obsolete">Otwarte dokumenty</translation> + </message> + <message> + <source>Open Documents</source> <translation>Otwarte dokumenty</translation> </message> </context> @@ -13640,7 +15136,7 @@ aktywny tylko po wpisaniu przedrostka</translation> </message> <message> <source>Delete all...</source> - <translation>UsuÅ„ wszystkie...</translation> + <translation type="obsolete">UsuÅ„ wszystkie...</translation> </message> <message> <source>Delete...</source> @@ -13657,7 +15153,7 @@ aktywny tylko po wpisaniu przedrostka</translation> <message> <source>Restore to branch...</source> <extracomment>Restore a git stash to new branch to be created</extracomment> - <translation>Przywróć do gaÅ‚Ä™zi...</translation> + <translation type="obsolete">Przywróć do gaÅ‚Ä™zi...</translation> </message> <message> <source>Refresh</source> @@ -13673,7 +15169,7 @@ aktywny tylko po wpisaniu przedrostka</translation> </message> <message> <source>Delete stashes</source> - <translation>UsuÅ„ odÅ‚ożone zmiany</translation> + <translation type="obsolete">UsuÅ„ odÅ‚ożone zmiany</translation> </message> <message> <source>Do you want to delete all stashes?</source> @@ -13689,6 +15185,23 @@ aktywny tylko po wpisaniu przedrostka</translation> </message> <message> <source>Repository modified</source> + <translation type="obsolete">SkÅ‚adnica zmodyfikowana</translation> + </message> + <message> + <source>Delete All...</source> + <translation>UsuÅ„ wszystkie...</translation> + </message> + <message> + <source>Restore to Branch...</source> + <extracomment>Restore a git stash to new branch to be created</extracomment> + <translation>Przywróć do gaÅ‚Ä™zi...</translation> + </message> + <message> + <source>Delete Stashes</source> + <translation>UsuÅ„ odÅ‚ożone zmiany</translation> + </message> + <message> + <source>Repository Modified</source> <translation>SkÅ‚adnica zmodyfikowana</translation> </message> <message> @@ -13866,11 +15379,11 @@ Możesz odÅ‚ożyć zmiany lub je porzucić.</translation> <name>ProjectExplorer::Internal::AddTargetDialog</name> <message> <source>Add target</source> - <translation>Dodaj produkt docelowy</translation> + <translation type="obsolete">Dodaj produkt docelowy</translation> </message> <message> <source>Target:</source> - <translation>Produkt docelowy:</translation> + <translation type="obsolete">Produkt docelowy:</translation> </message> </context> <context> @@ -13899,11 +15412,11 @@ Możesz odÅ‚ożyć zmiany lub je porzucić.</translation> </message> <message> <source>Id:</source> - <translation>Identyfikator:</translation> + <translation type="obsolete">Identyfikator:</translation> </message> <message> <source>Property Name:</source> - <translation>Nazwa wÅ‚aÅ›ciwoÅ›ci:</translation> + <translation type="obsolete">Nazwa wÅ‚aÅ›ciwoÅ›ci:</translation> </message> <message> <source>Animation</source> @@ -13945,6 +15458,14 @@ Możesz odÅ‚ożyć zmiany lub je porzucić.</translation> <source>Damping:</source> <translation>TÅ‚umienie:</translation> </message> + <message> + <source>ID:</source> + <translation>Identyfikator:</translation> + </message> + <message> + <source>Property name:</source> + <translation>Nazwa wÅ‚aÅ›ciwoÅ›ci:</translation> + </message> </context> <context> <name>GradientDialog</name> @@ -14574,15 +16095,15 @@ Możesz odÅ‚ożyć zmiany lub je porzucić.</translation> </message> <message> <source>Ports:</source> - <translation>Porty:</translation> + <translation type="obsolete">Porty:</translation> </message> <message> <source>SSH:</source> - <translation>SSH:</translation> + <translation type="obsolete">SSH:</translation> </message> <message> <source>Gdb server:</source> - <translation>Server Gdb:</translation> + <translation type="obsolete">Server Gdb:</translation> </message> <message> <source>s</source> @@ -14616,12 +16137,32 @@ Możesz odÅ‚ożyć zmiany lub je porzucić.</translation> <source>Username:</source> <translation>Nazwa użytkownika:</translation> </message> + <message> + <source>SSH port:</source> + <translation>Port SSH:</translation> + </message> + <message> + <source>Free ports:</source> + <translation>Wolne porty:</translation> + </message> + <message> + <source>You can enter lists and ranges like this: 1024,1026-1028,1030</source> + <translation>Można wprowadzać listy i zakresy, np.: 1024,1026-1028,1030</translation> + </message> + <message> + <source>TextLabel</source> + <translation>Etykieta</translation> + </message> + <message> + <source>Show password</source> + <translation>Pokaż hasÅ‚o</translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::S60CreatePackageStepWidget</name> <message> <source>Form</source> - <translation>Formularz</translation> + <translation type="obsolete">Formularz</translation> </message> <message> <source>Self-signed certificate</source> @@ -14639,6 +16180,18 @@ Możesz odÅ‚ożyć zmiany lub je porzucić.</translation> <source>Key file:</source> <translation>Plik z kluczem:</translation> </message> + <message> + <source>Create Smart Installer package</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Resets saved passphrases for all used keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reset Passphrases</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::TestWizardPage</name> @@ -14850,15 +16403,15 @@ Możesz odÅ‚ożyć zmiany lub je porzucić.</translation> <name>QmlJS::Link</name> <message> <source>could not find file or directory</source> - <translation>nie można odnaleźć pliku lub katalogu</translation> + <translation type="obsolete">nie można odnaleźć pliku lub katalogu</translation> </message> <message> <source>expected two numbers separated by a dot</source> - <translation>oczekiwano dwóch liczb oddzielonych kropkÄ…</translation> + <translation type="obsolete">oczekiwano dwóch liczb oddzielonych kropkÄ…</translation> </message> <message> <source>package import requires a version number</source> - <translation>import pakietu wymaga podania numeru wersji</translation> + <translation type="obsolete">import pakietu wymaga podania numeru wersji</translation> </message> <message> <source>package not found</source> @@ -14969,11 +16522,15 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <name>BINEditor::Internal::ImageViewerFactory</name> <message> <source>Image Viewer</source> - <translation>PrzeglÄ…darka plików graficznych</translation> + <translation type="obsolete">PrzeglÄ…darka plików graficznych</translation> </message> </context> <context> <name>CMakeProjectManager::Internal::CMakeRunConfiguration</name> + <message> + <source>Run CMake target</source> + <translation type="unfinished"></translation> + </message> <message> <source>Clean Environment</source> <translation>Czyste Å›rodowisko</translation> @@ -15004,7 +16561,12 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <message> <source>Make</source> <comment>CMakeProjectManager::MakeStep display name.</comment> - <translation>Make</translation> + <translation type="obsolete">Make</translation> + </message> + <message> + <source>Make</source> + <extracomment>Default display name for the cmake make step.</extracomment> + <translation type="unfinished">Make</translation> </message> </context> <context> @@ -15036,6 +16598,10 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <source>Environment</source> <translation>Åšrodowisko</translation> </message> + <message> + <source>All Files (*)</source> + <translation>Wszystkie pliki (*)</translation> + </message> </context> <context> <name>Core::DesignMode</name> @@ -15213,7 +16779,11 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <name>Debugger::Internal::CdbOptionsPage</name> <message> <source>Cdb</source> - <translation>Cdb</translation> + <translation type="obsolete">Cdb</translation> + </message> + <message> + <source>CDB</source> + <translation>CDB</translation> </message> </context> <context> @@ -15261,50 +16831,66 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <name>Debugger::DebuggerUISwitcher</name> <message> <source>&Languages</source> - <translation>&JÄ™zyki</translation> + <translation type="obsolete">&JÄ™zyki</translation> + </message> + <message> + <source>Memory...</source> + <translation>Pamięć...</translation> </message> <message> <source>Alt+L</source> - <translation>Alt+L</translation> + <translation type="obsolete">Alt+L</translation> + </message> + <message> + <source>Debugger Toolbar</source> + <translation type="unfinished"></translation> </message> <message> <source>Language</source> - <translation>JÄ™zyk</translation> + <translation type="obsolete">JÄ™zyk</translation> </message> </context> <context> <name>Debugger::Internal::SnapshotHandler</name> <message> <source>Function:</source> - <translation>Funkcja:</translation> + <translation type="obsolete">Funkcja:</translation> </message> <message> <source>File:</source> - <translation>Plik:</translation> + <translation type="obsolete">Plik:</translation> </message> <message> <source>Date:</source> - <translation>Data:</translation> + <translation type="obsolete">Data:</translation> </message> <message> <source>...</source> - <translation>...</translation> + <translation type="obsolete">...</translation> </message> <message> <source><More></source> - <translation><WiÄ™cej></translation> + <translation type="obsolete"><WiÄ™cej></translation> </message> <message> <source>Function</source> - <translation>Funkcja</translation> + <translation type="obsolete">Funkcja</translation> </message> <message> <source>Date</source> - <translation>Data</translation> + <translation type="obsolete">Data</translation> </message> <message> <source>Location</source> - <translation>PoÅ‚ożenie</translation> + <translation type="obsolete">PoÅ‚ożenie</translation> + </message> + <message> + <source>Name</source> + <translation>Nazwa</translation> + </message> + <message> + <source>File</source> + <translation>Plik</translation> </message> </context> <context> @@ -15313,6 +16899,14 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <source>Snapshots</source> <translation>Zrzuty</translation> </message> + <message> + <source>Create Snapshot</source> + <translation>Utwórz zrzut</translation> + </message> + <message> + <source>Remove Snapshot</source> + <translation>UsuÅ„ zrzut</translation> + </message> <message> <source>Adjust Column Widths to Contents</source> <translation>Wyrównaj szerokoÅ›ci kolumn do ich zawartoÅ›ci</translation> @@ -15377,6 +16971,10 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <source>Open Advanced Find...</source> <translation>Otwórz zaawansowane przeszukiwanie...</translation> </message> + <message> + <source>Advanced...</source> + <translation>Zaawansowane...</translation> + </message> <message> <source>Ctrl+Shift+F</source> <translation>Ctrl+Shift+F</translation> @@ -15393,7 +16991,7 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <name>Git::Internal::RemoteBranchModel</name> <message> <source>(no branch)</source> - <translation>(brak gaÅ‚Ä™zi)</translation> + <translation type="obsolete">(brak gaÅ‚Ä™zi)</translation> </message> </context> <context> @@ -15416,6 +17014,10 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <source>Blame %1</source> <translation type="unfinished"></translation> </message> + <message> + <source>Blame parent revision %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Help</name> @@ -15553,13 +17155,17 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <source>Annotate %1</source> <translation>DoÅ‚Ä…cz adnotacjÄ™ do %1</translation> </message> + <message> + <source>Annotate parent revision %1</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Mercurial::Internal::MercurialJobRunner</name> <message> <source>Executing: %1 %2 </source> - <translation>Wykonywanie: %1 %2 + <translation type="obsolete">Wykonywanie: %1 %2 </translation> </message> <message> @@ -15751,12 +17357,16 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> </message> <message> <source>Close commit editor</source> - <translation>Zamknij edytor zmiany</translation> + <translation type="obsolete">Zamknij edytor zmiany</translation> </message> <message> <source>Do you want to commit the changes?</source> <translation type="unfinished"></translation> </message> + <message> + <source>Close Commit Editor</source> + <translation type="unfinished"></translation> + </message> <message> <source>Message check failed. Do you want to proceed?</source> <translation type="unfinished"></translation> @@ -15826,6 +17436,16 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> </context> <context> <name>ProjectExplorer::BuildConfiguration</name> + <message> + <source>Build</source> + <extracomment>Display name of the build build step list. Used as part of the labels in the project window.</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Clean</source> + <extracomment>Display name of the clean build step list. Used as part of the labels in the project window.</extracomment> + <translation type="unfinished"></translation> + </message> <message> <source>System Environment</source> <translation>Åšrodowisko systemowe</translation> @@ -15901,7 +17521,63 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> </message> <message> <source>Example Object Class-name:</source> - <translation>PrzykÅ‚adowa nazwa klasy obiektu:</translation> + <translation type="obsolete">PrzykÅ‚adowa nazwa klasy obiektu:</translation> + </message> + <message> + <source>Object Class-name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The project name and the object class-name cannot be the same.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Creates a custom Qt Creator plugin.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Qt Creator plugin</source> + <translation>Wtyczka Qt Creatora</translation> + </message> + <message> + <source>Other Project</source> + <translation>Inny projekt</translation> + </message> + <message> + <source>Plugin Information</source> + <translation>Informacje o wtyczce</translation> + </message> + <message> + <source>Plugin name:</source> + <translation>Nazwa wtyczki:</translation> + </message> + <message> + <source>Vendor name:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copyright:</source> + <translation>Prawa autorskie:</translation> + </message> + <message> + <source>License:</source> + <translation>Licencja:</translation> + </message> + <message> + <source>Description:</source> + <translation>Opis:</translation> + </message> + <message> + <source>Url:</source> + <translation>Url:</translation> + </message> + <message> + <source>Qt Creator sources:</source> + <translation>ŹródÅ‚a Qt Creatora:</translation> + </message> + <message> + <source>Qt Creator build:</source> + <translation>Wersja Qt Creatora:</translation> </message> </context> <context> @@ -15961,7 +17637,7 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> </message> <message> <source>Open parent folder</source> - <translation>Otwórz katalog wyżej</translation> + <translation type="obsolete">Otwórz katalog wyżej</translation> </message> <message> <source>Open "%1"</source> @@ -15973,11 +17649,11 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> </message> <message> <source>Choose folder...</source> - <translation>Wybierz katalog...</translation> + <translation type="obsolete">Wybierz katalog...</translation> </message> <message> <source>Choose folder</source> - <translation>Wybierz katalog</translation> + <translation type="obsolete">Wybierz katalog</translation> </message> <message> <source>Show in Explorer...</source> @@ -15989,14 +17665,34 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> </message> <message> <source>Show containing folder...</source> + <translation type="obsolete">Pokaż zawierajÄ…cy katalog...</translation> + </message> + <message> + <source>Open Terminal here...</source> + <translation type="obsolete">Otwórz tutaj terminal...</translation> + </message> + <message> + <source>Open Parent Folder</source> + <translation>Otwórz katalog wyżej</translation> + </message> + <message> + <source>Choose Folder...</source> + <translation>Wybierz katalog...</translation> + </message> + <message> + <source>Choose Folder</source> + <translation>Wybierz katalog</translation> + </message> + <message> + <source>Show Containing Folder...</source> <translation>Pokaż zawierajÄ…cy katalog...</translation> </message> <message> - <source>Open Command Prompt here...</source> + <source>Open Command Prompt Here...</source> <translation type="unfinished"></translation> </message> <message> - <source>Open Terminal here...</source> + <source>Open Terminal Here...</source> <translation>Otwórz tutaj terminal...</translation> </message> <message> @@ -16028,9 +17724,13 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <translation>Ustawienia...</translation> </message> <message> - <source>Launching Windows Explorer failed</source> + <source>Launching Windows Explorer Failed</source> <translation>Nie można uruchomić "Windows Explorer"</translation> </message> + <message> + <source>Launching Windows Explorer failed</source> + <translation type="obsolete">Nie można uruchomić "Windows Explorer"</translation> + </message> <message> <source>Could not find explorer.exe in path to launch Windows Explorer.</source> <translation>Nie można odnaleźć explorer.exe w Å›cieżce w celu uruchomienia "Windows Explorer".</translation> @@ -16150,23 +17850,23 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <name>ProjectExplorer::TaskWindow</name> <message> <source>Build Issues</source> - <translation>Problemy podczas budowania</translation> + <translation type="obsolete">Problemy podczas budowania</translation> </message> <message> <source>&Copy</source> - <translation>S&kopiuj</translation> + <translation type="obsolete">S&kopiuj</translation> </message> <message> <source>&Annotate</source> - <translation>DoÅ‚Ä…cz &adnotacjÄ™</translation> + <translation type="obsolete">DoÅ‚Ä…cz &adnotacjÄ™</translation> </message> <message> <source>Show Warnings</source> - <translation>Pokazuj ostrzeżenia</translation> + <translation type="obsolete">Pokazuj ostrzeżenia</translation> </message> <message> <source>Filter by categories</source> - <translation>Przefiltruj wedÅ‚ug kategorii</translation> + <translation type="obsolete">Przefiltruj wedÅ‚ug kategorii</translation> </message> </context> <context> @@ -16250,10 +17950,18 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <name>QmlDesigner::XUIFileDialog</name> <message> <source>Open file</source> - <translation>Otwórz plik</translation> + <translation type="obsolete">Otwórz plik</translation> </message> <message> <source>Save file</source> + <translation type="obsolete">Zachowaj plik</translation> + </message> + <message> + <source>Open File</source> + <translation>Otwórz plik</translation> + </message> + <message> + <source>Save File</source> <translation>Zachowaj plik</translation> </message> <message> @@ -16300,6 +18008,10 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <name>QmlDesigner::PluginManager</name> <message> <source>About plugins</source> + <translation type="obsolete">Informacje o wtyczkach</translation> + </message> + <message> + <source>About Plugins</source> <translation>Informacje o wtyczkach</translation> </message> </context> @@ -16623,66 +18335,52 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <name>Qml::Internal::QLineGraph</name> <message> <source>Frame rate</source> - <translation>Klatki na sekundÄ™</translation> + <translation type="obsolete">Klatki na sekundÄ™</translation> </message> </context> <context> <name>Qml::Internal::GraphWindow</name> <message> <source>Total time elapsed (ms)</source> - <translation>ÅÄ…czny czas który upÅ‚ynÄ…Å‚</translation> + <translation type="obsolete">ÅÄ…czny czas który upÅ‚ynÄ…Å‚</translation> </message> </context> <context> <name>Qml::Internal::CanvasFrameRate</name> <message> <source>Resolution:</source> - <translation>Rozdzielczość:</translation> + <translation type="obsolete">Rozdzielczość:</translation> </message> <message> <source>Clear</source> - <translation>Wyczyść</translation> + <translation type="obsolete">Wyczyść</translation> </message> <message> <source>New Graph</source> - <translation>Nowy graf</translation> + <translation type="obsolete">Nowy graf</translation> </message> <message> <source>Enabled</source> - <translation>WÅ‚Ä…czony</translation> + <translation type="obsolete">WÅ‚Ä…czony</translation> </message> </context> <context> <name>Qml::Internal::ExpressionQueryWidget</name> <message> <source>Write and evaluate QtScript expressions.</source> - <translation>Wpisz i wykonaj polecenia QtScript.</translation> + <translation type="obsolete">Wpisz i wykonaj polecenia QtScript.</translation> </message> <message> <source>Clear Output</source> - <translation>Wyczyść wyjÅ›cie</translation> + <translation type="obsolete">Wyczyść wyjÅ›cie</translation> </message> <message> <source><Type expression to evaluate></source> - <translation><Wpisz wyrażenie do wykonania></translation> - </message> - <message> - <source>Script Console -</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Expression queries</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Expression queries (using context for %1)</source> - <comment>Selected object</comment> - <translation type="unfinished"></translation> + <translation type="obsolete"><Wpisz wyrażenie do wykonania></translation> </message> <message numerus="yes"> <source><%n items></source> - <translation> + <translation type="obsolete"> <numerusform><%n element></numerusform> <numerusform><%n elementy></numerusform> <numerusform><%n elementów></numerusform> @@ -16693,35 +18391,31 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> <name>Qml::Internal::ObjectPropertiesView</name> <message> <source>Name</source> - <translation>Nazwa</translation> + <translation type="obsolete">Nazwa</translation> </message> <message> <source>Value</source> - <translation>Wartość</translation> + <translation type="obsolete">Wartość</translation> </message> <message> <source>Type</source> - <translation>Typ</translation> + <translation type="obsolete">Typ</translation> </message> <message> <source>&Watch expression</source> - <translation>&Obserwuj wyrażenie</translation> + <translation type="obsolete">&Obserwuj wyrażenie</translation> </message> <message> <source>&Remove watch</source> - <translation>&UsuÅ„ obserwowanie wyrażenia</translation> - </message> - <message> - <source>Show &unwatchable properties</source> - <translation type="unfinished"></translation> + <translation type="obsolete">&UsuÅ„ obserwowanie wyrażenia</translation> </message> <message> <source>&Group by item type</source> - <translation>&Grupuj wedÅ‚ug typów elementów</translation> + <translation type="obsolete">&Grupuj wedÅ‚ug typów elementów</translation> </message> <message numerus="yes"> <source><%n items></source> - <translation> + <translation type="obsolete"> <numerusform><%n element></numerusform> <numerusform><%n elementy></numerusform> <numerusform><%n elementów></numerusform> @@ -16729,172 +18423,143 @@ Wartość dziesiÄ™tna ze znakiem (big endian): %4</translation> </message> <message> <source>Watch expression '%1'</source> - <translation>Obserwuj wyrażenie "%1"</translation> - </message> - <message> - <source>Hide unwatchable properties</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Show unwatchable properties</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Obserwuj wyrażenie "%1"</translation> </message> </context> <context> <name>Qml::Internal::ObjectTree</name> <message> <source>Add watch expression...</source> - <translation>Dodaj wyrażenie do obserwowania...</translation> - </message> - <message> - <source>Show uninspectable items</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Dodaj wyrażenie do obserwowania...</translation> </message> <message> <source>Go to file</source> - <translation>Przejdź do pliku</translation> + <translation type="obsolete">Przejdź do pliku</translation> </message> <message> <source>Watch expression</source> - <translation>Obserwuj wyrażenie</translation> + <translation type="obsolete">Obserwuj wyrażenie</translation> </message> <message> <source>Expression:</source> - <translation>Wyrażenie:</translation> + <translation type="obsolete">Wyrażenie:</translation> </message> </context> <context> <name>Qml::Internal::WatchTableModel</name> <message> <source>Name</source> - <translation>Nazwa</translation> + <translation type="obsolete">Nazwa</translation> </message> <message> <source>Value</source> - <translation>Wartość</translation> + <translation type="obsolete">Wartość</translation> </message> </context> <context> <name>Qml::Internal::WatchTableView</name> <message> <source>Stop watching</source> - <translation>Zatrzymaj obserwowanie</translation> + <translation type="obsolete">Zatrzymaj obserwowanie</translation> </message> </context> <context> <name>Qml::InspectorOutputWidget</name> <message> <source>Output</source> - <translation>Komunikaty</translation> + <translation type="obsolete">Komunikaty</translation> </message> <message> <source>Clear</source> - <translation>Wyczyść</translation> + <translation type="obsolete">Wyczyść</translation> </message> </context> <context> <name>Qml::QmlInspector</name> <message> <source>Failed to connect to debugger</source> - <translation>Nie można poÅ‚Ä…czyć siÄ™ z debuggerem</translation> + <translation type="obsolete">Nie można poÅ‚Ä…czyć siÄ™ z debuggerem</translation> </message> <message> <source>Could not connect to debugger server.</source> - <translation>Nie można poÅ‚Ä…czyć siÄ™ z serwerem debuggera.</translation> + <translation type="obsolete">Nie można poÅ‚Ä…czyć siÄ™ z serwerem debuggera.</translation> </message> <message> <source>Invalid project, debugging canceled.</source> - <translation>Niepoprawny projekt, anulowano debugowanie.</translation> + <translation type="obsolete">Niepoprawny projekt, anulowano debugowanie.</translation> </message> <message> <source>Cannot find project run configuration, debugging canceled.</source> - <translation>Nie można odnaleźć konfiguracji uruchamiania, anulowano debugowanie.</translation> + <translation type="obsolete">Nie można odnaleźć konfiguracji uruchamiania, anulowano debugowanie.</translation> </message> <message> <source>[Inspector] set to connect to debug server %1:%2</source> - <translation>[Inspektor] ustawiono server debugowy %1:%2</translation> + <translation type="obsolete">[Inspektor] ustawiono server debugowy %1:%2</translation> </message> <message> <source>[Inspector] disconnected. </source> - <translation>[Inspektor] rozÅ‚Ä…czony. + <translation type="obsolete">[Inspektor] rozÅ‚Ä…czony. </translation> </message> - <message> - <source>[Inspector] resolving host...</source> - <translation type="unfinished"></translation> - </message> <message> <source>[Inspector] connecting to debug server...</source> - <translation>[Inspektor] Å‚Ä…czenie z serwerem debugowym...</translation> + <translation type="obsolete">[Inspektor] Å‚Ä…czenie z serwerem debugowym...</translation> </message> <message> <source>[Inspector] connected. </source> - <translation>[Inspektor] podÅ‚Ä…czony. + <translation type="obsolete">[Inspektor] podÅ‚Ä…czony. </translation> </message> <message> <source>[Inspector] closing...</source> - <translation>[Inspektor] zamykanie... + <translation type="obsolete">[Inspektor] zamykanie... </translation> </message> <message> <source>[Inspector] error: (%1) %2</source> <comment>%1=error code, %2=error message</comment> - <translation>[Inspektor] bÅ‚Ä…d: (%1) %2 + <translation type="obsolete">[Inspektor] bÅ‚Ä…d: (%1) %2 </translation> </message> <message> <source>Start Debugging C++ and QML Simultaneously...</source> - <translation>Rozpocznij jednoczesne debugowanie QML i C++...</translation> + <translation type="obsolete">Rozpocznij jednoczesne debugowanie QML i C++...</translation> </message> <message> <source>No project was found.</source> - <translation>Nie znaleziono żadnego projektu.</translation> + <translation type="obsolete">Nie znaleziono żadnego projektu.</translation> </message> <message> <source>No run configurations were found for the project '%1'.</source> - <translation>Nie znaleziono żadnych konfiguracji uruchamiania dla projektu "%1".</translation> - </message> - <message> - <source>No valid run configuration was found for the project %1. Only locally runnable configurations are supported. -Please check your project settings.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>A valid run control was not registered in Qt Creator for this project run configuration.</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Nie znaleziono żadnych konfiguracji uruchamiania dla projektu "%1".</translation> </message> <message> <source>Debugging failed: could not start C++ debugger.</source> - <translation>BÅ‚Ä…d debugowania: nie można uruchomić debuggera C++.</translation> + <translation type="obsolete">BÅ‚Ä…d debugowania: nie można uruchomić debuggera C++.</translation> </message> <message> <source>QML engine:</source> - <translation>Silnik QML:</translation> + <translation type="obsolete">Silnik QML:</translation> </message> <message> <source>Object Tree</source> - <translation>Drzewo obiektów</translation> + <translation type="obsolete">Drzewo obiektów</translation> </message> <message> <source>Properties and Watchers</source> - <translation>WÅ‚aÅ›ciwoÅ›ci i zmienne obserwowane</translation> - </message> - <message> - <source>Script Console</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Output of the QML inspector, such as information on connecting to the server.</source> - <translation type="unfinished"></translation> + <translation type="obsolete">WÅ‚aÅ›ciwoÅ›ci i zmienne obserwowane</translation> </message> </context> <context> <name>QmlJSEditor::Internal::QmlJSTextEditor</name> + <message> + <source>Show Qt Quick ToolBar</source> + <translation type="unfinished"></translation> + </message> <message> <source>Rename...</source> <translation>ZmieÅ„ nazwÄ™...</translation> @@ -16907,13 +18572,17 @@ Please check your project settings.</source> <source>Unused variable</source> <translation>Nieużywana zmienna</translation> </message> + <message> + <source>Refactoring</source> + <translation type="unfinished"></translation> + </message> <message> <source>Rename id '%1'...</source> <translation>ZmieÅ„ nazwÄ™ identyfikatora "%1"...</translation> </message> <message> <source><Select Symbol></source> - <translation><Wybierz symbol></translation> + <translation type="obsolete"><Wybierz symbol></translation> </message> </context> <context> @@ -16965,17 +18634,34 @@ Please check your project settings.</source> <source>Qt QML File</source> <translation>Plik Qt QML</translation> </message> + <message> + <source>QML</source> + <extracomment>QML sub-menu in the Tools menu</extracomment> + <translation>QML</translation> + </message> + <message> + <source>Find Usages</source> + <translation>Znajdź użycia</translation> + </message> + <message> + <source>Ctrl+Shift+U</source> + <translation>Ctrl+Shift+U</translation> + </message> + <message> + <source>Show Qt Quick Toolbar</source> + <translation type="unfinished"></translation> + </message> <message> <source>Qt Quick</source> - <translation>Qt Quick</translation> + <translation type="obsolete">Qt Quick</translation> </message> <message> <source>&Preview</source> - <translation>&PodglÄ…d</translation> + <translation type="obsolete">&PodglÄ…d</translation> </message> <message> <source>Ctrl+Alt+R</source> - <translation>Ctrl+Alt+R</translation> + <translation type="obsolete">Ctrl+Alt+R</translation> </message> <message> <source>Follow Symbol Under Cursor</source> @@ -16995,6 +18681,13 @@ Please check your project settings.</source> <source>Indexing</source> <translation>Indeksowanie</translation> </message> + <message> + <source>Type dump of QML plugin in %0 failed. +Errors: +%1 +</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>QmlProjectManager::QmlProject</name> @@ -17007,13 +18700,21 @@ Please check your project settings.</source> <name>QmlProjectManager::Internal::QmlProjectApplicationWizardDialog</name> <message> <source>New QML Project</source> - <translation>Nowy projekt QML</translation> + <translation type="obsolete">Nowy projekt QML</translation> </message> <message> <source>This wizard generates a QML application project.</source> - <translation>Ten kreator generuje projekt aplikacji QML.</translation> + <translation type="obsolete">Ten kreator generuje projekt aplikacji QML.</translation> </message> -</context> + <message> + <source>New Qt Quick UI Project</source> + <translation>Nowy Qt Quick UI projekt</translation> + </message> + <message> + <source>This wizard generates a Qt Quick UI project.</source> + <translation>Ten kreator generuje Qt Quick UI projekt.</translation> + </message> +</context> <context> <name>QmlProjectManager::Internal::QmlProjectApplicationWizard</name> <message> @@ -17030,16 +18731,26 @@ Projekty aplikacji QML sÄ… uruchamiane ze Å›rodowiska QML i nie muszÄ… być budo </message> <message> <source>QML Application</source> - <translation>Aplikacja QML</translation> + <translation type="obsolete">Aplikacja QML</translation> </message> <message> <source>Creates a QML application project with a single QML file containing the main view. QML application projects are executed by the Qt QML Viewer and do not need to be built.</source> - <translation>Tworzy projekt aplikacji QML z pojedynczym plikiem QML zawierajÄ…cym główny widok. + <translation type="obsolete">Tworzy projekt aplikacji QML z pojedynczym plikiem QML zawierajÄ…cym główny widok. Projekty aplikacji QML sÄ… uruchamiane przez przeglÄ…darkÄ™ QML i nie muszÄ… być budowane.</translation> </message> + <message> + <source>Qt Quick UI</source> + <translation>Qt Quick UI</translation> + </message> + <message> + <source>Creates a Qt Quick UI project with a single QML file that contains the main view. + +You can review Qt Quick UI projects in the QML Viewer and you need not build them. You do not need to have the development environment installed on your computer to create and run this type of projects.</source> + <translation type="unfinished"></translation> + </message> <message> <source>File generated by QtCreator</source> <comment>qmlproject Template</comment> @@ -17140,25 +18851,41 @@ Projekty aplikacji QML sÄ… uruchamiane przez przeglÄ…darkÄ™ QML i nie muszÄ… by <comment>QMLRunConfiguration display name.</comment> <translation>PrzeglÄ…darka QML</translation> </message> + <message> + <source>Custom QML Viewer:</source> + <translation>WÅ‚asna przeglÄ…darka QML:</translation> + </message> + <message> + <source>Arguments:</source> + <translation>Argumenty:</translation> + </message> + <message> + <source>Debugger:</source> + <translation>Debugger:</translation> + </message> + <message> + <source>Main QML file:</source> + <translation>Główny plik QML:</translation> + </message> <message> <source>QML Viewer</source> - <translation>PrzeglÄ…darka QML</translation> + <translation type="obsolete">PrzeglÄ…darka QML</translation> </message> <message> <source>QML Viewer arguments:</source> - <translation>Argumenty przeglÄ…darki QML:</translation> + <translation type="obsolete">Argumenty przeglÄ…darki QML:</translation> </message> <message> <source>Main QML File:</source> - <translation>Główny plik QML:</translation> + <translation type="obsolete">Główny plik QML:</translation> </message> <message> <source>Debugging Address:</source> - <translation>Adres debugowania:</translation> + <translation type="obsolete">Adres debugowania:</translation> </message> <message> <source>Debugging Port:</source> - <translation>Port debugowania:</translation> + <translation type="obsolete">Port debugowania:</translation> </message> </context> <context> @@ -17206,19 +18933,35 @@ Projekty aplikacji QML sÄ… uruchamiane przez przeglÄ…darkÄ™ QML i nie muszÄ… by <message> <source>Device configuration test failed: %1</source> - <translation>Test konfiguracji urzÄ…dzenia zakoÅ„czony niepowodzeniem: + <translation type="obsolete">Test konfiguracji urzÄ…dzenia zakoÅ„czony niepowodzeniem: %1</translation> </message> + <message> + <source>Could not connect to host: %1</source> + <translation>Nie można poÅ‚Ä…czyć siÄ™ z hostem: %1</translation> + </message> <message> <source> Did you start Qemu?</source> <translation> Czy uruchomiÅ‚eÅ› Qemu?</translation> </message> + <message> + <source>Remote process failed: %1</source> + <translation>Zdalny proces zakoÅ„czony bÅ‚Ä™dem: %1</translation> + </message> <message> <source>Qt version mismatch! Expected Qt on device: 4.6.2 or later.</source> <translation>Niezgodność wersji Qt. Oczekiwano wersji 4.6.2 lub późniejszej dla urzÄ…dzenia.</translation> </message> + <message> + <source>Mad Developer is not installed.<br>You will not be able to deploy to this device.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Device configuration okay.</source> + <translation type="unfinished"></translation> + </message> <message> <source>Close</source> <translation>Zamknij</translation> @@ -17244,7 +18987,7 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> <message> <source>Device configuration successful. </source> - <translation>Konfiguracja urzÄ…dzenia zakoÅ„czona pomyÅ›lnie. + <translation type="obsolete">Konfiguracja urzÄ…dzenia zakoÅ„czona pomyÅ›lnie. </translation> </message> <message> @@ -17260,14 +19003,27 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> <name>Qt4ProjectManager::Internal::MaemoRunConfiguration</name> <message> <source>New Maemo Run Configuration</source> - <translation>Nowa konfiguracja uruchamiania Maemo</translation> + <translation type="obsolete">Nowa konfiguracja uruchamiania Maemo</translation> + </message> + <message> + <source>Run on Maemo device</source> + <extracomment>Maemo run configuration default display name</extracomment> + <translation>Uruchom na urzÄ…dzeniu Maemo</translation> + </message> + <message> + <source>Clean Environment</source> + <translation>Czyste Å›rodowisko</translation> + </message> + <message> + <source>System Environment</source> + <translation>Åšrodowisko systemowe</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::MaemoRunConfigurationWidget</name> <message> <source>Run configuration name:</source> - <translation>Nazwa konfiguracji uruchamiania:</translation> + <translation type="obsolete">Nazwa konfiguracji uruchamiania:</translation> </message> <message> <source><a href="%1">Manage device configurations</a></source> @@ -17281,9 +19037,102 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> <source>Device configuration:</source> <translation>Konfiguracja urzÄ…dzenia:</translation> </message> + <message> + <source>Executable on host:</source> + <translation>Plik wykonywalny na hoÅ›cie:</translation> + </message> + <message> + <source>Executable on device:</source> + <translation>Plik wykonywalny na urzÄ…dzeniu:</translation> + </message> + <message> + <source>C++ only</source> + <translation>Tylko C++</translation> + </message> + <message> + <source>QML only</source> + <translation>Tylko QML</translation> + </message> + <message> + <source>C++ and QML</source> + <translation>C++ i QML</translation> + </message> + <message> + <source>Debugging type:</source> + <translation>Typ debugowania:</translation> + </message> + <message> + <source>Use remote gdb</source> + <translation>Użyj zdalnego gdb</translation> + </message> + <message> + <source>Use remote gdbserver</source> + <translation>Użyj zdalnego gdbserver</translation> + </message> + <message> + <source>Base environment for this run configuration:</source> + <translation>Podstawowe Å›rodowisko dla tej konfiguracji uruchamiania:</translation> + </message> + <message> + <source>Clean Environment</source> + <translation>Czyste Å›rodowisko</translation> + </message> + <message> + <source>System Environment</source> + <translation>Åšrodowisko systemowe</translation> + </message> + <message> + <source>Fetch Device Environment</source> + <translation>Pobierz Å›rodowisko urzÄ…dzenia</translation> + </message> + <message> + <source>Choose directory to mount</source> + <translation>Wybierz katalog do zamontowania</translation> + </message> + <message> + <source><b>Debugging details:</b> Use gdb</source> + <translation><b>Szczegóły debugowania:</b> Użyj gdb</translation> + </message> + <message> + <source><b>Debugging details:</b> Use gdbserver</source> + <translation><b>Szczegóły debugowania:</b> Użyj gdbserver</translation> + </message> + <message> + <source>No local directories to be mounted on the device.</source> + <translation>Brak lokalnych katalogów do zamontowania na urzÄ…dzeniu.</translation> + </message> + <message> + <source>One local directory to be mounted on the device.</source> + <translation>Jeden lokalny katalog do zamontowania na urzÄ…dzeniu.</translation> + </message> + <message numerus="yes"> + <source>%n local directories to be mounted on the device.</source> + <extracomment>Note: Only mountCount>1 will occur here as 0, 1 are handled above.</extracomment> + <translation> + <numerusform>%n lokalny katalog do zamontowania na urzÄ…dzeniu.</numerusform> + <numerusform>%n lokalne katalogi do zamontowania na urzÄ…dzeniu.</numerusform> + <numerusform>%n lokalnych katalogów do zamontowania na urzÄ…dzeniu.</numerusform> + </translation> + </message> + <message numerus="yes"> + <source>WARNING: You want to mount %1 directories, but your device has only %n free ports.<br>You will not be able to run this configuration.</source> + <translation> + <numerusform>Ostrzeżenie: Nie można zamontować %1 katalogów ponieważ urzÄ…dzenie posiada tylko %n wolny port.<br>Nie bÄ™dzie można uruchomić tej configuracji.</numerusform> + <numerusform>Ostrzeżenie: Nie można zamontować %1 katalogów ponieważ urzÄ…dzenie posiada tylko %n wolne porty.<br>Nie bÄ™dzie można uruchomić tej configuracji.</numerusform> + <numerusform>Ostrzeżenie: Nie można zamontować %1 katalogów ponieważ urzÄ…dzenie posiada tylko %n wolnych portów.<br>Nie bÄ™dzie można uruchomić tej configuracji.</numerusform> + </translation> + </message> + <message numerus="yes"> + <source>WARNING: You want to mount %1 directories, but only %n ports on the device will be available in debug mode. <br>You will not be able to debug your application with this configuration.</source> + <translation> + <numerusform>Ostrzeżenie: Nie można zamontować %1 katalogów ponieważ urzÄ…dzenie udostÄ™pnia tylko %n port do debugowania.<br>Nie bÄ™dzie można debugować aplikacji przy użyciu tej configuracji.</numerusform> + <numerusform>Ostrzeżenie: Nie można zamontować %1 katalogów ponieważ urzÄ…dzenie udostÄ™pnia tylko %n porty do debugowania.<br>Nie bÄ™dzie można debugować aplikacji przy użyciu tej configuracji.</numerusform> + <numerusform>Ostrzeżenie: Nie można zamontować %1 katalogów ponieważ urzÄ…dzenie udostÄ™pnia tylko %n portów do debugowania.<br>Nie bÄ™dzie można debugować aplikacji przy użyciu tej configuracji.</numerusform> + </translation> + </message> <message> <source>Executable:</source> - <translation>Plik wykonywalny:</translation> + <translation type="obsolete">Plik wykonywalny:</translation> </message> <message> <source>Arguments:</source> @@ -17294,63 +19143,63 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> <name>Qt4ProjectManager::Internal::AbstractMaemoRunControl</name> <message> <source>Files to deploy: %1.</source> - <translation>Pliki do zainstalowania: %1.</translation> + <translation type="obsolete">Pliki do zainstalowania: %1.</translation> </message> <message> <source>Deploying</source> - <translation>Instalowanie</translation> + <translation type="obsolete">Instalowanie</translation> </message> <message> <source>No device configuration set for run configuration.</source> - <translation>Brak konfiguracji urzÄ…dzenia dla konfiguracji uruchamiania.</translation> + <translation type="obsolete">Brak konfiguracji urzÄ…dzenia dla konfiguracji uruchamiania.</translation> </message> <message> <source>Cleaning up remote leftovers first ...</source> - <translation>PorzÄ…dkowanie zdalnych pozostaÅ‚oÅ›ci...</translation> + <translation type="obsolete">PorzÄ…dkowanie zdalnych pozostaÅ‚oÅ›ci...</translation> </message> <message> <source>Initial cleanup canceled by user.</source> - <translation>WstÄ™pne porzÄ…dkowanie anulowane przez użytkownika.</translation> + <translation type="obsolete">WstÄ™pne porzÄ…dkowanie anulowane przez użytkownika.</translation> </message> <message> <source>Error running initial cleanup: %1.</source> - <translation>BÅ‚Ä…d podczas wstÄ™pnego porzÄ…dkowania: %1.</translation> + <translation type="obsolete">BÅ‚Ä…d podczas wstÄ™pnego porzÄ…dkowania: %1.</translation> </message> <message> <source>Initial cleanup done.</source> - <translation>ZakoÅ„czono wstÄ™pne porzÄ…dkowanie.</translation> + <translation type="obsolete">ZakoÅ„czono wstÄ™pne porzÄ…dkowanie.</translation> </message> <message> <source>Starting remote application.</source> - <translation>Uruchamianie zdalnej aplikacji.</translation> + <translation type="obsolete">Uruchamianie zdalnej aplikacji.</translation> </message> <message> <source>Deployment canceled by user.</source> - <translation>Instalowanie anulowane przez użytkownika.</translation> + <translation type="obsolete">Instalowanie anulowane przez użytkownika.</translation> </message> <message> <source>Deployment finished.</source> - <translation>ZakoÅ„czono instalowanie.</translation> + <translation type="obsolete">ZakoÅ„czono instalowanie.</translation> </message> <message> <source>Remote execution canceled due to user request.</source> - <translation>Zdalne uruchomienie anulowane na żądanie użytkownika.</translation> + <translation type="obsolete">Zdalne uruchomienie anulowane na żądanie użytkownika.</translation> </message> <message> <source>Error running remote process: %1</source> - <translation>BÅ‚Ä…d zdalnego procesu: %1</translation> + <translation type="obsolete">BÅ‚Ä…d zdalnego procesu: %1</translation> </message> <message> <source>Finished running remote process.</source> - <translation>ZakoÅ„czono zdalny proces.</translation> + <translation type="obsolete">ZakoÅ„czono zdalny proces.</translation> </message> <message> <source>Remote Execution Failure</source> - <translation>BÅ‚Ä…d zdalnego procesu</translation> + <translation type="obsolete">BÅ‚Ä…d zdalnego procesu</translation> </message> <message> <source>Deployment failed: %1</source> - <translation>BÅ‚Ä…d instalacji: %1</translation> + <translation type="obsolete">BÅ‚Ä…d instalacji: %1</translation> </message> </context> <context> @@ -17383,13 +19232,21 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> <source>Could not read public key file '%1'.</source> <translation>Nie można odczytać pliku z publicznym kluczem "%1".</translation> </message> + <message> + <source>Could not connect to host: %1</source> + <translation>Nie można poÅ‚Ä…czyć siÄ™ z hostem: %1</translation> + </message> + <message> + <source>You will need at least one port.</source> + <translation>Wymagany jest przynajmniej jeden port.</translation> + </message> <message> <source>Stop Deploying</source> <translation>Zatrzymaj instalowanie</translation> </message> <message> <source>Key deployment failed: %1</source> - <translation>BÅ‚Ä…d instalacji klucza: %1</translation> + <translation type="obsolete">BÅ‚Ä…d instalacji klucza: %1</translation> </message> <message> <source>Deployment Succeeded</source> @@ -17399,6 +19256,10 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> <source>Key was successfully deployed.</source> <translation>Klucz zostaÅ‚ pomyÅ›lnie zainstalowany.</translation> </message> + <message> + <source>Key deployment failed: %1.</source> + <translation>BÅ‚Ä…d instalacji klucza: %1.</translation> + </message> <message> <source>Deploy Public Key ...</source> <translation>Zainstaluj klucz publiczny...</translation> @@ -17409,8 +19270,39 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> <message> <source>Create SIS Package</source> <comment>Create SIS package build step name</comment> + <translation type="obsolete">Utwórz pakiet SIS</translation> + </message> + <message> + <source>Create SIS Package</source> + <extracomment>default create SIS package build step display name</extracomment> <translation>Utwórz pakiet SIS</translation> </message> + <message> + <source>Could not find make command '%1' in the build environment</source> + <translation>Nie można odnaleźć komendy make "%1" w Å›rodowisku budowania</translation> + </message> + <message> + <source>The process "%1" exited normally.</source> + <translation>Proces "%1" zakoÅ„czyÅ‚ siÄ™ normalnie.</translation> + </message> + <message> + <source>The process "%1" exited with code %2.</source> + <translation>Proces "%1" zakoÅ„czyÅ‚ siÄ™ kodem wyjÅ›ciowym %2.</translation> + </message> + <message> + <source>The process "%1" crashed.</source> + <translation>Proces "%1" zakoÅ„czyÅ‚ pracÄ™ bÅ‚Ä™dem.</translation> + </message> + <message> + <source>Could not start process "%1" in %2</source> + <translation>Nie można uruchomić procesu "%1" w %2</translation> + </message> + <message> + <source>Starting: "%1" %2 in %3 +</source> + <translation>Uruchamianie "%1" %2 w %3 +</translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::S60CreatePackageStepFactory</name> @@ -17421,6 +19313,14 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> </context> <context> <name>Qt4ProjectManager::Internal::S60CreatePackageStepConfigWidget</name> + <message> + <source>Reset Passphrases</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Do you want to reset all passphrases saved for keys used?</source> + <translation type="unfinished"></translation> + </message> <message> <source>self-signed</source> <translation>wÅ‚asnorÄ™cznie podpisany</translation> @@ -17429,6 +19329,10 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> <source>signed with certificate %1 and key file %2</source> <translation>podpisany certyfikatem %1 i kluczem %2</translation> </message> + <message> + <source><b>Create SIS Package:</b> %1, using Smart Installer</source> + <translation type="unfinished"></translation> + </message> <message> <source><b>Create SIS Package:</b> %1</source> <translation><b>Utwórz pakiet SIS:</b> %1</translation> @@ -17442,10 +19346,18 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> </message> <message> <source>New configuration</source> - <translation>Nowa konfiguracja</translation> + <translation type="obsolete">Nowa konfiguracja</translation> </message> <message> <source>New Configuration Name:</source> + <translation type="obsolete">Nazwa nowej konfiguracji:</translation> + </message> + <message> + <source>New Configuration</source> + <translation>Nowa konfiguracja</translation> + </message> + <message> + <source>New configuration name:</source> <translation>Nazwa nowej konfiguracji:</translation> </message> <message> @@ -17510,13 +19422,13 @@ Czy uruchomiÅ‚eÅ› Qemu?</translation> <name>Qt4ProjectManager::Internal::MobileGuiAppWizard</name> <message> <source>Mobile Qt Application</source> - <translation>Mobilna aplikacja Qt</translation> + <translation type="obsolete">Mobilna aplikacja Qt</translation> </message> <message> <source>Creates a Qt application optimized for mobile devices with a Qt Designer-based main window. Preselects Qt for Simulator and mobile targets if available</source> - <translation>Tworzy aplikacjÄ™ Qt dla urzÄ…dzeÅ„ przenoÅ›nych. Zawiera główne okno bazujÄ…ce na Qt Designerze. + <translation type="obsolete">Tworzy aplikacjÄ™ Qt dla urzÄ…dzeÅ„ przenoÅ›nych. Zawiera główne okno bazujÄ…ce na Qt Designerze. WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest dostÄ™pna).</translation> </message> @@ -17549,17 +19461,22 @@ WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest d <message> <source>Import</source> <comment>Is this an import of an existing build or a new one?</comment> - <translation>Import</translation> + <translation type="obsolete">Import</translation> </message> <message> <source>New</source> <comment>Is this an import of an existing build or a new one?</comment> - <translation>Nowy</translation> + <translation type="obsolete">Nowy</translation> </message> <message> <source>Qt Creator can set up the following targets for project <b>%1</b>:</source> <comment>%1: Project name</comment> - <translation>Qt Creator może ustawić nastÄ™pujÄ…ce wersje dla projektu <b>%1</b>:</translation> + <translation type="obsolete">Qt Creator może ustawić nastÄ™pujÄ…ce wersje dla projektu <b>%1</b>:</translation> + </message> + <message> + <source>Qt Creator can set up the following targets for<br>project <b>%1</b>:</source> + <comment>%1: Project name</comment> + <translation>Qt Creator może ustawić nastÄ™pujÄ…ce wersje dla<br>projektu <b>%1</b>:</translation> </message> <message> <source>Choose a directory to scan for additional shadow builds</source> @@ -17574,6 +19491,26 @@ WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest d <comment>%1: pro-file, %2: directory that was checked.</comment> <translation>Brak zbudowanych wersji dla projektu "%1" w katalogu "%2".</translation> </message> + <message> + <source>Check All</source> + <translation>Zaznacz wszystko</translation> + </message> + <message> + <source>Check all Qt versions</source> + <translation>Zaznacz wszystkie wersje Qt</translation> + </message> + <message> + <source>Check only this version</source> + <translation>Zaznacz tylko tÄ… wersjÄ™</translation> + </message> + <message> + <source>Check all versions</source> + <translation>Zaznacz wszystkie wersje</translation> + </message> + <message> + <source>Uncheck all versions</source> + <translation type="unfinished">UsuÅ„ zaznaczenia</translation> + </message> <message> <source><b>Error:</b> </source> <comment>Severity is Task::Error</comment> @@ -17584,6 +19521,36 @@ WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest d <comment>Severity is Task::Warning</comment> <translation><b>Ostrzeżenie:</b> </translation> </message> + <message> + <source>debug and release</source> + <extracomment>We are going to build debug and release</extracomment> + <translation>debug i release</translation> + </message> + <message> + <source>debug</source> + <extracomment>Debug build</extracomment> + <translation>debug</translation> + </message> + <message> + <source>release</source> + <extracomment>release build</extracomment> + <translation>release</translation> + </message> + <message> + <source><br>using %1 (%2)</source> + <extracomment>%1: qmake used (incl. full path), %2: "debug", "release" or "debug and release"</extracomment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Import</source> + <extracomment>Is this an import of an existing build or a new one?</extracomment> + <translation>Import</translation> + </message> + <message> + <source>New</source> + <extracomment>Is this an import of an existing build or a new one?</extracomment> + <translation>Nowy</translation> + </message> <message> <source>Setup targets for your project</source> <translation>Ustaw produkty docelowe dla projektu</translation> @@ -17596,6 +19563,14 @@ WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest d <source>Import Existing Shadow Build...</source> <translation>Zaimportuj wersjÄ™ zbudowanÄ… w innym miejscu...</translation> </message> + <message> + <source>Uncheck all Qt versions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Uncheck All</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Qt4ProjectManager::Internal::TestWizard</name> @@ -17656,16 +19631,24 @@ WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest d <translation>SkÅ‚adnica znajduje siÄ™ już w systemie kontroli wersji</translation> </message> <message> - <source>Repository created</source> + <source>Repository Created</source> <translation>Utworzono skÅ‚adnicÄ™</translation> </message> + <message> + <source>Repository Creation Failed</source> + <translation>BÅ‚Ä…d podczas tworzenia skÅ‚adnicy</translation> + </message> + <message> + <source>Repository created</source> + <translation type="obsolete">Utworzono skÅ‚adnicÄ™</translation> + </message> <message> <source>A version control repository has been created in %1.</source> <translation>SkÅ‚adnica systemu kontroli wersji zostaÅ‚a utworzona w %1.</translation> </message> <message> <source>Repository creation failed</source> - <translation>BÅ‚Ä…d podczas tworzenia skÅ‚adnicy</translation> + <translation type="obsolete">BÅ‚Ä…d podczas tworzenia skÅ‚adnicy</translation> </message> <message> <source>A version control repository could not be created in %1.</source> @@ -17722,39 +19705,39 @@ WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest d <name>StartExternalQmlDialog</name> <message> <source>Start Simultaneous QML and C++ Debugging </source> - <translation>Rozpocznij jednoczesne debugowanie QML i C++ </translation> + <translation type="obsolete">Rozpocznij jednoczesne debugowanie QML i C++ </translation> </message> <message> <source>Debugging address:</source> - <translation>Adres debugowania:</translation> + <translation type="obsolete">Adres debugowania:</translation> </message> <message> <source>Debugging port:</source> - <translation>Port debugowania:</translation> + <translation type="obsolete">Port debugowania:</translation> </message> <message> <source>127.0.0.1</source> - <translation>127.0.0.1</translation> + <translation type="obsolete">127.0.0.1</translation> </message> <message> <source>Project:</source> - <translation>Projekt:</translation> + <translation type="obsolete">Projekt:</translation> </message> <message> <source><No project></source> - <translation><Brak projektu></translation> + <translation type="obsolete"><Brak projektu></translation> </message> <message> <source>Viewer path:</source> - <translation>Åšcieżka do przeglÄ…darki:</translation> + <translation type="obsolete">Åšcieżka do przeglÄ…darki:</translation> </message> <message> <source>Viewer arguments:</source> - <translation>Argumenty przeglÄ…darki:</translation> + <translation type="obsolete">Argumenty przeglÄ…darki:</translation> </message> <message> <source>To switch languages while debugging, go to Debug->Language menu.</source> - <translation>Aby zmienić jÄ™zyk podczas debugowania przejdź do menu: Debugowanie->JÄ™zyk.</translation> + <translation type="obsolete">Aby zmienić jÄ™zyk podczas debugowania przejdź do menu: Debugowanie->JÄ™zyk.</translation> </message> </context> <context> @@ -17765,11 +19748,11 @@ WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest d </message> <message> <source>Add File to Package</source> - <translation>Dodaj plik do pakiety</translation> + <translation type="obsolete">Dodaj plik do pakiety</translation> </message> <message> <source>Remove File from Package</source> - <translation>UsuÅ„ plik z pakietu</translation> + <translation type="obsolete">UsuÅ„ plik z pakietu</translation> </message> <message> <source>Check this if you want the files below to be deployed directly.</source> @@ -17781,7 +19764,7 @@ WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest d </message> <message> <source>Version number:</source> - <translation>Numer wersji:</translation> + <translation type="obsolete">Numer wersji:</translation> </message> <message> <source>Major:</source> @@ -17797,7 +19780,23 @@ WstÄ™pnie wybiera wersjÄ™ Qt dla Symulatora i aplikacji mobilnych (jeÅ›li jest d </message> <message> <source>Files to deploy:</source> - <translation>Pliki do zainstalowania:</translation> + <translation type="obsolete">Pliki do zainstalowania:</translation> + </message> + <message> + <source><b>Version number:</b></source> + <translation><b>Numer wersji:</b></translation> + </message> + <message> + <source><b>Adapt Debian file:</b></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Edit</source> + <translation>Zmodyfikuj</translation> + </message> + <message> + <source><b>Package Manager Icon:</b></source> + <translation type="unfinished"></translation> </message> </context> <context> @@ -17882,6 +19881,15 @@ name <email> alias <email></source> <source>User fields configuration file:</source> <translation type="unfinished"></translation> </message> + <message> + <source>Specifies a command that is executed to graphically prompt for a password, +should a repository require SSH-authentication (see documentation on SSH and the environment variable SSH_ASKPASS).</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>SSH prompt command:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>BorderImageSpecifics</name> @@ -18196,7 +20204,7 @@ name <email> alias <email></source> </message> <message> <source>Pass. Char</source> - <translation>Znak mark.</translation> + <translation>Znak</translation> </message> <message> <source>Password Character</source> @@ -18338,72 +20346,72 @@ name <email> alias <email></source> <name>GenericSshConnection</name> <message> <source>Could not connect to host.</source> - <translation>Nie można poÅ‚Ä…czyć siÄ™ z hostem.</translation> - </message> - <message> - <source>Error in cryptography backend: %1</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Nie można poÅ‚Ä…czyć siÄ™ z hostem.</translation> </message> </context> <context> <name>Core::InteractiveSshConnection</name> <message> <source>Error sending input</source> - <translation>BÅ‚Ä…d podczas wysyÅ‚ania wejÅ›cia</translation> + <translation type="obsolete">BÅ‚Ä…d podczas wysyÅ‚ania wejÅ›cia</translation> </message> </context> <context> <name>Core::SftpConnection</name> <message> <source>Error setting up SFTP subsystem</source> - <translation>BÅ‚Ä…d podczas ustanawiania podsystemu SFTP</translation> + <translation type="obsolete">BÅ‚Ä…d podczas ustanawiania podsystemu SFTP</translation> </message> <message> <source>Could not open file '%1'</source> - <translation>Nie można otworzyć pliku "%1"</translation> + <translation type="obsolete">Nie można otworzyć pliku "%1"</translation> </message> <message> <source>Could not uplodad file '%1'</source> - <translation>Nie można wysÅ‚ać pliku "%1"</translation> + <translation type="obsolete">Nie można wysÅ‚ać pliku "%1"</translation> </message> <message> <source>Could not copy remote file '%1' to local file '%2'</source> - <translation>Nie można skopiować pliku zdalnego "%1" do pliku lokalnego "%2"</translation> + <translation type="obsolete">Nie można skopiować pliku zdalnego "%1" do pliku lokalnego "%2"</translation> </message> <message> <source>Could not create remote directory</source> - <translation>Nie można utworzyć zdalnego katalogu</translation> + <translation type="obsolete">Nie można utworzyć zdalnego katalogu</translation> </message> <message> <source>Could not remove remote directory</source> - <translation>Nie można usunąć zdalnego katalogu</translation> + <translation type="obsolete">Nie można usunąć zdalnego katalogu</translation> </message> <message> <source>Could not get remote directory contents</source> - <translation>Nie można otrzymać zawartoÅ›ci zdalnego katalogu</translation> + <translation type="obsolete">Nie można otrzymać zawartoÅ›ci zdalnego katalogu</translation> </message> <message> <source>Could not remove remote file</source> - <translation>Nie można usunąć zdalnego pliku</translation> + <translation type="obsolete">Nie można usunąć zdalnego pliku</translation> </message> <message> <source>Could not change remote working directory</source> - <translation>Nie można zmienić zdalnego katalogu roboczego</translation> + <translation type="obsolete">Nie można zmienić zdalnego katalogu roboczego</translation> </message> </context> <context> <name>SshKeyGenerator</name> <message> <source>Error creating temporary files.</source> - <translation>BÅ‚Ä…d podczas tworzenia plików tymczasowych.</translation> + <translation type="obsolete">BÅ‚Ä…d podczas tworzenia plików tymczasowych.</translation> </message> <message> <source>Error generating keys: %1</source> - <translation>BÅ‚Ä…d podczas generowania kluczy: %1</translation> + <translation type="obsolete">BÅ‚Ä…d podczas generowania kluczy: %1</translation> </message> <message> <source>Error reading temporary files.</source> - <translation>BÅ‚Ä…d podczas odczytywania plików tymczasowych.</translation> + <translation type="obsolete">BÅ‚Ä…d podczas odczytywania plików tymczasowych.</translation> + </message> + <message> + <source>Error generating key: %1</source> + <translation>BÅ‚Ä…d podczas generowania klucz: %1</translation> </message> </context> <context> @@ -18532,6 +20540,10 @@ name <email> alias <email></source> <source>Adapter start failed</source> <translation>Nie można uruchomić adaptera</translation> </message> + <message> + <source>Python Error</source> + <translation>BÅ‚Ä…d Pythona</translation> + </message> <message> <source>'%1' contains no identifier</source> <translation>"%1" nie zawiera identyfikatora</translation> @@ -18624,14 +20636,14 @@ name <email> alias <email></source> <message> <source>Engine %1</source> <comment>engine number</comment> - <translation>Silnik %1</translation> + <translation type="obsolete">Silnik %1</translation> </message> </context> <context> <name>Qml::Internal::StartExternalQmlDialog</name> <message> <source><No project></source> - <translation><Brak projektu></translation> + <translation type="obsolete"><Brak projektu></translation> </message> </context> <context> @@ -18651,18 +20663,18 @@ name <email> alias <email></source> <name>QmlProjectManager::Internal::QmlTaskManager</name> <message> <source>QML</source> - <translation>QML</translation> + <translation type="obsolete">QML</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::MaemoPackageContents</name> <message> <source>Local File Path</source> - <translation>Åšcieżka do lokalnego pliku</translation> + <translation type="obsolete">Åšcieżka do lokalnego pliku</translation> </message> <message> <source>Remote File Path</source> - <translation>Åšcieżka do zdalnego pliku</translation> + <translation type="obsolete">Åšcieżka do zdalnego pliku</translation> </message> </context> <context> @@ -18677,23 +20689,23 @@ name <email> alias <email></source> </message> <message> <source>Packaging Error: Cannot open file '%1'.</source> - <translation>BÅ‚Ä…d pakowania: Nie można otworzyć pliku "%1".</translation> + <translation type="obsolete">BÅ‚Ä…d pakowania: Nie można otworzyć pliku "%1".</translation> </message> <message> <source>Packaging Error: Cannot write file '%1'.</source> - <translation>BÅ‚Ä…d pakowania: Nie można zapisać pliku "%1".</translation> + <translation type="obsolete">BÅ‚Ä…d pakowania: Nie można zapisać pliku "%1".</translation> </message> <message> <source>Packaging Error: Could not create directory '%1'.</source> - <translation>BÅ‚Ä…d pakowania: Nie można utworzyć katalogu "%1.</translation> + <translation type="obsolete">BÅ‚Ä…d pakowania: Nie można utworzyć katalogu "%1.</translation> </message> <message> <source>Packaging Error: Could not replace file '%1'.</source> - <translation>BÅ‚Ä…d pakowania: Nie można zastÄ…pić pliku "%1".</translation> + <translation type="obsolete">BÅ‚Ä…d pakowania: Nie można zastÄ…pić pliku "%1".</translation> </message> <message> <source>Packaging Error: Could not copy '%1' to '%2'.</source> - <translation>BÅ‚Ä…d pakowania: Nie można skopiować pliku "%1" do "%2".</translation> + <translation type="obsolete">BÅ‚Ä…d pakowania: Nie można skopiować pliku "%1" do "%2".</translation> </message> <message> <source>Package created.</source> @@ -18707,6 +20719,30 @@ name <email> alias <email></source> <source>Packaging failed.</source> <translation>BÅ‚Ä…d pakowania.</translation> </message> + <message> + <source>Packaging for Maemo</source> + <translation>Pakowanie dla Maemo</translation> + </message> + <message> + <source>Package up to date.</source> + <translation>Pakiet aktualny.</translation> + </message> + <message> + <source>Could not move package files from %1 to %2.</source> + <translation>Nie można przenieść plików pakietu z %1 do %2.</translation> + </message> + <message> + <source>Could not remove directory '%1'.</source> + <translation>Nie można usunąć katalogu "%1".</translation> + </message> + <message> + <source>Could not create Debian directory '%1'.</source> + <translation>Nie można utworzyć katalogu Debian w "%1".</translation> + </message> + <message> + <source>Could not copy file '%1' to '%2'</source> + <translation>Nie można skopiować pliku "%1" do "%2"</translation> + </message> <message> <source>Packaging error: Could not start command '%1'. Reason: %2</source> <translation>BÅ‚Ä…d pakowania: Nie można uruchomić komendy "%1". Powód: %2</translation> @@ -18715,6 +20751,14 @@ name <email> alias <email></source> <source>Exit code: %1</source> <translation>Kod wyjÅ›ciowy: %1</translation> </message> + <message> + <source>Your project name contains characters not allowed in Debian packages. +They must only use lower-case letters, numbers, '-', '+' and '.'. +We will try to work around that, but you may experience problems.</source> + <translation>Nazwa projektu zawiera znaki które sÄ… niedozwolone w pakietach Debiana. +Dozwolonymi znakami sÄ… tylko maÅ‚e litery, liczby, '-', '+' oraz '.'. +Przy obecnej nazwie możesz spodziewać siÄ™ problemów.</translation> + </message> <message> <source>Packaging Error: Command '%1' failed.</source> <translation>BÅ‚Ä…d pakowania: Komenda "%1" zakoÅ„czona bÅ‚Ä™dem.</translation> @@ -18726,28 +20770,56 @@ name <email> alias <email></source> </context> <context> <name>Qt4ProjectManager::Internal::MaemoPackageCreationWidget</name> + <message> + <source>No Version Available.</source> + <translation>Brak dostÄ™pnej wersji.</translation> + </message> + <message> + <source>Could not read icon</source> + <translation>Nie można odczytać ikony</translation> + </message> + <message> + <source>Images</source> + <translation>Obrazki</translation> + </message> + <message> + <source>Choose Image</source> + <translation>Wybierz obrazek</translation> + </message> + <message> + <source>Could Not Set New Icon</source> + <translation>Nie można ustawić nowej ikony</translation> + </message> <message> <source><b>Create Package:</b> </source> <translation><b>Utwórz pakiet:</b> </translation> </message> + <message> + <source>(Packaging disabled)</source> + <translation>(Pakowanie wyÅ‚Ä…czone)</translation> + </message> + <message> + <source>Could Not Set Version Number</source> + <translation>Nie można ustawić numeru wersji</translation> + </message> <message> <source>Choose a local file</source> - <translation>Wybierz plik lokalny</translation> + <translation type="obsolete">Wybierz plik lokalny</translation> </message> <message> <source>File already in package</source> - <translation>Plik jest już obecny w pakiecie</translation> + <translation type="obsolete">Plik jest już obecny w pakiecie</translation> </message> <message> <source>You have already added this file.</source> - <translation>Plik zostaÅ‚ już uprzednio dodany.</translation> + <translation type="obsolete">Plik zostaÅ‚ już uprzednio dodany.</translation> </message> </context> <context> <name>Qt4ProjectManager::Internal::MaemoRunConfigurationFactory</name> <message> <source>New Maemo Run Configuration</source> - <translation>Nowa konfiguracja uruchamiania Maemo</translation> + <translation type="obsolete">Nowa konfiguracja uruchamiania Maemo</translation> </message> </context> <context> @@ -18861,6 +20933,14 @@ name <email> alias <email></source> <extracomment>%1: Path to qmake executable</extracomment> <translation>Komenda qmake "%1" nie zostaÅ‚a odnaleziona lub nie jest plikiem wykonywanlym.</translation> </message> + <message> + <source>Qmake does not support build directories below the source directory.</source> + <translation>Qmake nie obsÅ‚uguje budowania w katalogach poniżej katalogu ze źródÅ‚ami.</translation> + </message> + <message> + <source>The build directory needs to be at the same level as the source directory.</source> + <translation>Katalog przeznaczony do budowania musi być na tym samym poziomie co katalog ze źródÅ‚ami.</translation> + </message> </context> <context> <name>emptyPane</name> @@ -18890,7 +20970,15 @@ name <email> alias <email></source> <source>Invalid Id</source> <translation>Niepoprawny identyfikator</translation> </message> -</context> + <message> + <source>Warning</source> + <translation>Ostrzeżenie</translation> + </message> + <message> + <source>Reparenting the component %1 here will cause the component %2 to be deleted. Do you want to proceed?</source> + <translation type="unfinished"></translation> + </message> +</context> <context> <name>QmlDesigner::PropertyEditor</name> <message> @@ -18970,16 +21058,48 @@ Identyfikatory muszÄ… rozpoczynać siÄ™ maÅ‚Ä… literÄ….</translation> <source>Split if Statement</source> <translation>Rozdziel instrukcjÄ™ if</translation> </message> + <message> + <source>Enclose in QLatin1Char(...)</source> + <translation>Umieść w QLatin1Char(...)</translation> + </message> <message> <source>Enclose in QLatin1String(...)</source> <translation>Umieść w QLatin1String(...)</translation> </message> + <message> + <source>Mark as translatable</source> + <translation>Zaznacz jako przetÅ‚umaczalne</translation> + </message> <message> <source>Convert to Objective-C String Literal</source> <translation type="unfinished"></translation> </message> <message> - <source>Use Fast String Concatenation with %</source> + <source>Convert to Hexadecimal</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Convert to Octal</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Convert to Decimal</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Complete Switch Statement</source> + <translation>DokoÅ„cz instrukcjÄ™ "switch"</translation> + </message> + <message> + <source>#include header file</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Add local declaration</source> + <translation>Dodaj lokalnÄ™ deklaracjÄ™</translation> + </message> + <message> + <source>Convert to Camel Case ...</source> <translation type="unfinished"></translation> </message> </context> @@ -19009,31 +21129,19 @@ Identyfikatory muszÄ… rozpoczynać siÄ™ maÅ‚Ä… literÄ….</translation> <name>Qt4ProjectManager::Internal::QemuRuntimeManager</name> <message> <source>Start Maemo Emulator</source> - <translation>Uruchom emulator Maemo</translation> - </message> - <message> - <source>Qemu has been shut down, because you removed the corresponding Qt version.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Qemu finished with error: Exit code was %1.</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Qemu failed to start: %1</source> - <translation type="unfinished"></translation> + <translation type="obsolete">Uruchom emulator Maemo</translation> </message> <message> <source>Qemu crashed</source> - <translation>Qemu zakoÅ„czone bÅ‚Ä™dem</translation> + <translation type="obsolete">Qemu zakoÅ„czone bÅ‚Ä™dem</translation> </message> <message> <source>Qemu error</source> - <translation>BÅ‚Ä…d Qemu</translation> + <translation type="obsolete">BÅ‚Ä…d Qemu</translation> </message> <message> <source>Stop Maemo Emulator</source> - <translation>Zatrzymaj emulator Maemo</translation> + <translation type="obsolete">Zatrzymaj emulator Maemo</translation> </message> </context> <context> @@ -19048,19 +21156,19 @@ Identyfikatory muszÄ… rozpoczynać siÄ™ maÅ‚Ä… literÄ….</translation> </message> <message> <source>Normal</source> - <translation>Normalny</translation> + <translation type="obsolete">Normalny</translation> </message> <message> <source>Outline</source> - <translation>Kontur</translation> + <translation type="obsolete">Kontur</translation> </message> <message> <source>Raised</source> - <translation>WypukÅ‚y</translation> + <translation type="obsolete">WypukÅ‚y</translation> </message> <message> <source>Sunken</source> - <translation>WklÄ™sÅ‚y</translation> + <translation type="obsolete">WklÄ™sÅ‚y</translation> </message> <message> <source>...</source> @@ -19076,6 +21184,10 @@ Identyfikatory muszÄ… rozpoczynać siÄ™ maÅ‚Ä… literÄ….</translation> </context> <context> <name>FakeVim::Internal::FakeVimHandler::Private</name> + <message> + <source> [New] </source> + <translation> [Nowy] </translation> + </message> <message> <source>Not an editor command: %1</source> <translation>%1 nie jest komendÄ… edytora</translation> @@ -19085,7 +21197,3682 @@ Identyfikatory muszÄ… rozpoczynać siÄ™ maÅ‚Ä… literÄ….</translation> <name>QmlDesigner::ContextPaneWidget</name> <message> <source>Disable permanently</source> - <translation>WyÅ‚Ä…cz na staÅ‚e</translation> + <translation type="obsolete">WyÅ‚Ä…cz na staÅ‚e</translation> + </message> +</context> +<context> + <name>ContextPaneWidgetBorderImage</name> + <message> + <source>Form</source> + <translation>Formularz</translation> + </message> + <message> + <source>Stretch vertically. Scales the image to fit to the available area.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Repeat vertically. Tiles the image until there is no more space. May crop the last image.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Round. Like Repeat, but scales the images down to ensure that the last image is not cropped.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Repeat horizontally. Tiles the image until there is no more space. May crop the last image.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Strech horizontally. Scales the image to fit to the available area.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>10 x 10</source> + <translation>10 x 10</translation> + </message> +</context> +<context> + <name>ContextPaneWidgetImage</name> + <message> + <source>Form</source> + <translation>Formularz</translation> + </message> + <message> + <source>The image is scaled to fit</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The image is stretched horizontally and tiled vertically</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The image is stretched vertically and tiled horizontally</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The image is duplicated horizontally and vertically</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The image is scaled uniformly to fit without cropping</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The image is scaled uniformly to fill, cropping if necessary</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>10 x 10</source> + <translation>10 x 10</translation> + </message> +</context> +<context> + <name>ContextPaneWidgetRectangle</name> + <message> + <source>Form</source> + <translation>Formularz</translation> + </message> + <message> + <source>Gradient</source> + <translation>Gradient</translation> + </message> + <message> + <source>Color</source> + <translation>Kolor</translation> + </message> + <message> + <source>...</source> + <translation>...</translation> + </message> + <message> + <source>Border</source> + <translation>Brzeg</translation> + </message> +</context> +<context> + <name>EasingContextPane</name> + <message> + <source>Dialog</source> + <translation>Dialog</translation> + </message> + <message> + <source>Play simulation</source> + <translation>Odtwórz symulacjÄ™</translation> + </message> + <message> + <source>Easing</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Type of easing curve</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Subtype</source> + <translation>Podtyp</translation> + </message> + <message> + <source>Acceleration or deceleration of easing curve</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Duration</source> + <translation>Czas trwania</translation> + </message> + <message> + <source>Duration of animation</source> + <translation>Czas trwania animacji</translation> + </message> + <message> + <source>INVALID</source> + <translation>NIEPOPRAWNA WARTOŚĆ</translation> + </message> + <message> + <source> ms</source> + <translation> ms</translation> + </message> + <message> + <source>Amplitude</source> + <translation>Amplituda</translation> + </message> + <message> + <source>Amplitude of elastic and bounce easing curves</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Period</source> + <translation>Okres</translation> + </message> + <message> + <source>Easing period of an elastic curve</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Overshoot</source> + <translation>PrzestrzaÅ‚</translation> + </message> + <message> + <source>Easing overshoot for a back curve</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ClassView::Internal::NavigationWidget</name> + <message> + <source>Form</source> + <translation>Formularz</translation> + </message> + <message> + <source>Show subprojects</source> + <translation type="obsolete">Pokaż podprojekty</translation> + </message> + <message> + <source>Show Subprojects</source> + <translation>Pokaż podprojekty</translation> + </message> +</context> +<context> + <name>AttachTcfDialog</name> + <message> + <source>Start Debugger</source> + <translation>Uruchom debugger</translation> + </message> + <message> + <source>Host and port:</source> + <translation>Host i port:</translation> + </message> + <message> + <source>Architecture:</source> + <translation>Architektura:</translation> + </message> + <message> + <source>Use server start script:</source> + <translation>Użyj startowego skryptu serwera:</translation> + </message> + <message> + <source>Server start script:</source> + <translation>Startowy skrypt serwera:</translation> + </message> +</context> +<context> + <name>BreakpointDialog</name> + <message> + <source>Dialog</source> + <translation type="obsolete">Dialog</translation> + </message> + <message> + <source>Breakpoint type:</source> + <translation>Typ puÅ‚apki:</translation> + </message> + <message> + <source>File name:</source> + <translation>Nazwa pliku:</translation> + </message> + <message> + <source>Line number:</source> + <translation>Numer linii:</translation> + </message> + <message> + <source>Function:</source> + <translation>Funkcja:</translation> + </message> + <message> + <source>Condition:</source> + <translation>Warunek:</translation> + </message> + <message> + <source>Ignore count:</source> + <translation>Licznik pominięć:</translation> + </message> + <message> + <source>Thread specification:</source> + <translation>Specyfikacja wÄ…tku:</translation> + </message> + <message> + <source>Address:</source> + <translation>Adres:</translation> + </message> + <message> + <source>Edit Breakpoint Properties</source> + <translation>Zmodyfikuj wÅ‚aÅ›ciwoÅ›ci puÅ‚apki</translation> + </message> + <message> + <source>Use full path:</source> + <translation>Użyj peÅ‚nej Å›cieżki:</translation> + </message> +</context> +<context> + <name>Help::Internal::RemoteFilterOptions</name> + <message> + <source>Filter configuration</source> + <translation>Konfiguracja filtra</translation> + </message> + <message> + <source>Prefix:</source> + <translation>Przedrostek:</translation> + </message> + <message> + <source>Limit to prefix</source> + <translation>Ogranicz aktywność filtru: +aktywny tylko po wpisaniu przedrostka</translation> + </message> + <message> + <source>+</source> + <translation>+</translation> + </message> + <message> + <source>-</source> + <translation>-</translation> + </message> + <message> + <source>Double click to edit item.</source> + <translation>Kliknij dwukrotnie aby zmodyfikować element.</translation> + </message> +</context> +<context> + <name>ImageViewer::Internal::ImageViewerToolbar</name> + <message> + <source>Show background</source> + <translation>Pokaż tÅ‚o</translation> + </message> + <message> + <source>Show outline</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fit image in the screen</source> + <translation>Dopasuj obrazek do ekranu</translation> + </message> + <message> + <source>Original size</source> + <translation>Oryginalny rozmiar</translation> + </message> + <message> + <source>Zoom In</source> + <translation>PowiÄ™ksz</translation> + </message> + <message> + <source>Zoom Out</source> + <translation>Pomniejsz</translation> + </message> +</context> +<context> + <name>ComponentNameDialog</name> + <message> + <source>Dialog</source> + <translation>Dialog</translation> + </message> + <message> + <source>Component name:</source> + <translation>Nazwa komponentu:</translation> + </message> + <message> + <source>Path:</source> + <translation>Åšcieżka:</translation> + </message> + <message> + <source>Choose...</source> + <translation>Wybierz...</translation> + </message> +</context> +<context> + <name>QmlJSEditor::Internal::QuickToolBarSettingsPage</name> + <message> + <source>Form</source> + <translation>Formularz</translation> + </message> + <message> + <source>Qt Quick Toolbars</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Always show Qt Quick Toolbar</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>If enabled, the toolbar will remain pinned to an absolute position.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pin Qt Quick Toolbar</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Qt Quick ToolBar</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::LibraryDetailsWidget</name> + <message> + <source>Form</source> + <translation type="obsolete">Formularz</translation> + </message> + <message> + <source>Library:</source> + <translation>Biblioteka:</translation> + </message> + <message> + <source>Library file:</source> + <translation>Plik z bibliotekÄ…:</translation> + </message> + <message> + <source>Include path:</source> + <translation>Åšcieżka do nagłówków:</translation> + </message> + <message> + <source>Platform</source> + <translation>Platforma</translation> + </message> + <message> + <source>Linux</source> + <translation>Linux</translation> + </message> + <message> + <source>Mac</source> + <translation>Mac</translation> + </message> + <message> + <source>Windows</source> + <translation>Windows</translation> + </message> + <message> + <source>Symbian</source> + <translation>Symbian</translation> + </message> + <message> + <source>Linkage:</source> + <translation>DowiÄ…zanie:</translation> + </message> + <message> + <source>Dynamic</source> + <translation>Dynamiczne</translation> + </message> + <message> + <source>Static</source> + <translation>Statyczne</translation> + </message> + <message> + <source>Mac:</source> + <translation>Mac:</translation> + </message> + <message> + <source>Library</source> + <translation>Biblioteka</translation> + </message> + <message> + <source>Framework</source> + <translation>Framework</translation> + </message> + <message> + <source>Windows:</source> + <translation>Windows:</translation> + </message> + <message> + <source>Library inside "debug" or "release" subfolder</source> + <translation>Biblioteka wewnÄ…trz podkatalogu "debug" lub "release"</translation> + </message> + <message> + <source>Add "d" suffix for debug version</source> + <translation>Dodaj przyrostek "d" do wersji debugowej</translation> + </message> + <message> + <source>Remove "d" suffix for release version</source> + <translation>UsuÅ„ przyrostek "d" z wersji release'owej</translation> + </message> +</context> +<context> + <name>MaemoDeployableListWidget</name> + <message> + <source>Form</source> + <translation>Formularz</translation> + </message> + <message> + <source>Add File to Package</source> + <translation>Dodaj plik do pakietu</translation> + </message> + <message> + <source>Remove File from Package</source> + <translation>UsuÅ„ plik z pakietu</translation> + </message> +</context> +<context> + <name>MaemoDeployStepWidget</name> + <message> + <source>Form</source> + <translation>Formularz</translation> + </message> + <message> + <source>Device configuration:</source> + <translation>Konfiguracja urzÄ…dzenia:</translation> + </message> + <message> + <source>Also deploy to sysroot</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>These show the INSTALLS settings from the project file(s).</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><b>Files to install:</b></source> + <translation><b>Pliki do zainstalowania:</b></translation> + </message> +</context> +<context> + <name>MobileAppWizardOptionPage</name> + <message> + <source>WizardPage</source> + <translation>StronaKreatora</translation> + </message> + <message> + <source>General</source> + <translation>Ogólne</translation> + </message> + <message> + <source>Orientation Behavior:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Symbian specific</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Application Icon (.svg):</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Target UID3:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enable network access</source> + <translation type="unfinished">WÅ‚Ä…cz dostÄ™p sieciowy</translation> + </message> + <message> + <source>Maemo specific</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Application Icon (64x64):</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MobileLibraryWizardOptionPage</name> + <message> + <source>WizardPage</source> + <translation>StronaKreatora</translation> + </message> + <message> + <source>Enable network access</source> + <translation>WÅ‚Ä…cz dostÄ™p sieciowy</translation> + </message> + <message> + <source>Target UID3:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlStandaloneAppWizardSourcesPage</name> + <message> + <source>WizardPage</source> + <translation>StronaKreatora</translation> + </message> + <message> + <source>Main QML file</source> + <translation>Główny plik QML</translation> + </message> + <message> + <source>QML Modules</source> + <translation>ModuÅ‚y QML</translation> + </message> + <message> + <source>+</source> + <translation>+</translation> + </message> + <message> + <source>-</source> + <translation>-</translation> + </message> + <message> + <source>URIs (e.g. 'org.mydomain.MyQmlModule')</source> + <translation>Lista URI (np. "org.mojadomena.MojModulQml")</translation> + </message> + <message> + <source>Import Paths</source> + <translation>Zaimportuj Å›cieżki</translation> + </message> + <message> + <source>Error</source> + <translation>BÅ‚Ä…d</translation> + </message> +</context> +<context> + <name>HighlighterSettingsPage</name> + <message> + <source>Form</source> + <translation>Formularz</translation> + </message> + <message> + <source><html><head/><body> +<p>Highlight definitions are provided by the <a href="http://kate-editor.org/">Kate Text Editor</a>.</p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Syntax Highlight Definition Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Location:</source> + <translation>PoÅ‚ożenie:</translation> + </message> + <message> + <source>Use fallback location</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Behavior</source> + <translation>Zachowanie</translation> + </message> + <message> + <source>Alert when a highlight definition is not found</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ignored file patterns:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ManageDefinitionsDialog</name> + <message> + <source>Dialog</source> + <translation>Dialog</translation> + </message> + <message> + <source>Definitions</source> + <translation>Definicje</translation> + </message> + <message> + <source>Select All</source> + <translation>Zaznacz wszystko</translation> + </message> + <message> + <source>Clear Selection</source> + <translation>UsuÅ„ selekcjÄ™</translation> + </message> + <message> + <source>Invert Selection</source> + <translation>Odwróć selekcjÄ™</translation> + </message> + <message> + <source>Download Selected Definitions</source> + <translation>Pobierz zaznaczone definicje</translation> + </message> +</context> +<context> + <name>ProxySettings</name> + <message> + <source>Dialog</source> + <translation type="obsolete">Dialog</translation> + </message> + <message> + <source>Use http proxy</source> + <translation type="obsolete">Użyj poÅ›rednika http</translation> + </message> + <message> + <source>Server Address:</source> + <translation type="obsolete">Adres serwera:</translation> + </message> + <message> + <source>Port:</source> + <translation type="obsolete">Port:</translation> + </message> + <message> + <source>Username:</source> + <translation type="obsolete">Nazwa użytkownika:</translation> + </message> + <message> + <source>Password:</source> + <translation type="obsolete">HasÅ‚o:</translation> + </message> + <message> + <source>HTTP Proxy</source> + <translation type="obsolete">PoÅ›rednik HTTP</translation> + </message> + <message> + <source>Use HTTP Proxy</source> + <translation type="obsolete">Użyj poÅ›rednika HTTP</translation> + </message> + <message> + <source>Server</source> + <translation type="obsolete">Serwer</translation> + </message> + <message> + <source>Name or IP</source> + <translation type="obsolete">Nazwa lub IP</translation> + </message> + <message> + <source>Port</source> + <translation type="obsolete">Port</translation> + </message> + <message> + <source>8080</source> + <translation type="obsolete">8080</translation> + </message> + <message> + <source>Username</source> + <translation type="obsolete">Nazwa użytkownika</translation> + </message> + <message> + <source>Password</source> + <translation type="obsolete">HasÅ‚o</translation> + </message> +</context> +<context> + <name>RecordingOptions</name> + <message> + <source>Video options</source> + <translation type="obsolete">Ustawienia wideo</translation> + </message> + <message> + <source>File:</source> + <translation type="obsolete">Plik:</translation> + </message> + <message> + <source>...</source> + <translation type="obsolete">...</translation> + </message> + <message> + <source>Size</source> + <translation type="obsolete">Rozmiar</translation> + </message> + <message> + <source>VGA</source> + <translation type="obsolete">VGA</translation> + </message> + <message> + <source>720p</source> + <translation type="obsolete">720p</translation> + </message> + <message> + <source>QVGA</source> + <translation type="obsolete">QVGA</translation> + </message> + <message> + <source>Width:</source> + <translation type="obsolete">Szerokość:</translation> + </message> + <message> + <source>Height:</source> + <translation type="obsolete">Wysokość:</translation> + </message> + <message> + <source>Rate</source> + <translation type="obsolete">CzÄ™stotliwość</translation> + </message> + <message> + <source>60Hz</source> + <translation type="obsolete">60Hz</translation> + </message> + <message> + <source>50Hz</source> + <translation type="obsolete">50Hz</translation> + </message> + <message> + <source>25Hz</source> + <translation type="obsolete">25Hz</translation> + </message> + <message> + <source>Hz</source> + <translation type="obsolete">Hz</translation> + </message> + <message> + <source>24Hz</source> + <translation type="obsolete">24Hz</translation> + </message> + <message> + <source>Profile</source> + <translation type="obsolete">Profil</translation> + </message> + <message> + <source>Help</source> + <translation type="obsolete">Pomoc</translation> + </message> + <message> + <source>60 Hz</source> + <translation type="obsolete">60 Hz</translation> + </message> + <message> + <source>50 Hz</source> + <translation type="obsolete">50 Hz</translation> + </message> + <message> + <source>25 Hz</source> + <translation type="obsolete">25 Hz</translation> + </message> + <message> + <source>24 Hz</source> + <translation type="obsolete">24 Hz</translation> + </message> + <message> + <source>20 Hz</source> + <translation type="obsolete">20 Hz</translation> + </message> + <message> + <source>15 Hz</source> + <translation type="obsolete">15 Hz</translation> + </message> + <message> + <source>10 Hz</source> + <translation type="obsolete">10 Hz</translation> + </message> + <message> + <source>File</source> + <translation type="obsolete">Plik</translation> + </message> + <message> + <source>Options</source> + <translation type="obsolete">Opcje</translation> + </message> +</context> +<context> + <name>QmlEditorWidgets::ContextPaneWidget</name> + <message> + <source>Hides this toolbar.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pin Toolbar</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Show Always</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unpins the toolbar and moves it to the default position.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Hides this toolbar. This toolbar can be permanently disabled in the options page or in the context menu.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlEditorWidgets::ContextPaneWidgetImage</name> + <message> + <source>double click for preview</source> + <translation>kliknij dwukrotnie aby wyÅ›wietlić podglÄ…d</translation> + </message> +</context> +<context> + <name>QmlEditorWidgets::FileWidget</name> + <message> + <source>Open File</source> + <translation>Otwórz plik</translation> + </message> +</context> +<context> + <name>QmlJS::Bind</name> + <message> + <source>expected two numbers separated by a dot</source> + <translation>oczekiwano dwóch liczb oddzielonych kropkÄ…</translation> + </message> + <message> + <source>package import requires a version number</source> + <translation>import pakietu wymaga podania numeru wersji</translation> + </message> + <message> + <source>file or directory not found</source> + <translation>nie można odnaleźć pliku lub katalogu</translation> + </message> +</context> +<context> + <name>Utils::DebuggerLanguageChooser</name> + <message> + <source>C++</source> + <translation>C++</translation> + </message> + <message> + <source>QML</source> + <translation>QML</translation> + </message> + <message> + <source>Debug port:</source> + <translation>Port debugowania:</translation> + </message> +</context> +<context> + <name>Utils::SynchronousProcess</name> + <message> + <source>The command '%1' finished successfully.</source> + <translation>Komenda "%1" poprawnie zakoÅ„czona.</translation> + </message> + <message> + <source>The command '%1' terminated with exit code %2.</source> + <translation>Komenda "%1" zakoÅ„czona kodem wyjÅ›ciowym %2.</translation> + </message> + <message> + <source>The command '%1' terminated abnormally.</source> + <translation>Komenda "%1" niepoprawnie zakoÅ„czona.</translation> + </message> + <message> + <source>The command '%1' could not be started.</source> + <translation>Komenda "%1" nie może zostać uruchomiona.</translation> + </message> + <message> + <source>The command '%1' did not respond within the timeout limit (%2 ms).</source> + <translation>Komenda "%1" nie odpowiedziaÅ‚a w okreÅ›lonym czasie (%2 ms).</translation> + </message> + <message> + <source>Process not Responding</source> + <translation>Brak odpowiedzi</translation> + </message> + <message> + <source>The process is not responding.</source> + <translation>Proces nie odpowiada.</translation> + </message> + <message> + <source>The process '%1' is not responding.</source> + <translation>Proces "%1" nie odpowiada.</translation> + </message> + <message> + <source>Would you like to terminate it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source> Would you like to terminate it?</source> + <translation type="obsolete">Czy chcesz go zakoÅ„czyć?</translation> + </message> +</context> +<context> + <name>ClassView::Internal::NavigationWidgetFactory</name> + <message> + <source>Class View</source> + <translation>Widok klas</translation> + </message> +</context> +<context> + <name>Core::Internal::CommandComboBox</name> + <message> + <source>Activate %1</source> + <translation>Uaktywnij %1</translation> + </message> +</context> +<context> + <name>Core::NavigationWidget</name> + <message> + <source>Activate %1 Pane</source> + <translation>Uaktywnij panel %1</translation> + </message> + <message> + <source>Hide Sidebar</source> + <translation>Ukryj boczny pasek</translation> + </message> + <message> + <source>Show Sidebar</source> + <translation>Pokaż boczny pasek</translation> + </message> +</context> +<context> + <name>Core::Internal::SftpChannelPrivate</name> + <message> + <source>Server could not start sftp subsystem.</source> + <translation>Serwer nie może uruchomić podsystemu sftp.</translation> + </message> + <message> + <source>Unexpected packet of type %1.</source> + <translation>Nieoczekiwany pakiet typu %1.</translation> + </message> + <message> + <source>Protocol version mismatch: Expected %1, got %2</source> + <translation>Niezgodność wersji protokoÅ‚u: Oczekiwano %1 zamiast %2</translation> + </message> + <message> + <source>Unknown error.</source> + <translation>Nieznany bÅ‚Ä…d.</translation> + </message> + <message> + <source>Created remote directory '%1'.</source> + <translation>Utworzono zdalny katalog "%1".</translation> + </message> + <message> + <source>Remote directory '%1' already exists.</source> + <translation>Zdalny katalog "%1" już istnieje.</translation> + </message> + <message> + <source>Error creating directory '%1': %2</source> + <translation>BÅ‚Ä…d tworzenia katalogu "%1": %2</translation> + </message> + <message> + <source>Could not open local file '%1': %2</source> + <translation>Nie można otworzyć lokalnego pliku "%1": %2</translation> + </message> + <message> + <source>Remote directory could not be opened for reading.</source> + <translation>Nie można otworzyć zdalnego katalogu do odczytu.</translation> + </message> + <message> + <source>Failed to list remote directory contents.</source> + <translation>Nie można uzyskać zawartoÅ›ci zdalnego katalogu.</translation> + </message> + <message> + <source>Failed to close remote directory.</source> + <translation>Nie można zamknąć zdalnego katalogu.</translation> + </message> + <message> + <source>Failed to open remote file for reading.</source> + <translation>Nie można otworzyć zdalnego pliku do odczytu.</translation> + </message> + <message> + <source>Failed retrieve information on the remote file ('stat' failed).</source> + <translation>Nie można uzyskać informacji o zdalnym pliku ("stat" niepoprawnie zakoÅ„czony).</translation> + </message> + <message> + <source>Failed to read remote file.</source> + <translation>Nie można odczytać zdalnego pliku.</translation> + </message> + <message> + <source>Failed to close remote file.</source> + <translation>Nie można zamknąć zdalnego pliku.</translation> + </message> + <message> + <source>Failed to open remote file for writing.</source> + <translation>Nie można otworzyć zdalnego pliku do zapisu.</translation> + </message> + <message> + <source>Failed to write remote file.</source> + <translation>Nie można zapisać zdalnego pliku.</translation> + </message> + <message> + <source>Cannot append to remote file: Server does not support the file size attribute.</source> + <translation>Nie można dodać zawartoÅ›ci do zdalnego pliku: Serwer nie obsÅ‚uguje atrybutu "rozmiar pliku".</translation> + </message> + <message> + <source>Server could not start session.</source> + <translation>Serwer nie może rozpocząć sesji.</translation> + </message> + <message> + <source>Error reading local file: %1</source> + <translation>BÅ‚Ä…d odczytu lokalnego pliku: %1</translation> + </message> +</context> +<context> + <name>SshConnection</name> + <message> + <source>Server and client capabilities don't match. Client list was: %1. +Server list was %2.</source> + <translation>Niezgodność zdolnoÅ›ci serwera i klienta. +Lista klienta: %1. +Lista serwera: %2.</translation> + </message> +</context> +<context> + <name>Core::Internal::SshChannelManager</name> + <message> + <source>Invalid channel id %1</source> + <translation>Niepoprawny identyfikator kanaÅ‚u %1</translation> + </message> +</context> +<context> + <name>Core::Internal::SshConnectionPrivate</name> + <message> + <source>SSH Protocol error: %1</source> + <translation>BÅ‚Ä…d protokoÅ‚u SSH: %1</translation> + </message> + <message> + <source>Botan library exception: %1</source> + <translation>WyjÄ…tek biblioteki Botan: %1</translation> + </message> + <message> + <source>Invalid protocol version: Expected '2.0', got '%1'.</source> + <translation>Niepoprawna wersja protokoÅ‚u: Oczekiwano "2.0" zamiast "%1".</translation> + </message> + <message> + <source>Invalid server id '%1'.</source> + <translation>Niepoprawny identyfikator serwera "%1".</translation> + </message> + <message> + <source>Unexpected packet of type %1.</source> + <translation>Nieoczekiwany pakiet typu %1.</translation> + </message> + <message> + <source>Could not read private key file: %1</source> + <translation>Nie można odczytać pliku z publicznym kluczem: %1</translation> + </message> + <message> + <source>Password expired.</source> + <translation>HasÅ‚o straciÅ‚o ważność.</translation> + </message> + <message> + <source>Server rejected password.</source> + <translation>Serwer odrzuciÅ‚ hasÅ‚o.</translation> + </message> + <message> + <source>Server rejected key.</source> + <translation>Serwer odrzuciÅ‚ klucz.</translation> + </message> + <message> + <source>Server closed connection: %1</source> + <translation>Serwer zamknÄ…Å‚ poÅ‚Ä…czenie: %1</translation> + </message> + <message> + <source>Connection closed unexpectedly.</source> + <translation>Nieoczekiwane zamkniÄ™cie poÅ‚Ä…czenia.</translation> + </message> + <message> + <source>Timeout waiting for reply from server.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CodePaster::NetworkProtocol</name> + <message> + <source>Checking connection</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connecting to %1...</source> + <translation>ÅÄ…czenie z %1...</translation> + </message> +</context> +<context> + <name>CheckUndefinedSymbols</name> + <message> + <source>Expected a namespace-name</source> + <translation>Oczekiwano nazwy przestrzeni nazw</translation> + </message> +</context> +<context> + <name>QCoreApplication</name> + <message> + <source>Add %1 declaration</source> + <comment>CppEditor::DeclFromDef</comment> + <translation>Dodaj deklaracjÄ™ %1</translation> + </message> + <message> + <source>GDB helper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>qmldump</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>QMLObserver</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot build qmldump; Qt version must be 4.7.1 or higher.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot build QMLObserver; Qt version must be 4.7.1 or higher.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>CppEditor::Internal::CppTypeHierarchyWidget</name> + <message> + <source>No type hierarchy available</source> + <translation>Brak dostÄ™pnej hierarchii typów</translation> + </message> +</context> +<context> + <name>CppEditor::Internal::CppTypeHierarchyFactory</name> + <message> + <source>Type Hierarchy</source> + <translation>Hierarchia typów</translation> + </message> +</context> +<context> + <name>CppTools::Internal::SymbolsFindFilter</name> + <message> + <source>C++ Symbols</source> + <translation>Symbole C++</translation> + </message> + <message> + <source>Searching</source> + <translation>Przeszukiwanie</translation> + </message> +</context> +<context> + <name>CppTools::Internal::SymbolsFindFilterConfigWidget</name> + <message> + <source>Types:</source> + <translation>Typy:</translation> + </message> + <message> + <source>Classes</source> + <translation>Klasy</translation> + </message> + <message> + <source>Methods</source> + <translation>Metody</translation> + </message> + <message> + <source>Enums</source> + <translation>Typy wyliczeniowe</translation> + </message> + <message> + <source>Declarations</source> + <translation>Deklaracje</translation> + </message> + <message> + <source>Projects Only</source> + <translation>Tylko projekty</translation> + </message> + <message> + <source>Global</source> + <translation>Globalne</translation> + </message> +</context> +<context> + <name>Debugger::Internal::BreakpointDialog</name> + <message> + <source>File and Line Number</source> + <translation>Plik i numer linii</translation> + </message> + <message> + <source>Function Name</source> + <translation>Nazwa funkcji</translation> + </message> + <message> + <source>Function "main()"</source> + <translation>Funkcja "main()"</translation> + </message> + <message> + <source>Address</source> + <translation>Adres</translation> + </message> +</context> +<context> + <name>Debugger::Internal::CdbEngine</name> + <message> + <source>The function "%1()" failed: %2</source> + <extracomment>Function call failed</extracomment> + <translation>Funkcja "%1()" zakoÅ„czona niepowodzeniem: %2</translation> + </message> + <message> + <source>Version: %1</source> + <translation>Wersja: %1</translation> + </message> + <message> + <source><html>The installed version of the <i>Debugging Tools for Windows</i> (%1) is rather old. Upgrading to version %2 is recommended for the proper display of Qt's data types.</html></source> + <translation><html>Zainstalowana wersja <i>narzÄ™dzi debugowych dla Windows</i> (%1) jest przestarzaÅ‚a. Zalecane jest uaktualnienie do wersji %2 w celu poprawnego wyÅ›wietlania typów danych Qt.</html></translation> + </message> + <message> + <source>Debugger</source> + <translation>Debugger</translation> + </message> + <message> + <source><html><head/><body><p>The debugger is not configured to use the public <a href="%1">Microsoft Symbol Server</a>. This is recommended for retrieval of the symbols of the operating system libraries.</p><p><i>Note:</i> A fast internet connection is required for this to work smoothly. Also, a delay might occur when connecting for the first time.</p><p>Would you like to set it up?</p></br></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Symbol Server</source> + <translation>Serwer z symbolami</translation> + </message> + <message> + <source>Do not ask again</source> + <translation>Nie pytaj wiÄ™cej</translation> + </message> + <message> + <source>The dumper library was not found at %1.</source> + <translation>Biblioteka zrzutów nie zostaÅ‚a znaleziona w %1.</translation> + </message> + <message> + <source>The console stub process was unable to start '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Attaching to core files is not supported!</source> + <translation type="obsolete">DoÅ‚Ä…czanie do pliku zrzutu nie jest obsÅ‚ugiwane.</translation> + </message> + <message> + <source>Attaching to core files is not supported.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The process exited with exit code %1.</source> + <translation>Proces zakoÅ„czyÅ‚ siÄ™ kodem wyjÅ›ciowym %1.</translation> + </message> + <message> + <source>Continuing with '%1'...</source> + <translation>Kontynuacja z "%1"...</translation> + </message> + <message> + <source>Unable to continue: %1</source> + <translation>Nie można kontynuować: %1</translation> + </message> + <message> + <source>Reverse stepping is not implemented.</source> + <translation>Kroczenie wstecz nie jest zaimplementowane.</translation> + </message> + <message> + <source>Thread %1 cannot be stepped.</source> + <translation>WÄ…tek %1 nie może być Å›ledzony krok po kroku.</translation> + </message> + <message> + <source>Stepping %1</source> + <translation>Kroczenie %1</translation> + </message> + <message> + <source>Running requested...</source> + <translation>Zażądano uruchomienia...</translation> + </message> + <message> + <source>Running up to %1:%2...</source> + <translation>Uruchomiony do osiÄ…gniÄ™cia %1:%2...</translation> + </message> + <message> + <source>Running up to function '%1()'...</source> + <translation>Uruchomiony do osiÄ…gniÄ™cia funkcji '%1()'...</translation> + </message> + <message> + <source>Jump to line is not implemented</source> + <translation>Skok do linii nie jest obsÅ‚ugiwany</translation> + </message> + <message> + <source>Assigning '%1' to '%2' (%3)...</source> + <extracomment>Arguments: New value, name, (type)</extracomment> + <translation>Przypisywanie wartoÅ›ci "%1" do zmiennej "%2" typu %3...</translation> + </message> + <message> + <source>Can assign only scalar values.</source> + <translation>Przypisać można jedynie wartoÅ›ci skalarne.</translation> + </message> + <message> + <source>Cannot assign values of type '%1'. Only POD-types can be assigned.</source> + <translation>Nie można przypisać wartoÅ›ci typu "%1". Przypisać można jedynie podstawowe typy POD.</translation> + </message> + <message> + <source>Unable to assign the value '%1' to '%2' (%3): %4</source> + <extracomment>Arguments: New value, name, (type): Error</extracomment> + <translation>Nie można przypisać wartoÅ›ci "%1" do "%2" typu %3: %4</translation> + </message> + <message> + <source>Unable to retrieve %1 bytes of memory at 0x%2: %3</source> + <translation>Nie można odczytać %1 bajtów pamiÄ™ci spod adresu 0x%2: %3</translation> + </message> + <message> + <source>Cannot retrieve symbols while the debuggee is running.</source> + <translation>Nie można odczytać symboli dopóki pracuje debugowany program.</translation> + </message> + <message> + <source>Debugger Error</source> + <translation>BÅ‚Ä…d debuggera</translation> + </message> + <message> + <source>Ignoring initial breakpoint...</source> + <translation>Zignorowano poczÄ…tkowÄ… puÅ‚apkÄ™...</translation> + </message> + <message> + <source><interrupt thread></source> + <translation><przerwij wÄ…tek></translation> + </message> + <message> + <source>Breakpoint</source> + <translation>PuÅ‚apka</translation> + </message> + <message> + <source>Interrupted in thread %1, current thread: %2</source> + <translation>Przerwano w wÄ…tku %1, bieżący wÄ…tek: %2</translation> + </message> + <message> + <source>Stopped, current thread: %1</source> + <translation>Zatrzymano, bieżący wÄ…tek: %1</translation> + </message> + <message> + <source>Changing threads: %1 -> %2</source> + <translation>Zmiana wÄ…tków: %1 -> %2</translation> + </message> + <message> + <source>stopped</source> + <translation>zatrzymano</translation> + </message> + <message> + <source>Stopped at %1:%2 in thread %3.</source> + <translation>Zatrzymano w %1:%2 w wÄ…tku %3.</translation> + </message> + <message> + <source>Stopped at %1 in thread %2 (missing debug information).</source> + <translation>Zatrzymano w %1 w wÄ…tku %2 (brak informacji debugowej).</translation> + </message> + <message> + <source>Stopped at %1 (%2) in thread %3 (missing debug information).</source> + <translation>Zatrzymano w %1 (%2) w wÄ…tku %3 (brak informacji debugowej).</translation> + </message> + <message> + <source>Stopped in thread %1 (missing debug information).</source> + <translation>Zatrzymano w wÄ…tku %1 (brak informacji debugowej).</translation> + </message> + <message> + <source>Breakpoint: %1</source> + <translation>PuÅ‚apka: %1</translation> + </message> + <message> + <source>Watchpoint: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The CDB debug engine does not support the '%1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::Internal::CacheDirectoryDialog</name> + <message> + <source>Select Local Cache Folder</source> + <translation>Wybierz katalog z lokalnym cache</translation> + </message> + <message> + <source>Path:</source> + <translation>Åšcieżka:</translation> + </message> + <message> + <source>Already Exists</source> + <translation>Już istnieje</translation> + </message> + <message> + <source>A file named '%1' already exists.</source> + <translation>Plik o nazwie "%1" już istnieje.</translation> + </message> + <message> + <source>Cannot Create</source> + <translation>Nie można utworzyć</translation> + </message> + <message> + <source>The folder '%1' could not be created.</source> + <translation>Nie można utworzyć katalogu "%1".</translation> + </message> +</context> +<context> + <name>Debugger::Internal::Console</name> + <message> + <source>Clear Contents</source> + <translation>Wyczyść zawartość</translation> + </message> + <message> + <source>Save Contents</source> + <translation>Zachowaj zawartość</translation> + </message> + <message> + <source>Log File</source> + <translation>Plik dziennika</translation> + </message> + <message> + <source>Write Failure</source> + <translation>BÅ‚Ä…d zapisu</translation> + </message> + <message> + <source>Unable to write log contents to '%1': %2</source> + <translation>Nie można zapisać zawartoÅ›ci dziennika do "%1": %2</translation> + </message> +</context> +<context> + <name>Debugger::Internal::ConsoleWindow</name> + <message> + <source>Console</source> + <translation>Konsola</translation> + </message> +</context> +<context> + <name>Debugger::Internal::AttachTcfDialog</name> + <message> + <source>Select Executable</source> + <translation>Wybierz plik wykonywalny</translation> + </message> +</context> +<context> + <name>Debugger::DebuggerEnginePrivate</name> + <message> + <source>Remove Breakpoint %1</source> + <translation>UsuÅ„ puÅ‚apkÄ™ %1</translation> + </message> + <message> + <source>Disable Breakpoint %1</source> + <translation>WyÅ‚Ä…cz puÅ‚apkÄ™ %1</translation> + </message> + <message> + <source>Enable Breakpoint %1</source> + <translation>WÅ‚Ä…cz puÅ‚apkÄ™ %1</translation> + </message> + <message> + <source>Set Breakpoint at 0x%1</source> + <translation>Ustaw puÅ‚apkÄ™ w 0x%1</translation> + </message> + <message> + <source>Set Breakpoint at line %1</source> + <translation>Ustaw puÅ‚apkÄ™ w linii %1</translation> + </message> +</context> +<context> + <name>Debugger::DebuggerEngine</name> + <message> + <source>Symbol</source> + <translation>Symbol</translation> + </message> + <message> + <source>Address</source> + <translation>Adres</translation> + </message> + <message> + <source>Code</source> + <translation>Kod</translation> + </message> + <message> + <source>Symbols in "%1"</source> + <translation>Symbole w "%1"</translation> + </message> + <message> + <source>Launching</source> + <translation>Uruchamianie</translation> + </message> + <message> + <source>%1 (explicitly set in the Debugger Options)</source> + <translation>%1 (ustawione jawnie w opcjach debuggera)</translation> + </message> + <message> + <source>Open Qt4 Options</source> + <translation>Otwórz ustawienia Qt4</translation> + </message> + <message> + <source>Turn off Helper Usage</source> + <translation>WyÅ‚Ä…cz używanie asystenta</translation> + </message> + <message> + <source>Continue Anyway</source> + <translation>Kontynuuj</translation> + </message> + <message> + <source>Debugging Helper Missing</source> + <translation>Brak asystenta debuggera</translation> + </message> + <message> + <source>The debugger could not load the debugging helper library.</source> + <translation>Debugger nie mógÅ‚ zaÅ‚adować biblioteki asystenta debuggera.</translation> + </message> + <message> + <source>The debugging helper is used to nicely format the values of some Qt and Standard Library data types. It must be compiled for each used Qt version separately. On the Qt4 options page, select a Qt installation and click Rebuild.</source> + <translation>Asystent debuggera jest używany do Å‚adnego formatowania niektórych typów Qt i Biblioteki Standardowej. Musi być skompilowany oddzielnie dla każdej używanej wersji Qt. Można to zrobić z poziomu strony ustawieÅ„ Qt poprzez wybranie instalacji Qt i klikniÄ™cie na "Przebuduj" w linijce "Asystent debuggera".</translation> + </message> + <message> + <source>Turn off QML Observer Usage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>QML Observer Missing</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>QML Observer could not be found.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>QML Observer is used to offer additional debugging features for QML applications, such as interactive debugging and inspection tools.It must be compiled for each used Qt version separately. On the Qt4 options page, select a Qt installation and click Rebuild.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Taking notice of pid %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::DebuggerPlugin</name> + <message> + <source>Option '%1' is missing the parameter.</source> + <translation>Brak parametru w opcji "%1".</translation> + </message> + <message> + <source>The parameter '%1' of option '%2' is not a number.</source> + <translation>Parametr "%1" w opcji "%2" nie jest liczbÄ….</translation> + </message> + <message> + <source>Invalid debugger option: %1</source> + <translation>Niepoprawna opcja debuggera: %1</translation> + </message> + <message> + <source>The application requires the debugger engine '%1', which is disabled.</source> + <translation>Program wymaga silnika debuggera "%1", który jest wyÅ‚Ä…czony.</translation> + </message> +</context> +<context> + <name>Debugger::DebuggerPluginPrivate</name> + <message> + <source>QML Script Console</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Continue</source> + <translation>Kontynuuj</translation> + </message> + <message> + <source>Stop Debugger</source> + <translation>Zatrzymaj debugger</translation> + </message> + <message> + <source>Interrupt</source> + <translation>Przerwij</translation> + </message> + <message> + <source>Abort Debugging</source> + <translation>Przerwij debugowanie</translation> + </message> + <message> + <source>Aborts debugging and resets the debugger to the initial state.</source> + <translation>Przerywa debugowanie i przywraca debugger do stanu poczÄ…tkowego.</translation> + </message> + <message> + <source>Step Over</source> + <translation>Przeskocz</translation> + </message> + <message> + <source>Step Into</source> + <translation>Wskocz do wnÄ™trza</translation> + </message> + <message> + <source>Step Out</source> + <translation>Wyskocz na zewnÄ…trz</translation> + </message> + <message> + <source>Run to Line</source> + <translation>Uruchom do linii</translation> + </message> + <message> + <source>Run to Outermost Function</source> + <translation>Uruchom do skrajnej funkcji</translation> + </message> + <message> + <source>Immediately Return From Inner Function</source> + <translation>Powróć natychmiast z wewnÄ™trznej funkcji</translation> + </message> + <message> + <source>Jump to Line</source> + <translation>Skocz do linii</translation> + </message> + <message> + <source>Toggle Breakpoint</source> + <translation>PrzeÅ‚Ä…cz ustawienie puÅ‚apki</translation> + </message> + <message> + <source>Add to Watch Window</source> + <translation>Dodaj do okna obserwowanych</translation> + </message> + <message> + <source>Create Snapshot</source> + <translation>Utwórz zrzut</translation> + </message> + <message> + <source>Reverse Direction</source> + <translation>Odwrotny kierunek</translation> + </message> + <message> + <source>Move to Called Frame</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Move to Calling Frame</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>C++</source> + <translation type="obsolete">C++</translation> + </message> + <message> + <source>QML/JavaScript</source> + <translation type="obsolete">QML/JavaScript</translation> + </message> + <message> + <source>Error evaluating command line arguments: %1</source> + <translation>BÅ‚Ä…d podczas przetwarzania argumentów komendy: %1</translation> + </message> + <message> + <source>Start and Debug External Application...</source> + <translation>Uruchom i zdebuguj zewnÄ™trznÄ… aplikacjÄ™...</translation> + </message> + <message> + <source>Attach to Running External Application...</source> + <translation>DoÅ‚Ä…cz do uruchomionej zewnÄ™trznej aplikacji...</translation> + </message> + <message> + <source>Attach to Core...</source> + <translation>DoÅ‚Ä…cz do zrzutu...</translation> + </message> + <message> + <source>Attach to Running Tcf Agent...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This attaches to a running 'Target Communication Framework' agent.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Start and Attach to Remote Application...</source> + <translation>Uruchom i doÅ‚Ä…cz do zdalnej aplikacji...</translation> + </message> + <message> + <source>Detach Debugger</source> + <translation>OdÅ‚Ä…cz debugger</translation> + </message> + <message> + <source>Interrupt Debugger</source> + <translation>Przerwij debugger</translation> + </message> + <message> + <source>Reset Debugger</source> + <translation>Wyzeruj debugger</translation> + </message> + <message> + <source>Threads:</source> + <translation>WÄ…tki:</translation> + </message> + <message> + <source>Warning</source> + <translation>Ostrzeżenie</translation> + </message> + <message> + <source>Cannot attach to PID 0</source> + <translation>Nie można doÅ‚Ä…czyć do PID 0</translation> + </message> + <message> + <source>Process %1</source> + <translation>Proces %1</translation> + </message> + <message> + <source>Core file "%1"</source> + <translation>Plik zrzutu "%1"</translation> + </message> + <message> + <source>Remote: "%1"</source> + <translation>Zdalny: "%1"</translation> + </message> + <message> + <source>Attaching to PID %1.</source> + <translation>DoÅ‚Ä…czanie do PID %1.</translation> + </message> + <message> + <source>Attaching to remote server %1.</source> + <translation>DoÅ‚Ä…czanie do zdalnego serwera %1.</translation> + </message> + <message> + <source>Attaching to core %1.</source> + <translation>DoÅ‚Ä…czanie do zrzutu %1.</translation> + </message> + <message> + <source>Save Debugger Log</source> + <translation>Zachowaj dziennik debuggera</translation> + </message> +</context> +<context> + <name>Debugger::DebuggerRunControlFactory</name> + <message> + <source>Debug</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::DebuggerRunControl</name> + <message> + <source>Cannot debug '%1' (tool chain: '%2'): %3</source> + <translation>Nie można debugować "%1" (zestaw narzÄ™dzi: "%2"): %3</translation> + </message> + <message> + <source>Warning</source> + <translation>Ostrzeżenie</translation> + </message> + <message> + <source>Debugger</source> + <translation>Debugger</translation> + </message> + <message> + <source>Starting debugger '%1' for tool chain '%2'...</source> + <translation>Uruchamianie debuggera "%1" dla zestawu narzÄ™dzi "%2"...</translation> + </message> + <message> + <source>Debugging starts</source> + <translation>RozpoczÄ™to debugowanie</translation> + </message> + <message> + <source>Debugging has failed</source> + <translation>BÅ‚Ä…d debugowania</translation> + </message> + <message> + <source>Debugging has finished</source> + <translation>ZakoÅ„czono debugowanie</translation> + </message> + <message> + <source>A debugging session is still in progress. Terminating the session in the current state can leave the target in an inconsistent state. Would you still like to terminate it?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>A debugging session are still in progress. Terminating the session in the current state can leave the target in an inconsistent state. Would you still like to terminate it?</source> + <translation type="obsolete">Trwa sesja debugowa. ZakoÅ„czenie jej w bieżącym stanie może spowodować, że program znajdzie siÄ™ w niespójnym stanie. Czy wciąż chcesz jÄ… zakoÅ„czyć?</translation> + </message> + <message> + <source>Close Debugging Session</source> + <translation>ZakoÅ„cz sesjÄ™ debugowÄ…</translation> + </message> +</context> +<context> + <name>Debugger::Internal::AbstractPlainGdbAdapter</name> + <message> + <source>Starting executable failed: +</source> + <translation>Nie można uruchomić programu: +</translation> + </message> +</context> +<context> + <name>Debugger::Internal::AttachGdbAdapter</name> + <message> + <source>Attached to process %1.</source> + <translation>DoÅ‚Ä…czono do procesu %1</translation> + </message> +</context> +<context> + <name>Debugger::Internal::LocalPlainGdbAdapter</name> + <message> + <source>Cannot set up communication with child process: %1</source> + <translation>Nie można ustanowić komunikacji z podprocesem: %1</translation> + </message> + <message> + <source>This does not seem to be a "Debug" build. +Setting breakpoints by file name and line number may fail.</source> + <translation>Nie wyglÄ…da to na sesjÄ™ debugowÄ…. +Ustawianie puÅ‚apek może siÄ™ nie powieść.</translation> + </message> +</context> +<context> + <name>Debugger::Internal::RemoteGdbProcess</name> + <message> + <source>Connection could not be established.</source> + <translation>Nie można ustanowić poÅ‚Ä…czenia.</translation> + </message> + <message> + <source>Could not create FIFO.</source> + <translation>Nie można utworzyć FIFO.</translation> + </message> + <message> + <source>Application output reader unexpectedly finished.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Remote gdb failed to start.</source> + <translation>Nie można uruchomić zdalnego gdb.</translation> + </message> + <message> + <source>Remote gdb crashed.</source> + <translation>Zdalny gdb przerwaÅ‚ pracÄ™.</translation> + </message> +</context> +<context> + <name>Debugger::Internal::RemoteGdbServerAdapter</name> + <message> + <source>The upload process failed to start. Shell missing?</source> + <translation>Nie można rozpocząć procesu przesyÅ‚ania. Brak powÅ‚oki?</translation> + </message> + <message> + <source>The upload process crashed some time after starting successfully.</source> + <translation>Proces przesyÅ‚ania przerwany po poprawnym uruchomieniu.</translation> + </message> + <message> + <source>The last waitFor...() function timed out. The state of QProcess is unchanged, and you can try calling waitFor...() again.</source> + <translation>Ostatnie wywoÅ‚anie funkcji waitFor...() zakoÅ„czyÅ‚o siÄ™ niepowodzeniem po okreÅ›lonym czasie. Stan QProcess siÄ™ nie zmieniÅ‚, możesz ponownie spróbować wywoÅ‚ać waitFor...().</translation> + </message> + <message> + <source>An error occurred when attempting to write to the upload process. For example, the process may not be running, or it may have closed its input channel.</source> + <translation>WystÄ…piÅ‚ bÅ‚Ä…d podczas próby pisania do procesu przesyÅ‚ania. Proces może nie być uruchomiony lub zamknÄ…Å‚ on swój kanaÅ‚ wejÅ›ciowy.</translation> + </message> + <message> + <source>An error occurred when attempting to read from the upload process. For example, the process may not be running.</source> + <translation>WystÄ…piÅ‚ bÅ‚Ä…d podczas próby czytania z procesu przesyÅ‚ania. Proces może nie być uruchomiony.</translation> + </message> + <message> + <source>An unknown error in the upload process occurred. This is the default return value of error().</source> + <translation>WystÄ…piÅ‚ nieznany bÅ‚Ä…d podczas procesu przesyÅ‚ania. Jest to domyÅ›lna wartość zwrócona przez error().</translation> + </message> + <message> + <source>Error</source> + <translation>BÅ‚Ä…d</translation> + </message> + <message> + <source>No symbol file given.</source> + <translation>Brak pliku z symbolami.</translation> + </message> + <message> + <source>Reading debug information failed: +</source> + <translation>BÅ‚Ä…d odczytu informacji debugowej: +</translation> + </message> +</context> +<context> + <name>Debugger::Internal::TcfTrkGdbAdapter</name> + <message> + <source>Process started, PID: 0x%1, thread id: 0x%2, code segment: 0x%3, data segment: 0x%4.</source> + <translation>Proces uruchomiony, PID: 0x%1, identyfikator wÄ…tku: 0x%2, segment kodu: 0x%3, segment danych: 0x%4.</translation> + </message> + <message> + <source>The reported code segment address (0x%1) might be invalid. Symbol resolution or setting breakoints may not work.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connecting to TRK server adapter failed: +</source> + <translation>Nie można nawiÄ…zać poÅ‚Ä…czenia z adapterem serwera TRK: +</translation> + </message> +</context> +<context> + <name>Debugger::Internal::DebuggerPane</name> + <message> + <source>Clear Contents</source> + <translation>Wyczyść zawartość</translation> + </message> + <message> + <source>Save Contents</source> + <translation>Zachowaj zawartość</translation> + </message> + <message> + <source>Log File</source> + <translation>Plik dziennika</translation> + </message> + <message> + <source>Write Failure</source> + <translation>BÅ‚Ä…d zapisu</translation> + </message> + <message> + <source>Unable to write log contents to '%1': %2</source> + <translation>Nie można zapisać zawartoÅ›ci dziennika do "%1": %2</translation> + </message> +</context> +<context> + <name>Debugger::Internal::InputPane</name> + <message> + <source>Type Ctrl-<Return> to execute a line.</source> + <translation>NaciÅ›nij Ctrl-<Return> aby wykonać liniÄ™.</translation> + </message> +</context> +<context> + <name>Debugger::Internal::LogWindow</name> + <message> + <source>Log</source> + <translation>Dziennik</translation> + </message> +</context> +<context> + <name>Debugger::QmlAdapter</name> + <message> + <source>Connect to debug server %1:%2</source> + <translation>Nawiąż poÅ‚Ä…czenie z serwerem debugowym %1.%2</translation> + </message> + <message> + <source>Error: (%1) %2</source> + <comment>%1=error code, %2=error message</comment> + <translation>BÅ‚Ä…d: (%1) %2</translation> + </message> + <message> + <source>disconnected. + +</source> + <translation>rozÅ‚Ä…czony. +</translation> + </message> + <message> + <source>resolving host...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>connecting to debug server...</source> + <translation>Å‚Ä…czenie z serwerem debugowym...</translation> + </message> + <message> + <source>connected. +</source> + <translation>poÅ‚Ä…czony. +</translation> + </message> + <message> + <source>closing...</source> + <translation>zamykanie...</translation> + </message> +</context> +<context> + <name>Debugger::QmlCppEngine</name> + <message> + <source>%1 debugger activated</source> + <translation>Uaktywniono debugger %1</translation> + </message> +</context> +<context> + <name>Debugger::QmlEngine</name> + <message> + <source>QML Debugger connected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Failed to connect to debugger</source> + <translation>Nie można nawiÄ…zać poÅ‚Ä…czenia z debuggerem</translation> + </message> + <message> + <source>Could not connect to QML debugger server at %1:%2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>QML Debugger: Remote host closed connection.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>QML Debugger connecting...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Failed to start application</source> + <translation>Nie można uruchomić aplikacji</translation> + </message> + <message> + <source>Application startup failed: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Trying to stop while process is no longer running.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Stopped.</source> + <translation>Zatrzymano.</translation> + </message> + <message> + <source><p>An Uncaught Exception occured in <i>%1</i>:</p><p>%2</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Uncaught Exception</source> + <translation>NieobsÅ‚użony wyjÄ…tek</translation> + </message> + <message> + <source>QML Debugger disconnected.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Debugger::Internal::ScriptConsole</name> + <message> + <source><Type expression to evaluate></source> + <translation><Wpisz wyrażenie do wykonania></translation> + </message> + <message> + <source>Write and evaluate QtScript expressions.</source> + <translation>Wpisz i wykonaj polecenia QtScript.</translation> + </message> + <message> + <source>Script Console +</source> + <translation>Konsola skryptowa +</translation> + </message> +</context> +<context> + <name>Debugger::Internal::SourceFilesHandler</name> + <message> + <source>Internal name</source> + <translation>WewnÄ™trzna nazwa</translation> + </message> + <message> + <source>Full name</source> + <translation>PeÅ‚na nazwa</translation> + </message> +</context> +<context> + <name>Debugger::Internal::TcfEngine</name> + <message> + <source>%1.</source> + <translation>%1.</translation> + </message> + <message> + <source>Running requested...</source> + <translation>Zażądano uruchomienia...</translation> + </message> + <message> + <source>Stopped.</source> + <translation>Zatrzymano.</translation> + </message> +</context> +<context> + <name>Git::Internal::SettingsPageWidget</name> + <message> + <source>Set the environment variable HOME to '%1' +(%2). +This causes msysgit to look for the SSH-keys in that location +instead of its installation directory when run outside git bash.</source> + <translation>Ustaw zmiennÄ… Å›rodowiskowÄ… HOME na "%1" +(%2). +Spowoduje to że msysgit uruchomiony na zewnÄ…trz powÅ‚oki git +zacznie poszukiwać kluczy SSH w tym poÅ‚ożeniu +zamiast w jego katalogu instalacyjnym.</translation> + </message> + <message> + <source>not currently set</source> + <translation>aktualnie nie ustawiona</translation> + </message> + <message> + <source>currently set to '%1'</source> + <translation>aktualnie ustawiona na "%1"</translation> + </message> +</context> +<context> + <name>Help::Internal::ExternalHelpWindow</name> + <message> + <source>Show Sidebar</source> + <translation>Pokazuj boczny pasek</translation> + </message> + <message> + <source>Qt Creator Offline Help</source> + <translation>Pomoc offline Qt Creatora</translation> + </message> +</context> +<context> + <name>EditorManager</name> + <message> + <source>Next Open Document in History</source> + <translation>NastÄ™pny otwarty dokument w historii</translation> + </message> + <message> + <source>Previous Open Document in History</source> + <translation>Poprzedni otwarty dokument w historii</translation> + </message> +</context> +<context> + <name>Help::Internal::OpenPagesManager</name> + <message> + <source>Copy Full Path to Clipboard</source> + <translation>Skopiuj peÅ‚nÄ… Å›cieżkÄ™ do schowka</translation> + </message> +</context> +<context> + <name>Help::Internal::RemoteHelpFilter</name> + <message> + <source>Online Documentation</source> + <translation>Dokumentacja online</translation> + </message> +</context> +<context> + <name>ImageViewer::Internal::ImageViewerActionHandler</name> + <message> + <source>Zoom In</source> + <translation>PowiÄ™ksz</translation> + </message> + <message> + <source>Ctrl++</source> + <translation>Ctrl++</translation> + </message> + <message> + <source>Zoom Out</source> + <translation>Pomniejsz</translation> + </message> + <message> + <source>Ctrl+-</source> + <translation>Ctrl+-</translation> + </message> + <message> + <source>Original Size</source> + <translation>Oryginalny rozmiar</translation> + </message> + <message> + <source>Ctrl+0</source> + <translation>Ctrl+0</translation> + </message> + <message> + <source>Fit To Screen</source> + <translation>Dopasuj do ekranu</translation> + </message> + <message> + <source>Ctrl+=</source> + <translation>Ctrl+=</translation> + </message> + <message> + <source>Switch background</source> + <translation>PrzeÅ‚Ä…cz tÅ‚o</translation> + </message> + <message> + <source>Ctrl+[</source> + <translation>Ctrl+[</translation> + </message> + <message> + <source>Switch outline</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ctrl+]</source> + <translation>Ctrl+]</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::BuildStepListWidget</name> + <message> + <source>%1 Steps</source> + <extracomment>%1 is the name returned by BuildStepList::displayName</extracomment> + <translation>Kroki %1</translation> + </message> + <message> + <source>No %1 Steps</source> + <translation>Brak kroków %1</translation> + </message> + <message> + <source>Add %1 Step</source> + <translation>Dodaj krok %1</translation> + </message> + <message> + <source>Move Up</source> + <translation>PrzenieÅ› do góry</translation> + </message> + <message> + <source>Move Down</source> + <translation>PrzenieÅ› na dół</translation> + </message> + <message> + <source>Remove Item</source> + <translation>UsuÅ„ element</translation> + </message> + <message> + <source>Removing Step failed</source> + <translation>Nie można usunąć kroku</translation> + </message> + <message> + <source>Cannot remove build step while building</source> + <translation>Nie można usunąć kroku podczas budowania</translation> + </message> + <message> + <source>No Build Steps</source> + <translation>Brak kroków procesu budowania</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::CopyTaskHandler</name> + <message> + <source>error: </source> + <comment>Task is of type error</comment> + <translation>bÅ‚Ä…d:</translation> + </message> + <message> + <source>warning: </source> + <comment>Task is of type warning</comment> + <translation>ostrzeżenie:</translation> + </message> + <message> + <source>&Copy</source> + <comment>Name of the action triggering the copytaskhandler</comment> + <translation>S&kopiuj</translation> + </message> + <message> + <source>Copy task to clipboard</source> + <translation>Skopiuj zadanie do schowka</translation> + </message> +</context> +<context> + <name>ProjectExplorer::DeployConfiguration</name> + <message> + <source>Deploy</source> + <extracomment>Display name of the deploy build step list. Used as part of the labels in the project window.</extracomment> + <translation>Zainstaluj</translation> + </message> + <message> + <source>No deployment</source> + <extracomment>Default DeployConfiguration display name</extracomment> + <translation>Brak instalacji</translation> + </message> +</context> +<context> + <name>ProjectExplorer::DeployConfigurationFactory</name> + <message> + <source>Deploy Configuration</source> + <extracomment>Display name of the default deploy configuration</extracomment> + <translation>Konfiguracja instalacji</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::EditorSettingsWidget</name> + <message> + <source>Default</source> + <translation>DomyÅ›lne</translation> + </message> +</context> +<context> + <name>ProjectExplorer::RunControl</name> + <message> + <source>Application Still Running</source> + <translation>Program wciąż uruchomiony</translation> + </message> + <message> + <source>%1 is still running.</source> + <translation>%1 jest wciąż uruchomiony.</translation> + </message> + <message> + <source>Force it to quit?</source> + <translation>ZakoÅ„czyć go?</translation> + </message> + <message> + <source>Force Quit</source> + <translation>WymuÅ› zakoÅ„czenie</translation> + </message> + <message> + <source>Keep Running</source> + <translation>Pozostaw uruchomionym</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::ShowInEditorTaskHandler</name> + <message> + <source>&Show in editor</source> + <translation>&Pokaż w edytorze</translation> + </message> + <message> + <source>Show task location in an editor</source> + <translation>Pokaż poÅ‚ożenie zadania w edytorze</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::ShowOutputTaskHandler</name> + <message> + <source>Show &Output</source> + <translation>Pokaż &wyjÅ›cie</translation> + </message> + <message> + <source>Show output generating this issue.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::TaskWindow</name> + <message> + <source>Build Issues</source> + <translation>Problemy podczas budowania</translation> + </message> + <message> + <source>Show Warnings</source> + <translation>Pokazuj ostrzeżenia</translation> + </message> + <message> + <source>Filter by categories</source> + <translation>Przefiltruj wedÅ‚ug kategorii</translation> + </message> +</context> +<context> + <name>ProjectExplorer::UserFileAccessor</name> + <message> + <source>Project Settings File from a different Environment?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Qt Creator has found a .user settings file which was created for another development setup, maybe originating from another machine. + +The .user settings files contain environment specific settings. They should not be copied to a different environment. + +Do you still want to load the settings file?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::UserFileHandler</name> + <message> + <source>No deployment</source> + <translation>Brak instalacji</translation> + </message> + <message> + <source>Deploy to Maemo device</source> + <translation>Zainstaluj na urzÄ…dzeniu Maemo</translation> + </message> + <message> + <source>Deploy to Symbian device</source> + <translation>Zainstaluj na urzÄ…dzeniu Symbian</translation> + </message> +</context> +<context> + <name>ProjectExplorer::Internal::VcsAnnotateTaskHandler</name> + <message> + <source>&Annotate</source> + <translation>DoÅ‚Ä…cz &adnotacjÄ™</translation> + </message> +</context> +<context> + <name>QmlJSEditor::ComponentFromObjectDef</name> + <message> + <source>Move Component into separate file</source> + <translation>PrzenieÅ› komponent do osobnego pliku</translation> + </message> + <message> + <source>Move Component into '%1.qml'</source> + <translation>PrzenieÅ› komponent do "%1.qml"</translation> + </message> +</context> +<context> + <name>QmlJSEditor::Internal::ComponentNameDialog</name> + <message> + <source>Choose a path</source> + <translation>Wybierz Å›cieżkÄ™</translation> + </message> + <message> + <source>Invalid component name</source> + <translation>Niepoprawna nazwa komponentu</translation> + </message> + <message> + <source>Invalid path</source> + <translation>Niepoprawna Å›cieżka</translation> + </message> +</context> +<context> + <name>QmlJSEditor::FindReferences</name> + <message> + <source>Searching</source> + <translation>Przeszukiwanie</translation> + </message> +</context> +<context> + <name>QmlJSEditor::QuickFix</name> + <message> + <source>Split initializer</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlJSInspector::Internal::QmlInspectorToolbar</name> + <message> + <source>Apply Changes to Document</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Observer Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reload</source> + <translation>PrzeÅ‚aduj</translation> + </message> + <message> + <source>Play/Pause Animations</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Select</source> + <translation>Wybierz</translation> + </message> + <message> + <source>Zoom</source> + <translation>PowiÄ™ksz</translation> + </message> + <message> + <source>Color Picker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Live Preview Changes in QML Viewer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Animation Speed</source> + <translation>PrÄ™dkość animacji</translation> + </message> + <message> + <source>1x</source> + <translation>1x</translation> + </message> + <message> + <source>0.5x</source> + <translation>0.5x</translation> + </message> + <message> + <source>0.25x</source> + <translation>0.25x</translation> + </message> + <message> + <source>0.125x</source> + <translation>0.125x</translation> + </message> + <message> + <source>0.1x</source> + <translation>0.1x</translation> + </message> + <message> + <source>Pause</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlJSInspector::Internal::ContextCrumblePath</name> + <message> + <source>[no context]</source> + <translation>[brak kontekstu]</translation> + </message> +</context> +<context> + <name>QmlJSInspector::Internal::InspectorUi</name> + <message> + <source>Context Path</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>QML Observer</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QmlJSInspector::Internal::QmlJSLiveTextPreview</name> + <message> + <source>You changed a QML file in Live Preview mode, which modifies the running QML application. In case of unexpected behavior, please reload the QML application. </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Disable Live Preview</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The %1 attribute at line %2, column %3 cannot be changed without reloading the QML application. </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The %1 element at line %2, column %3 cannot be changed without reloading the QML application. </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>You can continue debugging, but behavior can be unexpected.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Reload</source> + <translation type="unfinished">PrzeÅ‚aduj</translation> + </message> +</context> +<context> + <name>QmlJSInspector::Internal::QmlJSObjectTree</name> + <message> + <source>Go to file</source> + <translation>Przejdź do pliku</translation> + </message> + <message> + <source>Url: </source> + <translation>Url: </translation> + </message> +</context> +<context> + <name>QmlJSInspector::ToolBarColorBox</name> + <message> + <source>Copy Color</source> + <translation>Skopiuj kolor</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::AddLibraryWizard</name> + <message> + <source>Add Library</source> + <translation>Dodaj bibliotekÄ™</translation> + </message> + <message> + <source>Type</source> + <translation>Typ</translation> + </message> + <message> + <source>Details</source> + <translation>Szczegóły</translation> + </message> + <message> + <source>Summary</source> + <translation>Podsumowanie</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::LibraryTypePage</name> + <message> + <source>Library Type</source> + <translation>Typ biblioteki</translation> + </message> + <message> + <source>Choose the type of the library to link to</source> + <translation>Wybierz typ biblioteki która ma zostać dowiÄ…zana</translation> + </message> + <message> + <source>System library</source> + <translation>Biblioteka systemowa</translation> + </message> + <message> + <source>Links to a system library. +Neither the path to the library nor the path to its includes is added to the .pro file.</source> + <translation>DowiÄ…zuje bibliotekÄ™ systemowÄ…. +Åšcieżki do biblioteki i jej nagłówków nie zostanÄ… dodane do pliku .pro.</translation> + </message> + <message> + <source>External library</source> + <translation>ZewnÄ™trzna biblioteka</translation> + </message> + <message> + <source>Links to a library that is not located in your build tree. +Adds the library and include paths to the .pro file.</source> + <translation>DowiÄ…zuje bibliotekÄ™ która jest poza drzewem budowy projektu. +Åšcieżki do biblioteki i jej nagłówków zostanÄ… dodane do pliku .pro.</translation> + </message> + <message> + <source>Internal library</source> + <translation>WewnÄ™trzna biblioteka</translation> + </message> + <message> + <source>Links to a library that is located in your build tree. +Adds the library and include paths to the .pro file.</source> + <translation>DowiÄ…zuje bibliotekÄ™ która jest wewnÄ…trz drzewa budowy projektu. +Åšcieżki do biblioteki i jej nagłówków zostanÄ… dodane do pliku .pro.</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::DetailsPage</name> + <message> + <source>System Library</source> + <translation>Biblioteka systemowa</translation> + </message> + <message> + <source>Specify the library to link to</source> + <translation>Wskaż bibliotekÄ™ która ma zostać dowiÄ…zana</translation> + </message> + <message> + <source>External Library</source> + <translation>ZewnÄ™trzna biblioteka</translation> + </message> + <message> + <source>Specify the library to link to and the includes path</source> + <translation>Wskaż bibliotekÄ™ która ma zostać dowiÄ…zana i podaj Å›cieżkÄ™ do jej nagłówków</translation> + </message> + <message> + <source>Internal Library</source> + <translation>WewnÄ™trzna biblioteka</translation> + </message> + <message> + <source>Choose the project file of the library to link to</source> + <translation>Wybierz plik projektu biblioteki która ma zostać dowiÄ…zana</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::SummaryPage</name> + <message> + <source>Summary</source> + <translation>Podsumowanie</translation> + </message> + <message> + <source>The following snippet will be added to the<br><b>%1</b> file:</source> + <translation>Do pliku <b>%1</b><br>zostanie dodany nastÄ™pujÄ…cy fragment:</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::LibraryDetailsController</name> + <message> + <source>Linkage:</source> + <translation>DowiÄ…zanie:</translation> + </message> + <message> + <source>%1 Dynamic</source> + <translation>%1 Dynamiczne</translation> + </message> + <message> + <source>%1 Static</source> + <translation>%1 Statyczne</translation> + </message> + <message> + <source>Mac:</source> + <translation>Mac:</translation> + </message> + <message> + <source>%1 Framework</source> + <translation>%1 Framework</translation> + </message> + <message> + <source>%1 Library</source> + <translation>%1 Biblioteka</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoDebugSupport</name> + <message> + <source>No device configuration set for run configuration.</source> + <translation>Brak konfiguracji urzÄ…dzenia dla konfiguracji uruchamiania.</translation> + </message> + <message> + <source>Preparing remote side ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Upload failed: Could not open file '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Started uploading debugging helpers ('%1').</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not upload debugging helpers: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Finished uploading debugging helpers.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Initial setup failed: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoDeployableListModel</name> + <message> + <source>File already in list.</source> + <translation>Plik już jest na liÅ›cie.</translation> + </message> + <message> + <source>Failed to update .pro file.</source> + <translation>Nie można uaktualnić pliku .pro.</translation> + </message> + <message> + <source>Could not update .pro file.</source> + <translation>Nie można uaktualnić pliku .pro.</translation> + </message> + <message> + <source>Local File Path</source> + <translation>Åšcieżka do lokalnego pliku</translation> + </message> + <message> + <source>Remote Directory</source> + <translation>Zdalny katalog</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoDeployableListWidget</name> + <message> + <source>Choose a local file</source> + <translation>Wybierz plik lokalny</translation> + </message> + <message> + <source>Error adding file</source> + <translation>BÅ‚Ä…d w trakcie dodawania pliku</translation> + </message> + <message> + <source>Error removing file</source> + <translation>BÅ‚Ä…d w trakcie usuwania pliku</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoDeployStep</name> + <message> + <source>Deploy to Maemo device</source> + <extracomment>MaemoDeployStep default display name</extracomment> + <translation>Zainstaluj na urzÄ…dzeniu Maemo</translation> + </message> + <message> + <source>Cannot start deployment, as the clean-up from the last time has not finished yet.</source> + <translation>Nie można rozpocząć instalowania ponieważ ostatnie czyszczenie nie zostaÅ‚o jeszcze zakoÅ„czone.</translation> + </message> + <message> + <source>Deployment failed: No valid device set.</source> + <translation>BÅ‚Ä…d instalowania: Nie ustawiono poprawnego urzÄ…dzenia.</translation> + </message> + <message> + <source>All files up to date, no installation necessary.</source> + <translation>Wszystkie pliki sÄ… aktualne, instalowanie zbyteczne.</translation> + </message> + <message> + <source>Could not connect to host: %1</source> + <translation>Nie można poÅ‚Ä…czyć siÄ™ z hostem: %1</translation> + </message> + <message> + <source>Upload failed: Could not open file '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Started uploading file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not set up SFTP connection: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Failed to upload file %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Successfully uploaded file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Deployment finished.</source> + <translation>ZakoÅ„czono instalowanie.</translation> + </message> + <message> + <source>Installing package to sysroot ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Installation to sysroot failed, continuing anyway.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copying files to sysroot ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sysroot installation failed: Could not copy '%1' to '%2'. Continuing anyway.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Connecting to device...</source> + <translation>NawiÄ…zywanie poÅ‚Ä…czenia z urzÄ…dzeniem...</translation> + </message> + <message> + <source>Installing package to device...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copying file '%1' to path '%2' on the device...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Device has not enough free ports for deployment.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Copying file '%1' failed.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Successfully copied file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>All files copied.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Installing package failed.</source> + <translation>BÅ‚Ä…d instalowania pakietu.</translation> + </message> + <message> + <source>Package installed.</source> + <translation>Zainstalowano pakiet.</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoDeployStepFactory</name> + <message> + <source>Deploy to device</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoDeployStepWidget</name> + <message> + <source><b>Deploy to device</b>: %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MaemoDeviceConfig</name> + <message> + <source>(Invalid device)</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoDeviceEnvReader</name> + <message> + <source>Could not connect to host: %1</source> + <translation type="unfinished">Nie można poÅ‚Ä…czyć siÄ™ z hostem: %1</translation> + </message> + <message> + <source>Error running remote process: %1</source> + <translation type="unfinished">BÅ‚Ä…d zdalnego procesu: %1</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoPackageCreationFactory</name> + <message> + <source>Create Debian Package</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoQemuManager</name> + <message> + <source>Start Maemo Emulator</source> + <translation type="unfinished">Uruchom emulator Maemo</translation> + </message> + <message> + <source>Qemu has been shut down, because you removed the corresponding Qt version.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Qemu finished with error: Exit code was %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Qemu failed to start: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Qemu crashed</source> + <translation type="unfinished">Qemu zakoÅ„czone bÅ‚Ä™dem</translation> + </message> + <message> + <source>Qemu error</source> + <translation type="unfinished">BÅ‚Ä…d Qemu</translation> + </message> + <message> + <source>Stop Maemo Emulator</source> + <translation type="unfinished">Zatrzymaj emulator Maemo</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoRemoteMounter</name> + <message> + <source>Unmounting remote mount points...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not execute unmount request.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Failure unmounting: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Finished unmounting.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source> +stderr was: '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Setting up SFTP connection...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Failed to establish SFTP connection: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Uploading UTFS client...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not upload UTFS client (%1).</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not upload UTFS client: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Starting remote UTFS clients...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Failure running UTFS client: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Starting UTFS servers...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source> +stderr was: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error running UTFS server: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Timeout waiting for UTFS servers to connect.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoRemoteMountsModel</name> + <message> + <source>Local directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Remote mount point</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoRunControl</name> + <message> + <source>No device configuration set for run configuration.</source> + <translation type="unfinished">Brak konfiguracji urzÄ…dzenia dla konfiguracji uruchamiania.</translation> + </message> + <message> + <source>Starting remote process ...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Finished running remote process. Exit code was %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Remote Execution Failure</source> + <translation type="unfinished">BÅ‚Ä…d zdalnego procesu</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoSshRunner</name> + <message> + <source>Cannot start deployment, as the clean-up from the last time has not finished yet.</source> + <translation type="unfinished">Nie można rozpocząć instalowania ponieważ ostatnie czyszczenie nie zostaÅ‚o jeszcze zakoÅ„czone.</translation> + </message> + <message> + <source>Connecting to device...</source> + <translation type="unfinished">NawiÄ…zywanie poÅ‚Ä…czenia z urzÄ…dzeniem...</translation> + </message> + <message> + <source>Could not connect to host: %1</source> + <translation type="unfinished">Nie można poÅ‚Ä…czyć siÄ™ z hostem: %1</translation> + </message> + <message> + <source>Killing remote process(es)...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Initial cleanup failed: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error running remote process: %1</source> + <translation type="unfinished">BÅ‚Ä…d zdalnego procesu: %1</translation> + </message> + <message> + <source>Cannot run: No remote executable set.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The device does not have enough free ports for this run configuration.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MaemoTemplatesManager</name> + <message> + <source>Unable to create Debian templates: dh_make failed (%1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Unable to create debian templates: dh_make failed (%1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Packaging Error: Cannot open file '%1'.</source> + <translation type="unfinished">BÅ‚Ä…d pakowania: Nie można otworzyć pliku "%1".</translation> + </message> + <message> + <source>Packaging Error: Cannot write file '%1'.</source> + <translation type="unfinished">BÅ‚Ä…d pakowania: Nie można zapisać pliku "%1".</translation> + </message> + <message> + <source>Debian changelog file '%1' has unexpected format.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error writing Debian changelog file '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Invalid icon data in Debian control file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not read image file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not export image file '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error writing file '%1': %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error creating Maemo templates</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>File '%1' does not exist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cannot open file '%1': %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::PassphraseForKeyDialog</name> + <message> + <source>Passphrase:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Save passphrase</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This is an insecure option. The password will be saved as a plain text.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Passphrase for %1</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60DeployConfiguration</name> + <message> + <source>Deploy %1 to Symbian device</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Deploy to Symbian device</source> + <translation type="unfinished">Zainstaluj na urzÄ…dzeniu Symbian</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60DeployConfigurationFactory</name> + <message> + <source>%1 on Symbian Device</source> + <translation type="unfinished">%1 na urzÄ…dzeniu Symbian</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60DeployConfigurationWidget</name> + <message> + <source>Device:</source> + <translation type="unfinished">UrzÄ…dzenie:</translation> + </message> + <message> + <source>Silent installation</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Installation file:</source> + <translation type="unfinished">Plik instalacyjny:</translation> + </message> + <message> + <source>Silent installation is an installation mode that does not require user's intervention. In case it fails the non silent installation is launched.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Installation drive:</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Device on serial port:</source> + <translation type="unfinished">UrzÄ…dzenie na porcie szeregowym:</translation> + </message> + <message> + <source>Queries the device for information</source> + <translation type="unfinished">Zapytaj urzÄ…dzenie o informacje</translation> + </message> + <message> + <source>Connecting...</source> + <translation type="unfinished">ÅÄ…czenie...</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60DeployStep</name> + <message> + <source>Unable to remove existing file '%1': %2</source> + <translation type="unfinished">Nie można usunąć istniejÄ…cego pliku "%1": %2</translation> + </message> + <message> + <source>Unable to rename file '%1' to '%2': %3</source> + <translation type="unfinished">Nie można zmienić nazwy pliku "%1" na "%2": %3</translation> + </message> + <message> + <source>Deploy</source> + <extracomment>Qt4 Deploystep display name</extracomment> + <translation type="unfinished">Zainstaluj</translation> + </message> + <message> + <source>Renaming new package '%1' to '%2'</source> + <translation type="unfinished">Zmienianie nazwy pakietu "%1" na "%2"</translation> + </message> + <message> + <source>Removing old package '%1'</source> + <translation type="unfinished">Usuwanie starego pakietu "%1"</translation> + </message> + <message> + <source>'%1': Package file not found</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>There is no device plugged in.</source> + <translation type="unfinished">Brak podÅ‚Ä…czonego urzÄ…dzenia.</translation> + </message> + <message> + <source>Failed to find package %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Deploying application to '%2'...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not connect to phone on port '%1': %2 +Check if the phone is connected and App TRK is running.</source> + <translation type="unfinished">Nie można nawiÄ…zać poÅ‚Ä…czenia z telefonem na porcie "%1": %2 +Sprawdź czy telefon jest podÅ‚Ä…czony i czy aplikacja TRK jest uruchomiona.</translation> + </message> + <message> + <source>Canceled.</source> + <translation type="unfinished">Anulowano.</translation> + </message> + <message> + <source>Could not create file %1 on device: %2</source> + <translation type="unfinished">Nie można utworzyć pliku %1 na urzÄ…dzeniu: %2</translation> + </message> + <message> + <source>Could not write to file %1 on device: %2</source> + <translation type="unfinished">Nie można zapisać do pliku %1 na urzÄ…dzeniu: %2</translation> + </message> + <message> + <source>Could not close file %1 on device: %2. It will be closed when App TRK is closed.</source> + <translation type="unfinished">Nie można zamknąć pliku %1 w urzÄ…dzeniu: %2, bÄ™dzie on zamkniÄ™ty gdy aplikacja TRK zostanie zakoÅ„czona.</translation> + </message> + <message> + <source>Could not connect to App TRK on device: %1. Restarting App TRK might help.</source> + <translation type="unfinished">Nie można ustanowić poÅ‚Ä…czenia z aplikacjÄ… TRK w urzÄ…dzeniu: %1. Spróbuj ponownie uruchomić aplikacjÄ™ TRK.</translation> + </message> + <message> + <source>Copying "%1"...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Installing package "%1" on drive %2:...</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Installation has finished</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not install from package %1 on device: %2</source> + <translation type="unfinished">Nie można zainstalować z pakietu %1 na urzÄ…dzeniu: %2</translation> + </message> + <message> + <source>The device '%1' has been disconnected</source> + <translation type="unfinished">UrzÄ…dzenie "%1" zostaÅ‚o odÅ‚Ä…czone</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60DeployStepWidget</name> + <message> + <source>Deploy SIS Package</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::S60DeployStepFactory</name> + <message> + <source>Deploy SIS Package</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::SbsV2Parser</name> + <message> + <source>SBSv2 build log</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The file '%1' is not a SBSv2 log file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Running command: %1 +</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Recipe %1 failed with exit code %2.</source> + <extracomment>%1 is the SBSv2 build recipe name, %2 the return code of the failed command</extracomment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::Qt4DeployConfigurationFactory</name> + <message> + <source>Deploy to Symbian device</source> + <translation type="unfinished">Zainstaluj na urzÄ…dzeniu Symbian</translation> + </message> + <message> + <source>Deploy to Maemo device</source> + <translation type="unfinished">Zainstaluj na urzÄ…dzeniu Maemo</translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::AbstractMobileApp</name> + <message> + <source>Could not open desktop file template</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not open main.cpp template '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not open project file template '%1'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not open template file '%1'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::AbstractMobileAppWizardDialog</name> + <message> + <source>Qt versions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Application options</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>MobileAppWizard</name> + <message> + <source>Mobile Qt Application</source> + <translation type="unfinished">Mobilna aplikacja Qt</translation> + </message> + <message> + <source>Creates a Qt application optimized for mobile devices with a Qt Designer-based main window. + +Preselects Qt for Simulator and mobile targets if available.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::MobileAppWizardOptionsPage</name> + <message> + <source>Auto rotate orientation</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Lock to landscape orientation</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Lock to portrait orientation</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The file is not a valid image.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The icon has an invalid size.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Icon unusable</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::QmlStandaloneApp</name> + <message> + <source>The QML import path '%1' cannot be found.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The QML module '%1' cannot be found.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Invalid '%1' entry in '%2' of module '%3'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>No .pro file for plugin '%1' cannot be found.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Could not write file '%1'.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::QmlStandaloneAppWizardDialog</name> + <message> + <source>New QML Project</source> + <translation type="obsolete">Nowy projekt QML</translation> + </message> + <message> + <source>This wizard generates a QML application project.</source> + <translation type="obsolete">Ten kreator generuje projekt aplikacji QML.</translation> + </message> + <message> + <source>New Qt Quick Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Qt Quick Application from Existing QML Directory</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This wizard generates a Qt Quick application project.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>This wizard imports an existing QML directory and creates a Qt Quick application project from it.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>QML Sources</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::QmlStandaloneAppWizard</name> + <message> + <source>Qt QML Application</source> + <translation type="obsolete">Aplikacja Qt QML</translation> + </message> + <message> + <source>Qt Quick Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Import Existing QML Directory</source> + <translation type="unfinished">Import istniejÄ…cego katalogu QML</translation> + </message> + <message> + <source>Creates a Qt Quick application that you can deploy to mobile devices.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Imports an existing QML directory and converts it into a Qt Quick application project. You can deploy the application to mobile devices.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Qt4ProjectManager::Internal::QmlStandaloneAppWizardSourcesPage</name> + <message> + <source>Select the main QML file of the application.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Select an import path for QML modules.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TaskList::Internal::StopMonitoringHandler</name> + <message> + <source>Stop monitoring</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Stop monitoring task files.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TaskList::Internal::TaskFileFactory</name> + <message> + <source>Task file reader</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TaskList::TaskListPlugin</name> + <message> + <source>My Tasks</source> + <extracomment>Category under which tasklist tasks are listed in build issues view</extracomment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TextEditor::HighlighterSettingsPage</name> + <message> + <source>Generic Highlighter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Download Definitions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Autodetect</source> + <translation type="unfinished">Wykryj automatycznie</translation> + </message> + <message> + <source>Autodetect Definitions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>No pre-installed definitions could be found.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error connecting to server.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Not possible to retrieve data.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TextEditor::Internal::ManageDefinitionsDialog</name> + <message> + <source>Name</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Installed</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Available</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Download Definitions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Download Information</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>There is already one download in progress. Please wait until it is finished.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TextEditor::Internal::Manager</name> + <message> + <source>Registering definitions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Downloading definitions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error downloading selected definition(s).</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Error downloading one or more definitions.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source> +Please check the directory's access rights.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Download Error</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>TextEditor::Internal::OutlineWidgetStack</name> + <message> + <source>No outline available</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Synchronize with Editor</source> + <translation type="unfinished">Synchronizuj z edytorem</translation> + </message> + <message> + <source>Filter tree</source> + <translation type="unfinished">Przefiltruj drzewo</translation> + </message> +</context> +<context> + <name>TextEditor::Internal::OutlineFactory</name> + <message> + <source>Outline</source> + <translation type="unfinished">Kontur</translation> + </message> +</context> +<context> + <name>TextEditor::Internal::PlainTextEditorFactory</name> + <message> + <source>A highlight definition was not found for this file. Would you like to try to find one?</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Show highlighter options</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>QDeclarativeViewer</name> + <message> + <source>&Open...</source> + <translation type="obsolete">&Otwórz...</translation> + </message> + <message> + <source>1x</source> + <translation type="obsolete">1x</translation> + </message> + <message> + <source>0.5x</source> + <translation type="obsolete">0.5x</translation> + </message> + <message> + <source>0.25x</source> + <translation type="obsolete">0.25x</translation> + </message> + <message> + <source>0.125x</source> + <translation type="obsolete">0.125x</translation> + </message> + <message> + <source>0.1x</source> + <translation type="obsolete">0.1x</translation> + </message> + <message> + <source>Show Warnings</source> + <translation type="obsolete">Pokazuj ostrzeżenia</translation> + </message> + <message> + <source>Full Screen</source> + <translation type="obsolete">PeÅ‚ny ekran</translation> + </message> + <message> + <source>&Quit</source> + <translation type="obsolete">Za&koÅ„cz</translation> + </message> + <message> + <source>&File</source> + <translation type="obsolete">&Plik</translation> + </message> + <message> + <source>Properties</source> + <translation type="obsolete">WÅ‚aÅ›ciwoÅ›ci</translation> + </message> + <message> + <source>&Help</source> + <translation type="obsolete">P&omoc</translation> + </message> + <message> + <source>Cancel</source> + <translation type="obsolete">Anuluj</translation> + </message> +</context> +<context> + <name>ProjectExplorer::BuildableHelperLibrary</name> + <message> + <source>Building helper library '%1' in %2 +</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Running %1 %2... +</source> + <translation type="unfinished">Uruchamianie %1 %2... +</translation> + </message> + <message> + <source>Running %1 ... +</source> + <translation type="unfinished">Uruchamianie %1... +</translation> + </message> + <message> + <source>%1 not found in PATH +</source> + <translation type="unfinished">Nie znaleziono %1 w zmiennej PATH +</translation> + </message> +</context> +<context> + <name>QmlJSEditor::Internal::QmlJSOutlineWidget</name> + <message> + <source>Show All Bindings</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::QmlDumpTool</name> + <message> + <source>qmldump could not be built in any of the directories: +- %1 + +Reason: %2</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>ProjectExplorer::QmlObserverTool</name> + <message> + <source>The target directory %1 could not be created.</source> + <translation type="unfinished">Nie można utworzyć docelowego katalogu %1.</translation> + </message> + <message> + <source>QMLObserver could not be built in any of the directories: +- %1 + +Reason: %2</source> + <translation type="unfinished"></translation> </message> </context> </TS> diff --git a/src/app/Info.plist b/src/app/Info.plist index 8dc51bdf57233b3d1ba51dbfb09daeeea613f9f5..ce122da3a21fa211a3a00743c70b147b131f102f 100644 --- a/src/app/Info.plist +++ b/src/app/Info.plist @@ -212,8 +212,8 @@ <key>CFBundleIdentifier</key> <string>com.nokia.qtcreator</string> <key>CFBundleVersion</key> - <string>2.0.91</string> + <string>2.1.81</string> <key>CFBundleShortVersionString</key> - <string>2.0.91</string> + <string>2.1.81</string> </dict> </plist> diff --git a/src/libs/cplusplus/cplusplus-lib.pri b/src/libs/cplusplus/cplusplus-lib.pri index 5d0266c2af2f071f77bc3d57fe4490e288d406a4..2a718d5712b359407a1a85ed9856d4b28bef2836 100644 --- a/src/libs/cplusplus/cplusplus-lib.pri +++ b/src/libs/cplusplus/cplusplus-lib.pri @@ -48,8 +48,7 @@ HEADERS += \ $$PWD/pp-cctype.h \ $$PWD/pp-engine.h \ $$PWD/pp-macro-expander.h \ - $$PWD/pp-scanner.h \ - $$PWD/InsertionPointLocator.h + $$PWD/pp-scanner.h SOURCES += \ $$PWD/SimpleLexer.cpp \ @@ -73,7 +72,6 @@ SOURCES += \ $$PWD/Macro.cpp \ $$PWD/pp-engine.cpp \ $$PWD/pp-macro-expander.cpp \ - $$PWD/pp-scanner.cpp \ - $$PWD/InsertionPointLocator.cpp + $$PWD/pp-scanner.cpp RESOURCES += $$PWD/cplusplus.qrc diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp index d1f0847c994fdc97a19777761ec6bc26d6d47528..1cdf8e2b5e0b083b9b7eaf24927ec2a401340258 100644 --- a/src/libs/qmljs/qmljsbind.cpp +++ b/src/libs/qmljs/qmljsbind.cpp @@ -232,7 +232,7 @@ bool Bind::visit(UiImport *ast) bool Bind::visit(UiPublicMember *) { // nothing to do. - return false; + return true; } bool Bind::visit(UiObjectDefinition *ast) diff --git a/src/libs/qmljs/qmljscodeformatter.cpp b/src/libs/qmljs/qmljscodeformatter.cpp index 3213cf31e2fe5bc1cb2abf2918d14cdb6320a161..7ec947b45258f5182608818dec6ad78956bf0add 100644 --- a/src/libs/qmljs/qmljscodeformatter.cpp +++ b/src/libs/qmljs/qmljscodeformatter.cpp @@ -645,6 +645,7 @@ bool CodeFormatter::tryStatement() return true; case Break: case Continue: + enter(breakcontinue_statement); leave(true); return true; case Throw: diff --git a/src/libs/qmljs/qmljscodeformatter.h b/src/libs/qmljs/qmljscodeformatter.h index aad77a5f527ff58ceaf96a3651cfe940c96f31ac..da22601bcfa992180fe149ac3d9812b1a73207b9 100644 --- a/src/libs/qmljs/qmljscodeformatter.h +++ b/src/libs/qmljs/qmljscodeformatter.h @@ -143,7 +143,8 @@ public: // must be public to make Q_GADGET introspection work jsblock_open, - empty_statement, // for a ';', will never linger + empty_statement, // for a ';', will be popped directly + breakcontinue_statement, // for continue/break, will be popped directly if_statement, // After 'if' maybe_else, // after the first substatement in an if diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index 302a6df599bb10c11d3f58a80affa637eb0840d6..ea5166ef43d7fa9c4774b5c5f8af049b57e613fe 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -199,13 +199,19 @@ public: }; class FakeMetaObject { - FakeMetaObject(FakeMetaObject&); - FakeMetaObject &operator=(const FakeMetaObject&); + Q_DISABLE_COPY(FakeMetaObject) - QString m_name; - QString m_package; - QString m_packageNameVersion; - ComponentVersion m_version; +public: + class Export { + public: + QString package; + QString type; + QmlJS::ComponentVersion version; + QString packageNameVersion; + }; + +private: + QList<Export> m_exports; const FakeMetaObject *m_super; QString m_superName; QList<FakeMetaEnum> m_enums; @@ -216,13 +222,25 @@ class FakeMetaObject { QString m_defaultPropertyName; public: - FakeMetaObject(const QString &name, const QString &package, ComponentVersion version) - : m_name(name), m_package(package), m_version(version), m_super(0) + FakeMetaObject() + : m_super(0) { - m_packageNameVersion = QString::fromLatin1("%1.%2 %3.%4").arg( + } + + void addExport(const QString &name, const QString &package, QmlJS::ComponentVersion version) + { + Export exp; + exp.type = name; + exp.package = package; + exp.version = version; + exp.packageNameVersion = QString::fromLatin1("%1.%2 %3.%4").arg( package, name, - QString::number(version.majorVersion()), QString::number(version.minorVersion())); + QString::number(version.majorVersion()), + QString::number(version.minorVersion())); + m_exports.append(exp); } + QList<Export> exports() const + { return m_exports; } void setSuperclassName(const QString &superclass) { m_superName = superclass; } @@ -233,12 +251,6 @@ public: { m_super = superClass; } const FakeMetaObject *superClass() const { return m_super; } - QString className() const - { return m_name; } - QString packageName() const - { return m_package; } - QString packageClassVersionString() const - { return m_packageNameVersion; } void addEnum(const FakeMetaEnum &fakeEnum) { m_enumNameToIndex.insert(fakeEnum.name(), m_enums.size()); m_enums.append(fakeEnum); } @@ -271,9 +283,6 @@ public: FakeMetaMethod method(int index) const { return m_methods.at(index); } - ComponentVersion version() const - { return m_version; } - QString defaultPropertyName() const { return m_defaultPropertyName; } @@ -404,38 +413,14 @@ private: QString name, defaultPropertyName; QmlJS::ComponentVersion version; QString extends; + QString id; foreach (const QXmlStreamAttribute &attr, _xml.attributes()) { if (attr.name() == QLatin1String("name")) { - name = attr.value().toString(); - if (name.isEmpty()) { + id = attr.value().toString(); + if (id.isEmpty()) { invalidAttr(name, QLatin1String("name"), tag); return; } - } else if (attr.name() == QLatin1String("version")) { - QString versionStr = attr.value().toString(); - int dotIdx = versionStr.indexOf('.'); - if (dotIdx == -1) { - bool ok = false; - const int major = versionStr.toInt(&ok); - if (!ok) { - invalidAttr(versionStr, QLatin1String("version"), tag); - return; - } - version = QmlJS::ComponentVersion(major, QmlJS::ComponentVersion::NoVersion); - } else { - bool ok = false; - const int major = versionStr.left(dotIdx).toInt(&ok); - if (!ok) { - invalidAttr(versionStr, QLatin1String("version"), tag); - return; - } - const int minor = versionStr.mid(dotIdx + 1).toInt(&ok); - if (!ok) { - invalidAttr(versionStr, QLatin1String("version"), tag); - return; - } - version = QmlJS::ComponentVersion(major, minor); - } } else if (attr.name() == QLatin1String("defaultProperty")) { defaultPropertyName = attr.value().toString(); } else if (attr.name() == QLatin1String("extends")) { @@ -451,9 +436,7 @@ private: } } - QString className, packageName; - split(name, &packageName, &className); - FakeMetaObject *metaObject = new FakeMetaObject(className, packageName, version); + FakeMetaObject *metaObject = new FakeMetaObject; if (! extends.isEmpty()) metaObject->setSuperclassName(extends); if (! defaultPropertyName.isEmpty()) @@ -468,14 +451,19 @@ private: readSignal(metaObject); else if (_xml.name() == QLatin1String("method")) readMethod(metaObject); + else if (_xml.name() == QLatin1String("exports")) + readExports(metaObject); else unexpectedElement(_xml.name(), tag); } - if (doInsert) - _objects->insert(name, metaObject); - else + metaObject->addExport(id, QString(), QmlJS::ComponentVersion()); + + if (doInsert) { + _objects->insert(id, metaObject); + } else { delete metaObject; + } } bool split(const QString &name, QString *packageName, QString *className) { @@ -706,6 +694,60 @@ private: metaObject->addMethod(method); } + void readExports(FakeMetaObject *metaObject) + { + Q_ASSERT(metaObject); + QLatin1String tag("exports"); + QLatin1String childTag("export"); + Q_ASSERT(_xml.isStartElement() && _xml.name() == tag); + + while (_xml.readNextStartElement()) { + if (_xml.name() == childTag) { + QString type; + QString package; + QmlJS::ComponentVersion version; + foreach (const QXmlStreamAttribute &attr, _xml.attributes()) { + if (attr.name() == QLatin1String("module")) { + package = attr.value().toString(); + } else if (attr.name() == QLatin1String("type")) { + type = attr.value().toString(); + } else if (attr.name() == QLatin1String("version")) { + QString versionStr = attr.value().toString(); + int dotIdx = versionStr.indexOf('.'); + if (dotIdx == -1) { + bool ok = false; + const int major = versionStr.toInt(&ok); + if (!ok) { + invalidAttr(versionStr, QLatin1String("version"), childTag); + continue; + } + version = QmlJS::ComponentVersion(major, QmlJS::ComponentVersion::NoVersion); + } else { + bool ok = false; + const int major = versionStr.left(dotIdx).toInt(&ok); + if (!ok) { + invalidAttr(versionStr, QLatin1String("version"), childTag); + continue; + } + const int minor = versionStr.mid(dotIdx + 1).toInt(&ok); + if (!ok) { + invalidAttr(versionStr, QLatin1String("version"), childTag); + continue; + } + version = QmlJS::ComponentVersion(major, minor); + } + } else { + ignoreAttr(attr); + } + } + metaObject->addExport(type, package, version); + } else { + unexpectedElement(_xml.name(), childTag); + } + _xml.skipCurrentElement(); // the <export> tag should be empty anyhow + } + } + private: QXmlStreamReader _xml; QMap<QString, FakeMetaObject *> *_objects; @@ -713,11 +755,12 @@ private: } // end of anonymous namespace -QmlObjectValue::QmlObjectValue(const FakeMetaObject *metaObject, Engine *engine) +QmlObjectValue::QmlObjectValue(const FakeMetaObject *metaObject, int exportIndex, Engine *engine) : ObjectValue(engine), - _metaObject(metaObject) + _metaObject(metaObject), + _exportIndex(exportIndex) { - setClassName(metaObject->className()); // ### TODO: we probably need to do more than just this... + setClassName(metaObject->exports().at(exportIndex).type); // ### TODO: we probably need to do more than just this... } QmlObjectValue::~QmlObjectValue() @@ -834,10 +877,10 @@ const Value *QmlObjectValue::propertyValue(const FakeMetaProperty &prop) const } QString QmlObjectValue::packageName() const -{ return _metaObject->packageName(); } +{ return _metaObject->exports().at(_exportIndex).package; } QmlJS::ComponentVersion QmlObjectValue::version() const -{ return _metaObject->version(); } +{ return _metaObject->exports().at(_exportIndex).version; } QString QmlObjectValue::defaultPropertyName() const { return _metaObject->defaultPropertyName(); } @@ -890,7 +933,7 @@ bool QmlObjectValue::hasChildInPackage() const while (it.hasNext()) { it.next(); const FakeMetaObject *other = it.value()->_metaObject; - if (other->packageName().isEmpty()) + if (other->exports().isEmpty()) continue; for (const FakeMetaObject *iter = other; iter; iter = iter->superClass()) { if (iter == _metaObject) // this object is a parent of other @@ -1981,21 +2024,42 @@ void CppQmlTypes::load(Engine *engine, const QList<const FakeMetaObject *> &obje { // load foreach (const FakeMetaObject *metaObject, objects) { - // make sure we're not loading duplicate objects - if (_typesByFullyQualifiedName.contains(metaObject->packageClassVersionString())) - continue; - - QmlObjectValue *objectValue = new QmlObjectValue(metaObject, engine); - _typesByPackage[metaObject->packageName()].append(objectValue); - _typesByFullyQualifiedName[metaObject->packageClassVersionString()] = objectValue; + for (int i = 0; i < metaObject->exports().size(); ++i) { + const FakeMetaObject::Export &exp = metaObject->exports().at(i); + // make sure we're not loading duplicate objects + if (_typesByFullyQualifiedName.contains(exp.packageNameVersion)) + continue; + + QmlObjectValue *objectValue = new QmlObjectValue(metaObject, i, engine); + _typesByPackage[exp.package].append(objectValue); + _typesByFullyQualifiedName[exp.packageNameVersion] = objectValue; + } } // set prototype correctly foreach (const FakeMetaObject *metaObject, objects) { - QmlObjectValue *objectValue = _typesByFullyQualifiedName.value(metaObject->packageClassVersionString()); - if (!objectValue || !metaObject->superClass()) - continue; - objectValue->setPrototype(_typesByFullyQualifiedName.value(metaObject->superClass()->packageClassVersionString())); + foreach (const FakeMetaObject::Export &exp, metaObject->exports()) { + QmlObjectValue *objectValue = _typesByFullyQualifiedName.value(exp.packageNameVersion); + if (!objectValue || !metaObject->superClass()) + continue; + bool found = false; + // try to get a prototype from the library first + foreach (const FakeMetaObject::Export &superExports, metaObject->superClass()->exports()) { + if (superExports.package == exp.package) { + objectValue->setPrototype(_typesByFullyQualifiedName.value(superExports.packageNameVersion)); + found = true; + break; + } + } + if (found) + continue; + // otherwise, just use the first available + if (!metaObject->superClass()->exports().isEmpty()) { + objectValue->setPrototype(_typesByFullyQualifiedName.value(metaObject->superClass()->exports().first().packageNameVersion)); + continue; + } + //qWarning() << "Could not find super class for " << exp.packageNameVersion; + } } } diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 96df1ebbc153cf49c1461803c975c54d1121b38a..74858486b5d37f32d62a6ce00bd4c68e5484df5f 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -383,7 +383,7 @@ private: class QMLJS_EXPORT QmlObjectValue: public ObjectValue { public: - QmlObjectValue(const FakeMetaObject *metaObject, Engine *engine); + QmlObjectValue(const FakeMetaObject *metaObject, int exportIndex, Engine *engine); virtual ~QmlObjectValue(); virtual void processMembers(MemberProcessor *processor) const; @@ -404,6 +404,7 @@ protected: private: const FakeMetaObject *_metaObject; + const int _exportIndex; mutable QHash<int, const Value *> _metaSignature; }; diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.h b/src/libs/qmljs/qmljsmodelmanagerinterface.h index 938087f45406b2710aab9ecbf23e96a27e72ec93..642e2a065212560fd86abc8297c4a17f564fcb28 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.h +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.h @@ -76,6 +76,7 @@ public: QPointer<ProjectExplorer::Project> project; QStringList sourceFiles; QStringList importPaths; + QString qmlDumpPath; }; class WorkingCopy diff --git a/src/libs/qmljs/qmljsscopebuilder.cpp b/src/libs/qmljs/qmljsscopebuilder.cpp index d1c9374b1d3d71e5e6d872d9018a99e546cff8fc..2fbdc0403c6514b0d1ab1d6486d3a12a645705e7 100644 --- a/src/libs/qmljs/qmljsscopebuilder.cpp +++ b/src/libs/qmljs/qmljsscopebuilder.cpp @@ -282,7 +282,8 @@ const ObjectValue *ScopeBuilder::isPropertyChangesObject(const Context *context, while (prototype) { if (const QmlObjectValue *qmlMetaObject = dynamic_cast<const QmlObjectValue *>(prototype)) { if (qmlMetaObject->className() == QLatin1String("PropertyChanges") - && qmlMetaObject->packageName() == QLatin1String("Qt")) + && (qmlMetaObject->packageName() == QLatin1String("Qt") + || qmlMetaObject->packageName() == QLatin1String("QtQuick"))) return prototype; } prototype = prototype->prototype(context); diff --git a/src/libs/qmljsdebugclient/qdeclarativedebug.cpp b/src/libs/qmljsdebugclient/qdeclarativedebug.cpp index 1c78a7c91cffed39320ef23ae72ca537d29638af..e3b653008ec43805d4bec4bcff0d68c0f59d9149 100644 --- a/src/libs/qmljsdebugclient/qdeclarativedebug.cpp +++ b/src/libs/qmljsdebugclient/qdeclarativedebug.cpp @@ -51,18 +51,22 @@ public: QDeclarativeEngineDebugClient(QDeclarativeDebugConnection *client, QDeclarativeEngineDebugPrivate *p); protected: + virtual void statusChanged(Status status); virtual void messageReceived(const QByteArray &); private: QDeclarativeEngineDebugPrivate *priv; + friend class QDeclarativeEngineDebugPrivate; }; class QDeclarativeEngineDebugPrivate { // Q_DECLARE_PUBLIC(QDeclarativeEngineDebug) public: - QDeclarativeEngineDebugPrivate(QDeclarativeDebugConnection *); + QDeclarativeEngineDebugPrivate(QDeclarativeEngineDebug *, QDeclarativeDebugConnection *); + ~QDeclarativeEngineDebugPrivate(); + void statusChanged(QDeclarativeEngineDebug::Status status); void message(const QByteArray &); QDeclarativeEngineDebugClient *client; @@ -90,19 +94,31 @@ QDeclarativeEngineDebugClient::QDeclarativeEngineDebugClient(QDeclarativeDebugCo QDeclarativeEngineDebugPrivate *p) : QDeclarativeDebugClient(QLatin1String("QDeclarativeEngine"), client), priv(p) { - setEnabled(true); +} + +void QDeclarativeEngineDebugClient::statusChanged(Status status) +{ + if (priv) + priv->statusChanged(static_cast<QDeclarativeEngineDebug::Status>(status)); } void QDeclarativeEngineDebugClient::messageReceived(const QByteArray &data) { - priv->message(data); + if (priv) + priv->message(data); } -QDeclarativeEngineDebugPrivate::QDeclarativeEngineDebugPrivate(QDeclarativeDebugConnection *c) -: client(new QDeclarativeEngineDebugClient(c, this)), nextId(0) +QDeclarativeEngineDebugPrivate::QDeclarativeEngineDebugPrivate(QDeclarativeEngineDebug *q, QDeclarativeDebugConnection *c) +: client(new QDeclarativeEngineDebugClient(c, this)), q_ptr(q), nextId(0) { } +QDeclarativeEngineDebugPrivate::~QDeclarativeEngineDebugPrivate() +{ + if (client) + client->priv = 0; +} + int QDeclarativeEngineDebugPrivate::getId() { return nextId++; @@ -116,7 +132,7 @@ void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclara } } -void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, +void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclarativeDebugRootContextQuery *q) { if (c && q) { @@ -125,23 +141,7 @@ void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, } } -void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclarativeDebugObjectQuery *q) -{ - if (c && q) { - QDeclarativeEngineDebugPrivate *p = c->d_func(); - p->objectQuery.remove(q->m_queryId); - } -} - -void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclarativeDebugExpressionQuery *q) -{ - if (c && q) { - QDeclarativeEngineDebugPrivate *p = c->d_func(); - p->expressionQuery.remove(q->m_queryId); - } -} - -//from qdeclarativeenginedebug.cpp +// from qdeclarativeenginedebug_p.h struct QDeclarativeObjectData { QUrl url; int lineNumber; @@ -152,12 +152,14 @@ struct QDeclarativeObjectData { int objectId; int contextId; }; + QDataStream &operator>>(QDataStream &ds, QDeclarativeObjectData &data) { ds >> data.url >> data.lineNumber >> data.columnNumber >> data.idString >> data.objectName >> data.objectType >> data.objectId >> data.contextId; return ds; } + struct QDeclarativeObjectProperty { enum Type { Unknown, Basic, Object, List, SignalProperty }; Type type; @@ -167,6 +169,7 @@ struct QDeclarativeObjectProperty { QString binding; bool hasNotifySignal; }; + QDataStream &operator>>(QDataStream &ds, QDeclarativeObjectProperty &data) { int type; @@ -176,6 +179,22 @@ QDataStream &operator>>(QDataStream &ds, QDeclarativeObjectProperty &data) return ds; } +void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclarativeDebugObjectQuery *q) +{ + if (c && q) { + QDeclarativeEngineDebugPrivate *p = c->d_func(); + p->objectQuery.remove(q->m_queryId); + } +} + +void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclarativeDebugExpressionQuery *q) +{ + if (c && q) { + QDeclarativeEngineDebugPrivate *p = c->d_func(); + p->expressionQuery.remove(q->m_queryId); + } +} + void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugObjectReference &o, bool simple) { @@ -260,6 +279,11 @@ void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugCo } } +void QDeclarativeEngineDebugPrivate::statusChanged(QDeclarativeEngineDebug::Status status) +{ + emit q_ptr->statusChanged(status); +} + void QDeclarativeEngineDebugPrivate::message(const QByteArray &data) { QDataStream ds(data); @@ -378,18 +402,25 @@ void QDeclarativeEngineDebugPrivate::message(const QByteArray &data) } QDeclarativeEngineDebug::QDeclarativeEngineDebug(QDeclarativeDebugConnection *client, QObject *parent) -: QObject(parent), d_ptr(new QDeclarativeEngineDebugPrivate(client)) +: QObject(parent), d_ptr(new QDeclarativeEngineDebugPrivate(this, client)) { - d_ptr->q_ptr = this; } -QDeclarativeEngineDebug::~QDeclarativeEngineDebug() {} + +QDeclarativeEngineDebug::~QDeclarativeEngineDebug() { } + +QDeclarativeEngineDebug::Status QDeclarativeEngineDebug::status() const +{ + Q_D(const QDeclarativeEngineDebug); + + return static_cast<QDeclarativeEngineDebug::Status>(d->client->status()); +} QDeclarativeDebugPropertyWatch *QDeclarativeEngineDebug::addWatch(const QDeclarativeDebugPropertyReference &property, QObject *parent) { Q_D(QDeclarativeEngineDebug); QDeclarativeDebugPropertyWatch *watch = new QDeclarativeDebugPropertyWatch(parent); - if (d->client->isConnected()) { + if (d->client->status() == QDeclarativeDebugClient::Enabled) { int queryId = d->getId(); watch->m_queryId = queryId; watch->m_client = this; @@ -418,7 +449,7 @@ QDeclarativeDebugObjectExpressionWatch *QDeclarativeEngineDebug::addWatch(const { Q_D(QDeclarativeEngineDebug); QDeclarativeDebugObjectExpressionWatch *watch = new QDeclarativeDebugObjectExpressionWatch(parent); - if (d->client->isConnected()) { + if (d->client->status() == QDeclarativeDebugClient::Enabled) { int queryId = d->getId(); watch->m_queryId = queryId; watch->m_client = this; @@ -441,7 +472,7 @@ QDeclarativeDebugWatch *QDeclarativeEngineDebug::addWatch(const QDeclarativeDebu Q_D(QDeclarativeEngineDebug); QDeclarativeDebugWatch *watch = new QDeclarativeDebugWatch(parent); - if (d->client->isConnected()) { + if (d->client->status() == QDeclarativeDebugClient::Enabled) { int queryId = d->getId(); watch->m_queryId = queryId; watch->m_client = this; @@ -477,7 +508,7 @@ void QDeclarativeEngineDebug::removeWatch(QDeclarativeDebugWatch *watch) d->watched.remove(watch->queryId()); - if (d->client && d->client->isConnected()) { + if (d->client && d->client->status() == QDeclarativeDebugClient::Enabled) { QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); ds << QByteArray("NO_WATCH") << watch->queryId(); @@ -490,7 +521,7 @@ QDeclarativeDebugEnginesQuery *QDeclarativeEngineDebug::queryAvailableEngines(QO Q_D(QDeclarativeEngineDebug); QDeclarativeDebugEnginesQuery *query = new QDeclarativeDebugEnginesQuery(parent); - if (d->client->isConnected()) { + if (d->client->status() == QDeclarativeDebugClient::Enabled) { query->m_client = this; int queryId = d->getId(); query->m_queryId = queryId; @@ -512,7 +543,7 @@ QDeclarativeDebugRootContextQuery *QDeclarativeEngineDebug::queryRootContexts(co Q_D(QDeclarativeEngineDebug); QDeclarativeDebugRootContextQuery *query = new QDeclarativeDebugRootContextQuery(parent); - if (d->client->isConnected() && engine.debugId() != -1) { + if (d->client->status() == QDeclarativeDebugClient::Enabled && engine.debugId() != -1) { query->m_client = this; int queryId = d->getId(); query->m_queryId = queryId; @@ -534,7 +565,7 @@ QDeclarativeDebugObjectQuery *QDeclarativeEngineDebug::queryObject(const QDeclar Q_D(QDeclarativeEngineDebug); QDeclarativeDebugObjectQuery *query = new QDeclarativeDebugObjectQuery(parent); - if (d->client->isConnected() && object.debugId() != -1) { + if (d->client->status() == QDeclarativeDebugClient::Enabled && object.debugId() != -1) { query->m_client = this; int queryId = d->getId(); query->m_queryId = queryId; @@ -557,7 +588,7 @@ QDeclarativeDebugObjectQuery *QDeclarativeEngineDebug::queryObjectRecursive(cons Q_D(QDeclarativeEngineDebug); QDeclarativeDebugObjectQuery *query = new QDeclarativeDebugObjectQuery(parent); - if (d->client->isConnected() && object.debugId() != -1) { + if (d->client->status() == QDeclarativeDebugClient::Enabled && object.debugId() != -1) { query->m_client = this; int queryId = d->getId(); query->m_queryId = queryId; @@ -566,9 +597,7 @@ QDeclarativeDebugObjectQuery *QDeclarativeEngineDebug::queryObjectRecursive(cons QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); ds << QByteArray("FETCH_OBJECT") << queryId << object.debugId() - << true << true; // Note: dumping all the properties is slow, and make noticable lags. - // TODO: Find an alternative to this when they are needed by the live preview - + << true << true; d->client->sendMessage(message); } else { query->m_state = QDeclarativeDebugQuery::Error; @@ -582,7 +611,7 @@ QDeclarativeDebugExpressionQuery *QDeclarativeEngineDebug::queryExpressionResult Q_D(QDeclarativeEngineDebug); QDeclarativeDebugExpressionQuery *query = new QDeclarativeDebugExpressionQuery(parent); - if (d->client->isConnected() && objectDebugId != -1) { + if (d->client->status() == QDeclarativeDebugClient::Enabled && objectDebugId != -1) { query->m_client = this; query->m_expr = expr; int queryId = d->getId(); @@ -606,7 +635,7 @@ bool QDeclarativeEngineDebug::setBindingForObject(int objectDebugId, const QStri { Q_D(QDeclarativeEngineDebug); - if (d->client->isConnected() && objectDebugId != -1) { + if (d->client->status() == QDeclarativeDebugClient::Enabled && objectDebugId != -1) { QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); ds << QByteArray("SET_BINDING") << objectDebugId << propertyName << bindingExpression << isLiteralValue; @@ -621,7 +650,7 @@ bool QDeclarativeEngineDebug::resetBindingForObject(int objectDebugId, const QSt { Q_D(QDeclarativeEngineDebug); - if (d->client->isConnected() && objectDebugId != -1) { + if (d->client->status() == QDeclarativeDebugClient::Enabled && objectDebugId != -1) { QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); ds << QByteArray("RESET_BINDING") << objectDebugId << propertyName; @@ -637,7 +666,7 @@ bool QDeclarativeEngineDebug::setMethodBody(int objectDebugId, const QString &me { Q_D(QDeclarativeEngineDebug); - if (d->client->isConnected() && objectDebugId != -1) { + if (d->client->status() == QDeclarativeDebugClient::Enabled && objectDebugId != -1) { QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); ds << QByteArray("SET_METHOD_BODY") << objectDebugId << methodName << methodBody; @@ -701,6 +730,7 @@ QString QDeclarativeDebugObjectExpressionWatch::expression() const return m_expr; } + QDeclarativeDebugQuery::QDeclarativeDebugQuery(QObject *parent) : QObject(parent), m_state(Waiting) { @@ -1025,4 +1055,3 @@ bool QDeclarativeDebugPropertyReference::hasNotifySignal() const } } - diff --git a/src/libs/qmljsdebugclient/qdeclarativedebug_p.h b/src/libs/qmljsdebugclient/qdeclarativedebug_p.h index 982e581f690e23acb1073c077b10e126b86a5145..dfb880250ee211c63a1d0506251177bc88903d3d 100644 --- a/src/libs/qmljsdebugclient/qdeclarativedebug_p.h +++ b/src/libs/qmljsdebugclient/qdeclarativedebug_p.h @@ -63,15 +63,18 @@ class QDeclarativeDebugObjectReference; class QDeclarativeDebugFileReference; class QDeclarativeDebugEngineReference; class QDeclarativeEngineDebugPrivate; -class QDeclarativeEngineDebug; class QDeclarativeEngineDebug : public QObject { Q_OBJECT public: + enum Status { NotConnected, Unavailable, Enabled }; + explicit QDeclarativeEngineDebug(QDeclarativeDebugConnection *, QObject * = 0); ~QDeclarativeEngineDebug(); + Status status() const; + QDeclarativeDebugPropertyWatch *addWatch(const QDeclarativeDebugPropertyReference &, QObject *parent = 0); QDeclarativeDebugWatch *addWatch(const QDeclarativeDebugContextReference &, const QString &, @@ -100,16 +103,15 @@ public: bool resetBindingForObject(int objectDebugId, const QString &propertyName); bool setMethodBody(int objectDebugId, const QString &methodName, const QString &methodBody); -signals: +Q_SIGNALS: void newObjects(); + void statusChanged(Status status); private: Q_DECLARE_PRIVATE(QDeclarativeEngineDebug) - Q_DISABLE_COPY(QDeclarativeEngineDebug) QScopedPointer<QDeclarativeEngineDebugPrivate> d_ptr; }; - class QDeclarativeDebugWatch : public QObject { Q_OBJECT @@ -368,7 +370,6 @@ private: int m_queryId; QVariant m_expr; QVariant m_result; - }; } @@ -378,6 +379,5 @@ Q_DECLARE_METATYPE(QmlJsDebugClient::QDeclarativeDebugObjectReference) Q_DECLARE_METATYPE(QmlJsDebugClient::QDeclarativeDebugContextReference) Q_DECLARE_METATYPE(QmlJsDebugClient::QDeclarativeDebugPropertyReference) -QT_END_HEADER #endif // QDECLARATIVEDEBUG_H diff --git a/src/libs/qmljsdebugclient/qdeclarativedebugclient.cpp b/src/libs/qmljsdebugclient/qdeclarativedebugclient.cpp index 7fa4ef3004ae950be707b7f689f450c86621cb3d..a78575a54ca8f3b26a0ded082152094652c3cb6f 100644 --- a/src/libs/qmljsdebugclient/qdeclarativedebugclient.cpp +++ b/src/libs/qmljsdebugclient/qdeclarativedebugclient.cpp @@ -48,6 +48,20 @@ namespace QmlJsDebugClient { +const int protocolVersion = 1; +const QString serverId = QLatin1String("QDeclarativeDebugServer"); +const QString clientId = QLatin1String("QDeclarativeDebugClient"); + +class QDeclarativeDebugClientPrivate +{ +// Q_DECLARE_PUBLIC(QDeclarativeDebugClient) +public: + QDeclarativeDebugClientPrivate(); + + QString name; + QDeclarativeDebugConnection *client; +}; + class QDeclarativeDebugConnectionPrivate : public QObject { Q_OBJECT @@ -56,40 +70,123 @@ public: QDeclarativeDebugConnection *q; QPacketProtocol *protocol; - QStringList enabled; + bool gotHello; + QStringList serverPlugins; QHash<QString, QDeclarativeDebugClient *> plugins; + + void advertisePlugins(); + public Q_SLOTS: void connected(); void readyRead(); }; QDeclarativeDebugConnectionPrivate::QDeclarativeDebugConnectionPrivate(QDeclarativeDebugConnection *c) -: QObject(c), q(c), protocol(0) +: QObject(c), q(c), protocol(0), gotHello(false) { protocol = new QPacketProtocol(q, this); QObject::connect(c, SIGNAL(connected()), this, SLOT(connected())); QObject::connect(protocol, SIGNAL(readyRead()), this, SLOT(readyRead())); } +void QDeclarativeDebugConnectionPrivate::advertisePlugins() +{ + if (!q->isConnected() || !gotHello) + return; + + QPacket pack; + pack << serverId << 1 << plugins.keys(); + protocol->send(pack); + q->flush(); +} + void QDeclarativeDebugConnectionPrivate::connected() { QPacket pack; - pack << QString(QLatin1String("QDeclarativeDebugServer")) << enabled; + pack << serverId << 0 << protocolVersion << plugins.keys(); protocol->send(pack); + q->flush(); } void QDeclarativeDebugConnectionPrivate::readyRead() { - QPacket pack = protocol->read(); - QString name; QByteArray message; - pack >> name >> message; + if (!gotHello) { + QPacket pack = protocol->read(); + QString name; - QHash<QString, QDeclarativeDebugClient *>::Iterator iter = - plugins.find(name); - if (iter == plugins.end()) { - qWarning() << "QDeclarativeDebugConnection: Message received for missing plugin" << name; - } else { - (*iter)->messageReceived(message); + pack >> name; + + bool validHello = false; + if (name == clientId) { + int op = -1; + pack >> op; + if (op == 0) { + int version = -1; + pack >> version; + if (version == protocolVersion) { + pack >> serverPlugins; + validHello = true; + } + } + } + + if (!validHello) { + qWarning("QDeclarativeDebugConnection: Invalid hello message"); + QObject::disconnect(protocol, SIGNAL(readyRead()), this, SLOT(readyRead())); + return; + } + gotHello = true; + + QHash<QString, QDeclarativeDebugClient *>::Iterator iter = plugins.begin(); + for (; iter != plugins.end(); ++iter) { + QDeclarativeDebugClient::Status newStatus = QDeclarativeDebugClient::Unavailable; + if (serverPlugins.contains(iter.key())) + newStatus = QDeclarativeDebugClient::Enabled; + iter.value()->statusChanged(newStatus); + } + } + + while (protocol->packetsAvailable()) { + QPacket pack = protocol->read(); + QString name; + pack >> name; + + if (name == clientId) { + int op = -1; + pack >> op; + + if (op == 1) { + // Service Discovery + QStringList oldServerPlugins = serverPlugins; + pack >> serverPlugins; + + QHash<QString, QDeclarativeDebugClient *>::Iterator iter = plugins.begin(); + for (; iter != plugins.end(); ++iter) { + const QString pluginName = iter.key(); + QDeclarativeDebugClient::Status newStatus = QDeclarativeDebugClient::Unavailable; + if (serverPlugins.contains(pluginName)) + newStatus = QDeclarativeDebugClient::Enabled; + + if (oldServerPlugins.contains(pluginName) + != serverPlugins.contains(pluginName)) { + iter.value()->statusChanged(newStatus); + } + } + } else { + qWarning() << "QDeclarativeDebugConnection: Unknown control message id" << op; + } + } else { + QByteArray message; + pack >> message; + + QHash<QString, QDeclarativeDebugClient *>::Iterator iter = + plugins.find(name); + if (iter == plugins.end()) { + qWarning() << "QDeclarativeDebugConnection: Message received for missing plugin" << name; + } else { + (*iter)->messageReceived(message); + } + } } } @@ -98,29 +195,28 @@ QDeclarativeDebugConnection::QDeclarativeDebugConnection(QObject *parent) { } -bool QDeclarativeDebugConnection::isConnected() const +QDeclarativeDebugConnection::~QDeclarativeDebugConnection() { - return state() == ConnectedState; + QHash<QString, QDeclarativeDebugClient*>::iterator iter = d->plugins.begin(); + for (; iter != d->plugins.end(); ++iter) { + iter.value()->d_func()->client = 0; + iter.value()->statusChanged(QDeclarativeDebugClient::NotConnected); + } } -class QDeclarativeDebugClientPrivate +bool QDeclarativeDebugConnection::isConnected() const { -public: - QDeclarativeDebugClientPrivate(); - - QString name; - QDeclarativeDebugConnection *client; - bool enabled; -}; + return state() == ConnectedState; +} QDeclarativeDebugClientPrivate::QDeclarativeDebugClientPrivate() -: client(0), enabled(false) +: client(0) { } QDeclarativeDebugClient::QDeclarativeDebugClient(const QString &name, QDeclarativeDebugConnection *parent) - : QObject(parent), d(new QDeclarativeDebugClientPrivate) +: QObject(parent), d(new QDeclarativeDebugClientPrivate()) { d->name = name; d->client = parent; @@ -133,60 +229,49 @@ QDeclarativeDebugClient::QDeclarativeDebugClient(const QString &name, d->client = 0; } else { d->client->d->plugins.insert(name, this); + d->client->d->advertisePlugins(); } } -QDeclarativeDebugClient::~QDeclarativeDebugClient() {} +QDeclarativeDebugClient::~QDeclarativeDebugClient() +{ + if (d->client && d->client->d) { + d->client->d->plugins.remove(d->name); + d->client->d->advertisePlugins(); + } +} QString QDeclarativeDebugClient::name() const { return d->name; } -bool QDeclarativeDebugClient::isEnabled() const +QDeclarativeDebugClient::Status QDeclarativeDebugClient::status() const { - return d->enabled; -} + if (!d->client + || !d->client->isConnected() + || !d->client->d->gotHello) + return NotConnected; -void QDeclarativeDebugClient::setEnabled(bool e) -{ - if (e == d->enabled) - return; + if (d->client->d->serverPlugins.contains(d->name)) + return Enabled; - d->enabled = e; - - if (d->client) { - if (e) - d->client->d->enabled.append(d->name); - else - d->client->d->enabled.removeAll(d->name); - - if (d->client->state() == QTcpSocket::ConnectedState) { - QPacket pack; - pack << QString(QLatin1String("QDeclarativeDebugServer")); - if (e) pack << (int)1; - else pack << (int)2; - pack << d->name; - d->client->d->protocol->send(pack); - } - } -} - -bool QDeclarativeDebugClient::isConnected() const -{ - if (!d->client) - return false; - return d->client->isConnected(); + return Unavailable; } void QDeclarativeDebugClient::sendMessage(const QByteArray &message) { - if (!d->client || !d->client->isConnected()) + if (status() != Enabled) return; QPacket pack; pack << d->name << message; d->client->d->protocol->send(pack); + d->client->flush(); +} + +void QDeclarativeDebugClient::statusChanged(Status) +{ } void QDeclarativeDebugClient::messageReceived(const QByteArray &) diff --git a/src/libs/qmljsdebugclient/qdeclarativedebugclient_p.h b/src/libs/qmljsdebugclient/qdeclarativedebugclient_p.h index ffc3b0d8449c669b4b24d8f8ddd9c014478444ba..f29e58a1b25175b86e620c7ad18cf67fb9692026 100644 --- a/src/libs/qmljsdebugclient/qdeclarativedebugclient_p.h +++ b/src/libs/qmljsdebugclient/qdeclarativedebugclient_p.h @@ -55,6 +55,7 @@ class QDeclarativeDebugConnection : public QTcpSocket Q_DISABLE_COPY(QDeclarativeDebugConnection) public: QDeclarativeDebugConnection(QObject * = 0); + ~QDeclarativeDebugConnection(); bool isConnected() const; private: @@ -71,19 +72,19 @@ class QDeclarativeDebugClient : public QObject Q_DISABLE_COPY(QDeclarativeDebugClient) public: + enum Status { NotConnected, Unavailable, Enabled }; + QDeclarativeDebugClient(const QString &, QDeclarativeDebugConnection *parent); ~QDeclarativeDebugClient(); QString name() const; - bool isEnabled() const; - void setEnabled(bool); - - bool isConnected() const; + Status status() const; void sendMessage(const QByteArray &); protected: + virtual void statusChanged(Status); virtual void messageReceived(const QByteArray &); private: diff --git a/src/libs/utils/annotateditemdelegate.cpp b/src/libs/utils/annotateditemdelegate.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dfb1e9db8e6674e2bd472fdc62df42b19c2d33c6 --- /dev/null +++ b/src/libs/utils/annotateditemdelegate.cpp @@ -0,0 +1,115 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "annotateditemdelegate.h" + +#include <QtCore/QSize> +#include <QtCore/QModelIndex> +#include <QtGui/QStandardItemModel> +#include <QtGui/QPainter> +#include <QtGui/QStyle> +#include <QtGui/QStyleOptionViewItemV4> +#include <QtGui/QApplication> + +using namespace Utils; + +AnnotatedItemDelegate::AnnotatedItemDelegate(QObject *parent) : QStyledItemDelegate(parent) +{} + +AnnotatedItemDelegate::~AnnotatedItemDelegate() +{} + +void AnnotatedItemDelegate::setAnnotationRole(int role) +{ + m_annotationRole = role; +} + +int AnnotatedItemDelegate::annotationRole() const +{ + return m_annotationRole; +} + +void AnnotatedItemDelegate::setDelimiter(const QString &delimiter) +{ + m_delimiter = delimiter; +} + +const QString &AnnotatedItemDelegate::delimiter() const +{ + return m_delimiter; +} + +void AnnotatedItemDelegate::paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + QStyleOptionViewItemV4 opt = option; + initStyleOption(&opt, index); + + QStyle *style = QApplication::style(); + style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget); + style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget); + + const QString &annotation = index.data(m_annotationRole).toString(); + if (!annotation.isEmpty()) { + QPalette disabled(opt.palette); + disabled.setCurrentColorGroup(QPalette::Disabled); + + painter->save(); + painter->setPen(disabled.color(QPalette::WindowText)); + + static int extra = opt.fontMetrics.width(m_delimiter) + 10; + const QPixmap &pixmap = opt.icon.pixmap(opt.decorationSize); + const QRect &iconRect = style->itemPixmapRect(opt.rect, opt.decorationAlignment, pixmap); + const QRect &displayRect = style->itemTextRect(opt.fontMetrics, opt.rect, + opt.displayAlignment, true, index.data(Qt::DisplayRole).toString()); + QRect annotationRect = style->itemTextRect(opt.fontMetrics, opt.rect, + opt.displayAlignment, true, annotation); + annotationRect.adjust(iconRect.width() + displayRect.width() + extra, 0, + iconRect.width() + displayRect.width() + extra, 0); + + QApplication::style()->drawItemText(painter, annotationRect, + Qt::AlignLeft | Qt::AlignBottom, disabled, true, annotation); + + painter->restore(); + } +} + +QSize AnnotatedItemDelegate::sizeHint(const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + QStyleOptionViewItemV4 opt = option; + initStyleOption(&opt, index); + + const QString &annotation = index.data(m_annotationRole).toString(); + if (!annotation.isEmpty()) + opt.text += m_delimiter + annotation; + + return QApplication::style()->sizeFromContents(QStyle::CT_ItemViewItem, &opt, QSize(), 0); +} diff --git a/src/plugins/snippets/snippetsplugin.h b/src/libs/utils/annotateditemdelegate.h similarity index 53% rename from src/plugins/snippets/snippetsplugin.h rename to src/libs/utils/annotateditemdelegate.h index b28e09ddfc13041f86c16612887c8584da289a04..77c403f295d0261a3aa214838a60b7473fb2e7b2 100644 --- a/src/plugins/snippets/snippetsplugin.h +++ b/src/libs/utils/annotateditemdelegate.h @@ -27,54 +27,40 @@ ** **************************************************************************/ -#ifndef SNIPPETS_H -#define SNIPPETS_H +#ifndef ANNOTATEDITEMDELEGATE_H +#define ANNOTATEDITEMDELEGATE_H -#include <QtCore/QMap> -#include <QtCore/QObject> -#include <QtGui/QShortcut> +#include "utils_global.h" -#include <extensionsystem/iplugin.h> +#include <QtCore/QString> +#include <QtCore/QSize> +#include <QtGui/QStyledItemDelegate> -namespace Snippets { -namespace Internal { +namespace Utils { -class SnippetsWindow; -class SnippetSpec; -class SnippetsCompletion; - -class SnippetsPlugin : public ExtensionSystem::IPlugin +class QTCREATOR_UTILS_EXPORT AnnotatedItemDelegate : public QStyledItemDelegate { - Q_OBJECT - public: - SnippetsPlugin(); - virtual ~SnippetsPlugin(); + AnnotatedItemDelegate(QObject *parent = 0); + virtual ~AnnotatedItemDelegate(); - static SnippetsPlugin *instance() { return m_instance; } - static SnippetsWindow *snippetsWindow() { return m_instance->m_snippetWnd; } + void setAnnotationRole(int role); + int annotationRole() const; - bool initialize(const QStringList &arguments, QString *errorMessage); - void extensionsInitialized(); + void setDelimiter(const QString &delimiter); + const QString &delimiter() const; -private slots: - void snippetActivated(); +protected: + virtual void paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const; + virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; private: - static SnippetsPlugin *m_instance; - - QString simplifySnippetName(SnippetSpec *snippet) const; - SnippetsCompletion *m_snippetsCompletion; - SnippetsWindow *m_snippetWnd; - - int m_textContext; - int m_snippetsMode; - QShortcut *m_exitShortcut; - QShortcut *m_modeShortcut; - QMap<QObject*, SnippetSpec*> m_shortcuts; + int m_annotationRole; + QString m_delimiter; }; -} // namespace Internal -} // namespace Snippets +} // Utils -#endif // SNIPPETS_H +#endif // ANNOTATEDITEMDELEGATE_H diff --git a/src/libs/utils/buildablehelperlibrary.cpp b/src/libs/utils/buildablehelperlibrary.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e9fcdbce71d1978ffb72e19570e0b76d356fb995 --- /dev/null +++ b/src/libs/utils/buildablehelperlibrary.cpp @@ -0,0 +1,268 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "buildablehelperlibrary.h" + +#include <QtCore/QFileInfo> +#include <QtCore/QCoreApplication> +#include <QtCore/QHash> +#include <QtCore/QProcess> +#include <QtCore/QDir> +#include <QtCore/QDateTime> + +#include <utils/environment.h> +#include <utils/synchronousprocess.h> + +#include <QtGui/QDesktopServices> +#include <QDebug> + +namespace Utils { + +QString BuildableHelperLibrary::findSystemQt(const Utils::Environment &env) +{ + QStringList paths = env.path(); + foreach (const QString &path, paths) { + foreach (const QString &possibleCommand, possibleQMakeCommands()) { + const QFileInfo qmake(path + QLatin1Char('/') + possibleCommand); + if (qmake.exists()) { + if (!qtVersionForQMake(qmake.absoluteFilePath()).isNull()) { + return qmake.absoluteFilePath(); + } + } + } + } + return QString(); +} + +QString BuildableHelperLibrary::qtInstallDataDir(const QString &qmakePath) +{ + QProcess proc; + proc.start(qmakePath, QStringList() << QLatin1String("-query") << QLatin1String("QT_INSTALL_DATA")); + if (proc.waitForFinished()) + return QString(proc.readAll().trimmed()); + return QString(); +} + +QString BuildableHelperLibrary::qtVersionForQMake(const QString &qmakePath) +{ + if (qmakePath.isEmpty()) + return QString(); + + QProcess qmake; + qmake.start(qmakePath, QStringList(QLatin1String("--version"))); + if (!qmake.waitForStarted()) { + qWarning("Cannot start '%s': %s", qPrintable(qmakePath), qPrintable(qmake.errorString())); + return QString(); + } + if (!qmake.waitForFinished()) { + Utils::SynchronousProcess::stopProcess(qmake); + qWarning("Timeout running '%s'.", qPrintable(qmakePath)); + return QString(); + } + if (qmake.exitStatus() != QProcess::NormalExit) { + qWarning("'%s' crashed.", qPrintable(qmakePath)); + return QString(); + } + const QString output = QString::fromLocal8Bit(qmake.readAllStandardOutput()); + QRegExp regexp(QLatin1String("(QMake version|QMake version:)[\\s]*([\\d.]*)"), Qt::CaseInsensitive); + regexp.indexIn(output); + if (regexp.cap(2).startsWith(QLatin1String("2."))) { + QRegExp regexp2(QLatin1String("Using Qt version[\\s]*([\\d\\.]*)"), Qt::CaseInsensitive); + regexp2.indexIn(output); + const QString version = regexp2.cap(1); + return version; + } + return QString(); +} + +bool BuildableHelperLibrary::checkMinimumQtVersion(const QString &qtVersionString, int majorVersion, int minorVersion, int patchVersion) +{ + int major = -1; + int minor = -1; + int patch = -1; + + // check format + QRegExp qtVersionRegex(QLatin1String("^\\d+\\.\\d+\\.\\d+$")); + if (!qtVersionRegex.exactMatch(qtVersionString)) + return false; + + QStringList parts = qtVersionString.split(QLatin1Char('.')); + major = parts.at(0).toInt(); + minor = parts.at(1).toInt(); + patch = parts.at(2).toInt(); + + if (major == majorVersion) { + if (minor == minorVersion) { + if (patch >= patchVersion) + return true; + } else if (minor > minorVersion) + return true; + } + + return false; +} + +QStringList BuildableHelperLibrary::possibleQMakeCommands() +{ + // On windows no one has renamed qmake, right? +#ifdef Q_OS_WIN + return QStringList(QLatin1String("qmake.exe")); +#else + // On unix some distributions renamed qmake to avoid clashes + QStringList result; + result << QLatin1String("qmake-qt4") << QLatin1String("qmake4") << QLatin1String("qmake"); + return result; +#endif +} + +// Copy helper source files to a target directory, replacing older files. +bool BuildableHelperLibrary::copyFiles(const QString &sourcePath, + const QStringList &files, + const QString &targetDirectory, + QString *errorMessage) +{ + if (!QDir().mkpath(targetDirectory)) { + *errorMessage = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "The target directory %1 could not be created.").arg(targetDirectory); + return false; + } + foreach (const QString &file, files) { + const QString source = sourcePath + file; + const QString dest = targetDirectory + file; + const QFileInfo destInfo(dest); + if (destInfo.exists()) { + if (destInfo.lastModified() >= QFileInfo(source).lastModified()) + continue; + if (!QFile::remove(dest)) { + *errorMessage = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "The existing file %1 could not be removed.").arg(destInfo.absoluteFilePath()); + return false; + } + } + if (!QFile::copy(source, dest)) { + *errorMessage = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "The file %1 could not be copied to %2.").arg(source, dest); + return false; + } + } + return true; +} + +QString BuildableHelperLibrary::buildHelper(const QString &helperName, const QString &proFilename, + const QString &directory, const QString &makeCommand, + const QString &qmakeCommand, const QString &mkspec, + const Utils::Environment &env, const QString &targetMode) +{ + QString output; + const QChar newline = QLatin1Char('\n'); + // Setup process + QProcess proc; + proc.setEnvironment(env.toStringList()); + proc.setWorkingDirectory(directory); + proc.setProcessChannelMode(QProcess::MergedChannels); + + output += QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", + "Building helper library '%1' in %2\n").arg(helperName, directory); + output += newline; + + const QString makeFullPath = env.searchInPath(makeCommand); + if (QFileInfo(directory + QLatin1String("/Makefile")).exists()) { + if (!makeFullPath.isEmpty()) { + const QString cleanTarget = QLatin1String("distclean"); + output += QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", + "Running %1 %2...\n").arg(makeFullPath, cleanTarget); + proc.start(makeFullPath, QStringList(cleanTarget)); + proc.waitForFinished(); + output += QString::fromLocal8Bit(proc.readAll()); + } else { + output += QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", + "%1 not found in PATH\n").arg(makeCommand); + return output; + } + } + output += newline; + output += QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", "Running %1 ...\n").arg(qmakeCommand); + + QStringList makeArgs; + makeArgs << targetMode << QLatin1String("-spec") << (mkspec.isEmpty() ? QString(QLatin1String("default")) : mkspec) << proFilename; + proc.start(qmakeCommand, makeArgs); + proc.waitForFinished(); + + output += proc.readAll(); + + output += newline;; + if (!makeFullPath.isEmpty()) { + output += QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", "Running %1 ...\n").arg(makeFullPath); + proc.start(makeFullPath, QStringList()); + proc.waitForFinished(); + output += proc.readAll(); + } else { + output += QCoreApplication::translate("ProjectExplorer::BuildableHelperLibrary", "%1 not found in PATH\n").arg(makeCommand); + } + return output; +} + +bool BuildableHelperLibrary::getHelperFileInfoFor(const QStringList &validBinaryFilenames, + const QString &directory, QFileInfo* info) +{ + if (!info) + return false; + + foreach(const QString &binaryFilename, validBinaryFilenames) { + info->setFile(directory + binaryFilename); + if (info->exists()) + return true; + } + + return false; +} + +QString BuildableHelperLibrary::byInstallDataHelper(const QString &mainFilename, + const QStringList &installDirectories, + const QStringList &validBinaryFilenames) +{ + QDateTime sourcesModified = QFileInfo(mainFilename).lastModified(); + // We pretend that the lastmodified of gdbmacros.cpp is 5 minutes before what the file system says + // Because afer a installation from the package the modified dates of gdbmacros.cpp + // and the actual library are close to each other, but not deterministic in one direction + sourcesModified = sourcesModified.addSecs(-300); + + // look for the newest helper library in the different locations + QString newestHelper; + QDateTime newestHelperModified = sourcesModified; // prevent using one that's older than the sources + QFileInfo fileInfo; + foreach(const QString &installDirectory, installDirectories) { + if (getHelperFileInfoFor(validBinaryFilenames, installDirectory, &fileInfo)) { + if (fileInfo.lastModified() > newestHelperModified) { + newestHelper = fileInfo.filePath(); + newestHelperModified = fileInfo.lastModified(); + } + } + } + return newestHelper; +} + +} // namespace Utils diff --git a/src/libs/utils/buildablehelperlibrary.h b/src/libs/utils/buildablehelperlibrary.h new file mode 100644 index 0000000000000000000000000000000000000000..fa8a85648c643ff564ba9dd9c1180aef6a020d44 --- /dev/null +++ b/src/libs/utils/buildablehelperlibrary.h @@ -0,0 +1,47 @@ +#ifndef BUILDABLEHELPERLIBRARY_H +#define BUILDABLEHELPERLIBRARY_H + +#include "utils_global.h" + +#include <QString> + +QT_FORWARD_DECLARE_CLASS(QFileInfo) + +namespace Utils { + +class Environment; + +class QTCREATOR_UTILS_EXPORT BuildableHelperLibrary +{ +public: + // returns the full path to the first qmake, qmake-qt4, qmake4 that has + // at least version 2.0.0 and thus is a qt4 qmake + static QString findSystemQt(const Utils::Environment &env); + // return true if the qmake at qmakePath is qt4 (used by QtVersion) + static QString qtVersionForQMake(const QString &qmakePath); + static bool checkMinimumQtVersion(const QString &qtversionString, int majorVersion, int minorVersion, int patchVersion); + // returns something like qmake4, qmake, qmake-qt4 or whatever distributions have chosen (used by QtVersion) + static QStringList possibleQMakeCommands(); + + static QString qtInstallHeadersDir(const QString &qmakePath); + static QString qtInstallDataDir(const QString &qmakePath); + + static QString byInstallDataHelper(const QString &mainFilename, + const QStringList &installDirectories, + const QStringList &validBinaryFilenames); + + static bool copyFiles(const QString &sourcePath, const QStringList &files, + const QString &targetDirectory, QString *errorMessage); + + static QString buildHelper(const QString &helperName, const QString &proFilename, + const QString &directory, const QString &makeCommand, + const QString &qmakeCommand, const QString &mkspec, + const Utils::Environment &env, const QString &targetMode); + + static bool getHelperFileInfoFor(const QStringList &validBinaryFilenames, + const QString &directory, QFileInfo* info); +}; + +} + +#endif // BUILDABLEHELPERLIBRARY_H diff --git a/src/libs/utils/filesearch.cpp b/src/libs/utils/filesearch.cpp index 628dfdec769b6fadf09ac99b941d643cb76e96af..ed2cd20f1f80d8a6518467294ed9837b4c9eaff2 100644 --- a/src/libs/utils/filesearch.cpp +++ b/src/libs/utils/filesearch.cpp @@ -295,6 +295,7 @@ QFuture<FileSearchResultList> Utils::findInFilesRegExp(const QString &searchTerm QString Utils::expandRegExpReplacement(const QString &replaceText, const QStringList &capturedTexts) { + // handles \1 \\ \& & \t QString result; int numCaptures = capturedTexts.size() - 1; for (int i = 0; i < replaceText.length(); ++i) { @@ -305,6 +306,8 @@ QString Utils::expandRegExpReplacement(const QString &replaceText, const QString result += QLatin1Char('\\'); } else if (c == QLatin1Char('&')) { result += QLatin1Char('&'); + } else if (c == QLatin1Char('t')) { + result += QLatin1Char('\t'); } else if (c.isDigit()) { int index = c.unicode()-'1'; if (index < numCaptures) { diff --git a/src/libs/utils/htmldocextractor.cpp b/src/libs/utils/htmldocextractor.cpp index 0877be15474193de64038ae315e845080e22d5fc..41fd38c1ee85d49d2f59d8ffdb750416ea369a8a 100644 --- a/src/libs/utils/htmldocextractor.cpp +++ b/src/libs/utils/htmldocextractor.cpp @@ -180,28 +180,32 @@ void HtmlDocExtractor::processOutput(QString *html) const return; if (m_mode == FirstParagraph) { - int index = html->indexOf(QLatin1String("</p>")); - if (index > 0) { - if (html->at(index - 1) == QLatin1Char('.')) { - index += 4; - html->truncate(index); - } else { - // <p>Paragraphs similar to this. Example:</p> - index = html->lastIndexOf(QLatin1Char('.'), index); - if (index > 0) { - html->truncate(index); - html->append(QLatin1String(".</p>")); + // Try to get the entire first paragraph, but if one is not found or if its opening + // tag is not in the very beginning (using an empirical value as the limit) the html + // is cleared to avoid too much content. + int index = html->indexOf(QLatin1String("<p>")); + if (index != -1 && index < 400) { + index = html->indexOf(QLatin1String("</p>"), index + 2); + if (index != -1) { + if (html->at(index - 1) == QLatin1Char('.')) { + html->truncate(index + 4); + } else { + // <p>Paragraphs similar to this. Example:</p> + index = html->lastIndexOf(QLatin1Char('.'), index); + if (index != -1) { + html->truncate(index); + html->append(QLatin1String(".</p>")); + } } + } else { + html->clear(); } } else { - // Some enumerations don't have paragraphs and just a table with the items. In such - // cases the the html is cleared to avoid showing more that desired. html->clear(); - return; } } - if (m_formatContents) { + if (!html->isEmpty() && m_formatContents) { stripBold(html); replaceNonStyledHeadingsForBold(html); replaceTablesForSimpleLines(html); diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index 0b121a63d456fd00ae238eb53d9062120511a3f6..331e51ddfa8f865151242359551e2fdea2e46b9d 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -108,19 +108,28 @@ PathChooserPrivate::PathChooserPrivate(PathChooser *chooser) : QString PathChooserPrivate::expandedPath(const QString &input) const { - QString path = QDir::fromNativeSeparators(input); - if (m_environment.size() > 0) - return m_environment.expandVariables(path); - - if (path.isEmpty() || m_acceptingKind == PathChooser::Command) + if (input.isEmpty()) + return input; + // Environment does \-expansion, too. + const QString nativeInput = QDir::fromNativeSeparators(input); + const QString path = QDir::fromNativeSeparators(m_environment.expandVariables(nativeInput)); + if (path.isEmpty()) return path; - if (m_acceptingKind == PathChooser::ExistingCommand) - return m_environment.searchInPath(path, QStringList() << m_baseDirectory); - - if (!m_baseDirectory.isEmpty() && QFileInfo(path).isRelative()) - return QFileInfo(m_baseDirectory + QLatin1Char('/') + path).absoluteFilePath(); - + switch (m_acceptingKind) { + case PathChooser::Command: + case PathChooser::ExistingCommand: { + const QString expanded = m_environment.searchInPath(path, QStringList(m_baseDirectory)); + return expanded.isEmpty() && m_acceptingKind == PathChooser::Command ? path : expanded; + } + case PathChooser::Any: + break; + case PathChooser::Directory: + case PathChooser::File: + if (!m_baseDirectory.isEmpty() && QFileInfo(path).isRelative()) + return QFileInfo(m_baseDirectory + QLatin1Char('/') + path).absoluteFilePath(); + break; + } return path; } @@ -144,7 +153,6 @@ PathChooser::PathChooser(QWidget *parent) : setLayout(m_d->m_hLayout); setFocusProxy(m_d->m_lineEdit); - setEnvironment(Environment::systemEnvironment()); } @@ -283,8 +291,6 @@ bool PathChooser::validatePath(const QString &path, QString *errorMessage) //: Selected path is not valid: displayPath = tr("<not valid>"); - *errorMessage = tr("Full path: <b>%1</b>").arg(QDir::toNativeSeparators(expandedPath)); - if (expandedPath.isEmpty()) { if (errorMessage) *errorMessage = tr("The path must not be empty."); @@ -344,7 +350,8 @@ bool PathChooser::validatePath(const QString &path, QString *errorMessage) default: ; } - + if (errorMessage) + *errorMessage = tr("Full path: <b>%1</b>").arg(QDir::toNativeSeparators(expandedPath)); return true; } diff --git a/src/libs/utils/submiteditorwidget.cpp b/src/libs/utils/submiteditorwidget.cpp index 0c8aa30a1c4bf04f1c23c33f78ab08ba59e8e43e..10cade5c2e199f5adc962a735e81fc037d61328e 100644 --- a/src/libs/utils/submiteditorwidget.cpp +++ b/src/libs/utils/submiteditorwidget.cpp @@ -139,7 +139,6 @@ struct SubmitEditorWidgetPrivate Ui::SubmitEditorWidget m_ui; bool m_filesSelected; - bool m_filesChecked; int m_fileNameColumn; int m_activatedRow; bool m_emptyFileListEnabled; @@ -148,16 +147,18 @@ struct SubmitEditorWidgetPrivate QVBoxLayout *m_fieldLayout; QList<SubmitFieldWidget *> m_fieldWidgets; int m_lineWidth; + + bool m_commitEnabled; }; SubmitEditorWidgetPrivate::SubmitEditorWidgetPrivate() : m_filesSelected(false), - m_filesChecked(false), m_fileNameColumn(1), m_activatedRow(-1), m_emptyFileListEnabled(false), m_fieldLayout(0), - m_lineWidth(defaultLineWidth) + m_lineWidth(defaultLineWidth), + m_commitEnabled(false) { } @@ -209,10 +210,10 @@ void SubmitEditorWidget::registerActions(QAction *editorUndoAction, QAction *edi int count = 0; if (const QAbstractItemModel *model = m_d->m_ui.fileView->model()) count = model->rowCount(); - qDebug() << Q_FUNC_INFO << submitAction << count << "items" << m_d->m_filesChecked; + qDebug() << Q_FUNC_INFO << submitAction << count << "items"; } - submitAction->setEnabled(m_d->m_filesChecked); - connect(this, SIGNAL(fileCheckStateChanged(bool)), submitAction, SLOT(setEnabled(bool))); + m_d->m_commitEnabled = !canSubmit(); + connect(this, SIGNAL(submitActionEnabledChanged(bool)), submitAction, SLOT(setEnabled(bool))); // Wire setText via QActionSetTextSlotHelper. QActionSetTextSlotHelper *actionSlotHelper = submitAction->findChild<QActionSetTextSlotHelper *>(); if (!actionSlotHelper) @@ -243,7 +244,7 @@ void SubmitEditorWidget::unregisterActions(QAction *editorUndoAction, QAction * } if (submitAction) { - disconnect(this, SIGNAL(fileCheckStateChanged(bool)), submitAction, SLOT(setEnabled(bool))); + disconnect(this, SIGNAL(submitActionEnabledChanged(bool)), submitAction, SLOT(setEnabled(bool))); // Just deactivate the QActionSetTextSlotHelper on the action disconnect(this, SIGNAL(submitActionTextChanged(QString)), 0, 0); } @@ -448,18 +449,20 @@ void SubmitEditorWidget::updateActions() void SubmitEditorWidget::updateSubmitAction() { const unsigned checkedCount = checkedFilesCount(); - const bool newFilesCheckedState = m_d->m_emptyFileListEnabled || checkedCount > 0; + const bool newCommitState = canSubmit(); // Emit signal to update action - if (m_d->m_filesChecked != newFilesCheckedState) { - m_d->m_filesChecked = newFilesCheckedState; - emit fileCheckStateChanged(m_d->m_filesChecked); + if (m_d->m_commitEnabled != newCommitState) { + m_d->m_commitEnabled = newCommitState; + emit submitActionEnabledChanged(m_d->m_commitEnabled); + } + if (m_d->m_ui.fileView && m_d->m_ui.fileView->model()) { + // Update button text. + const int fileCount = m_d->m_ui.fileView->model()->rowCount(); + const QString msg = checkedCount ? + tr("Commit %1/%n Files", 0, fileCount).arg(checkedCount) : + tr("Commit"); + emit submitActionTextChanged(msg); } - // Update button text. - const int fileCount = m_d->m_ui.fileView->model()->rowCount(); - const QString msg = checkedCount ? - tr("Commit %1/%n Files", 0, fileCount).arg(checkedCount) : - tr("Commit"); - emit submitActionTextChanged(msg); } // Enable diff depending on selected files @@ -509,6 +512,12 @@ void SubmitEditorWidget::insertTopWidget(QWidget *w) m_d->m_ui.vboxLayout->insertWidget(0, w); } +bool SubmitEditorWidget::canSubmit() const +{ + const unsigned checkedCount = checkedFilesCount(); + return m_d->m_emptyFileListEnabled || checkedCount > 0; +} + void SubmitEditorWidget::addSubmitFieldWidget(SubmitFieldWidget *f) { if (!m_d->m_fieldLayout) { diff --git a/src/libs/utils/submiteditorwidget.h b/src/libs/utils/submiteditorwidget.h index 457783a9d7f2c906a61b201a8cb963d0ad6de490..37d1c8b0bd959764b8a77625aaf6045b5f8288a4 100644 --- a/src/libs/utils/submiteditorwidget.h +++ b/src/libs/utils/submiteditorwidget.h @@ -129,8 +129,8 @@ public: signals: void diffSelected(const QStringList &); void fileSelectionChanged(bool someFileSelected); - void fileCheckStateChanged(bool someFileChecked); void submitActionTextChanged(const QString &); + void submitActionEnabledChanged(const bool); public slots: void checkAll(); @@ -139,13 +139,16 @@ public slots: protected: virtual void changeEvent(QEvent *e); void insertTopWidget(QWidget *w); + virtual bool canSubmit() const; + +protected slots: + void updateSubmitAction(); private slots: void triggerDiffSelected(); void diffActivated(const QModelIndex &index); void diffActivatedDelayed(); void updateActions(); - void updateSubmitAction(); void updateDiffAction(); void editorCustomContextMenuRequested(const QPoint &); void fileListCustomContextMenuRequested(const QPoint & pos); diff --git a/src/libs/utils/synchronousprocess.cpp b/src/libs/utils/synchronousprocess.cpp index 7a8d5a007eb94e5e912c23123c8ea07434c870f9..c35b148d1bd0ac188ac89b027bec7b7bd7ab5a53 100644 --- a/src/libs/utils/synchronousprocess.cpp +++ b/src/libs/utils/synchronousprocess.cpp @@ -365,7 +365,7 @@ static inline bool askToKill(const QString &binary = QString()) SynchronousProcess::tr("The process is not responding.") : SynchronousProcess::tr("The process '%1' is not responding.").arg(binary); msg += QLatin1Char(' '); - msg += SynchronousProcess::tr(" Would you like to terminate it?"); + msg += SynchronousProcess::tr("Would you like to terminate it?"); // Restore the cursor that is set to wait while running. const bool hasOverrideCursor = QApplication::overrideCursor() != 0; if (hasOverrideCursor) diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri index bfae91f6345b6f459554e684f0d1f7af15348fc5..aa2e65cf11ddf99dbcad512e11b21b470fa95832 100644 --- a/src/libs/utils/utils-lib.pri +++ b/src/libs/utils/utils-lib.pri @@ -5,6 +5,7 @@ dll { } INCLUDEPATH += $$PWD +QT += network SOURCES += $$PWD/environment.cpp \ $$PWD/reloadpromptutils.cpp \ @@ -48,7 +49,9 @@ SOURCES += $$PWD/environment.cpp \ $$PWD/navigationtreeview.cpp \ $$PWD/crumblepath.cpp \ $$PWD/debuggerlanguagechooser.cpp \ - $$PWD/historycompleter.cpp + $$PWD/historycompleter.cpp \ + $$PWD/buildablehelperlibrary.cpp \ + $$PWD/annotateditemdelegate.cpp win32 { SOURCES += $$PWD/abstractprocess_win.cpp \ @@ -108,7 +111,9 @@ HEADERS += $$PWD/environment.h \ $$PWD/navigationtreeview.h \ $$PWD/crumblepath.h \ $$PWD/debuggerlanguagechooser.h \ - $$PWD/historycompleter.h + $$PWD/historycompleter.h \ + $$PWD/buildablehelperlibrary.h \ + $$PWD/annotateditemdelegate.h FORMS += $$PWD/filewizardpage.ui \ $$PWD/projectintropage.ui \ diff --git a/src/plugins/bineditor/BinEditor.pluginspec b/src/plugins/bineditor/BinEditor.pluginspec index a34d8ba60bbb2c63b8db1461346833381c9ccf3c..0755010e7561e013f4f50d4fe0bba7a6ccd24678 100644 --- a/src/plugins/bineditor/BinEditor.pluginspec +++ b/src/plugins/bineditor/BinEditor.pluginspec @@ -1,4 +1,4 @@ -<plugin name="BinEditor" version="2.0.91" compatVersion="2.0.91"> +<plugin name="BinEditor" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,7 +14,7 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Binary editor component.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="TextEditor" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="TextEditor" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/bookmarks/Bookmarks.pluginspec b/src/plugins/bookmarks/Bookmarks.pluginspec index 3420f3b26d4ebd615c37cc7db329413228c4d82f..9c659c274b6bbf01e7db3d73b14ae9673cab1304 100644 --- a/src/plugins/bookmarks/Bookmarks.pluginspec +++ b/src/plugins/bookmarks/Bookmarks.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Bookmarks" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Bookmarks" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,8 +14,8 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Bookmarks in text editors.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Core" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/classview/ClassView.pluginspec b/src/plugins/classview/ClassView.pluginspec index c3471974f3c39421184e8e5965d17fc14acad19d..77f765739486d51af88b3dcbaeb34b0da18898cc 100644 --- a/src/plugins/classview/ClassView.pluginspec +++ b/src/plugins/classview/ClassView.pluginspec @@ -1,4 +1,4 @@ -<plugin name="ClassView" version="2.0.91" compatVersion="2.0.91"> +<plugin name="ClassView" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Denis Mingulov</copyright> <license> @@ -14,9 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Class View component.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="CppTools" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="TextEditor" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="CppTools" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="TextEditor" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/classview/classviewnavigationwidget.cpp b/src/plugins/classview/classviewnavigationwidget.cpp index 8420284d818e9d2fc14dad433c7a59bbfc0f18fc..35c1a179b310af98794b3d2dfc297664b42f0ee6 100644 --- a/src/plugins/classview/classviewnavigationwidget.cpp +++ b/src/plugins/classview/classviewnavigationwidget.cpp @@ -137,7 +137,7 @@ QList<QToolButton *> NavigationWidget::createToolButtons() d_ptr->fullProjectsModeButton->setIcon( QIcon(QLatin1String(":/classview/images/hierarchicalmode.png"))); d_ptr->fullProjectsModeButton->setCheckable(true); - d_ptr->fullProjectsModeButton->setToolTip(tr("Show subprojects")); + d_ptr->fullProjectsModeButton->setToolTip(tr("Show Subprojects")); // by default - not a flat mode setFlatMode(false); diff --git a/src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec b/src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec index 1e019d2520fa1e508719c8eb2955fa221f4ac942..2719a920a5f3af18b05bae822eff0ed7eedefec2 100644 --- a/src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec +++ b/src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec @@ -1,4 +1,4 @@ -<plugin name="CMakeProjectManager" version="2.0.91" compatVersion="2.0.91"> +<plugin name="CMakeProjectManager" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,9 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>CMake support</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="CppTools" version="2.0.91"/> - <dependency name="CppEditor" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="CppTools" version="2.1.81"/> + <dependency name="Designer" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp index c79b73c5bf631756b30f76fb9fb80a3ce11c87ce..56870530fbff05b96d1bb30717bac4526b2ff8d1 100644 --- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp @@ -328,6 +328,11 @@ void CMakeRunPage::initWidgets() pl.setVerticalStretch(1); m_output->setSizePolicy(pl); fl->addRow(m_output); + + m_exitCodeLabel = new QLabel(this); + m_exitCodeLabel->setVisible(false); + fl->addRow(m_exitCodeLabel); + setTitle(tr("Run CMake")); } @@ -460,7 +465,8 @@ void CMakeRunPage::runCMake() if (m_cmakeWizard->cmakeManager()->isCMakeExecutableValid()) { m_cmakeProcess = new QProcess(); - connect(m_cmakeProcess, SIGNAL(readyRead()), this, SLOT(cmakeReadyRead())); + connect(m_cmakeProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(cmakeReadyReadStandardOutput())); + connect(m_cmakeProcess, SIGNAL(readyReadStandardError()), this, SLOT(cmakeReadyReadStandardError())); connect(m_cmakeProcess, SIGNAL(finished(int)), this, SLOT(cmakeFinished())); cmakeManager->createXmlFile(m_cmakeProcess, arguments, m_cmakeWizard->sourceDirectory(), m_buildDirectory, env, generator); } else { @@ -470,20 +476,54 @@ void CMakeRunPage::runCMake() } } -void CMakeRunPage::cmakeReadyRead() +static QColor mix_colors(QColor a, QColor b) +{ + return QColor((a.red() + 2 * b.red()) / 3, (a.green() + 2 * b.green()) / 3, + (a.blue() + 2* b.blue()) / 3, (a.alpha() + 2 * b.alpha()) / 3); +} + +void CMakeRunPage::cmakeReadyReadStandardOutput() +{ + QTextCursor cursor(m_output->document()); + QTextCharFormat tf; + + QFont font = m_output->font(); + tf.setFont(font); + tf.setForeground(m_output->palette().color(QPalette::Text)); + + cursor.insertText(m_cmakeProcess->readAllStandardOutput(), tf); +} + +void CMakeRunPage::cmakeReadyReadStandardError() { - m_output->appendPlainText(m_cmakeProcess->readAll()); + QTextCursor cursor(m_output->document()); + QTextCharFormat tf; + + QFont font = m_output->font(); + QFont boldFont = font; + boldFont.setBold(true); + tf.setFont(boldFont); + tf.setForeground(mix_colors(m_output->palette().color(QPalette::Text), QColor(Qt::red))); + + cursor.insertText(m_cmakeProcess->readAllStandardError(), tf); } void CMakeRunPage::cmakeFinished() { m_runCMake->setEnabled(true); m_argumentsLineEdit->setEnabled(true); + if (m_cmakeProcess->exitCode() != 0) { + m_exitCodeLabel->setVisible(true); + m_exitCodeLabel->setText(tr("CMake exited with errors. Please check cmake output.")); + m_complete = false; + } else { + m_exitCodeLabel->setVisible(false); + m_complete = true; + } m_cmakeProcess->deleteLater(); m_cmakeProcess = 0; m_cmakeWizard->setArguments(Utils::Environment::parseCombinedArgString(m_argumentsLineEdit->text())); //TODO Actually test that running cmake was finished, for setting this bool - m_complete = true; emit completeChanged(); } @@ -491,6 +531,7 @@ void CMakeRunPage::cleanupPage() { m_output->clear(); m_complete = false; + m_exitCodeLabel->setVisible(false); emit completeChanged(); } diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h index 1fc1dc2ebbab41dbc1c707c5e04fa794f5108205..d38edd6b4be4fb269b37b94b3763ce1445ea6081 100644 --- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h +++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h @@ -133,7 +133,8 @@ public: private slots: void runCMake(); void cmakeFinished(); - void cmakeReadyRead(); + void cmakeReadyReadStandardOutput(); + void cmakeReadyReadStandardError(); private: void initWidgets(); CMakeOpenProjectWizard *m_cmakeWizard; @@ -144,6 +145,7 @@ private: Utils::PathChooser *m_cmakeExecutable; QComboBox *m_generatorComboBox; QLabel *m_descriptionLabel; + QLabel *m_exitCodeLabel; bool m_complete; Mode m_mode; QString m_buildDirectory; diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 14c65d6eb34cb0a79f07a3177b0e17611c0b6921..a6c62ef9fccc3f91f1832326ced3686e1bb84ce9 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -35,14 +35,19 @@ #include "makestep.h" #include "cmakeopenprojectwizard.h" #include "cmakebuildconfiguration.h" +#include "cmakeuicodemodelsupport.h" #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/projectexplorer.h> #include <projectexplorer/buildenvironmentwidget.h> #include <projectexplorer/buildsteplist.h> +#include <projectexplorer/buildmanager.h> #include <cpptools/cppmodelmanagerinterface.h> #include <extensionsystem/pluginmanager.h> +#include <designer/formwindoweditor.h> #include <utils/qtcassert.h> #include <coreplugin/icore.h> +#include <coreplugin/editormanager/editormanager.h> #include <QtCore/QMap> #include <QtCore/QDebug> @@ -74,7 +79,8 @@ CMakeProject::CMakeProject(CMakeManager *manager, const QString &fileName) m_fileName(fileName), m_rootNode(new CMakeProjectNode(m_fileName)), m_insideFileChanged(false), - m_targetFactory(new CMakeTargetFactory(this)) + m_targetFactory(new CMakeTargetFactory(this)), + m_lastEditor(0) { m_file = new CMakeFile(this, fileName); @@ -84,6 +90,17 @@ CMakeProject::CMakeProject(CMakeManager *manager, const QString &fileName) CMakeProject::~CMakeProject() { + // Remove CodeModel support + CppTools::CppModelManagerInterface *modelManager + = ExtensionSystem::PluginManager::instance()->getObject<CppTools::CppModelManagerInterface>(); + QMap<QString, CMakeUiCodeModelSupport *>::const_iterator it, end; + it = m_uiCodeModelSupport.constBegin(); + end = m_uiCodeModelSupport.constEnd(); + for (; it!=end; ++it) { + modelManager->removeEditorSupport(it.value()); + delete it.value(); + } + m_codeModelFuture.cancel(); delete m_rootNode; } @@ -229,7 +246,24 @@ bool CMakeProject::parseCMakeLists() // qDebug()<<""; // } + + // TOOD this code ain't very pretty ... + m_uicCommand.clear(); + QFile cmakeCache(activeBC->buildDirectory() + "/CMakeCache.txt"); + cmakeCache.open(QIODevice::ReadOnly); + while (!cmakeCache.atEnd()) { + QString line = cmakeCache.readLine(); + if (line.startsWith("QT_UIC_EXECUTABLE")) { + if (int pos = line.indexOf('=')) { + m_uicCommand = line.mid(pos + 1).trimmed(); + } + break; + } + } + cmakeCache.close(); + //qDebug()<<"Updating CodeModel"; + createUiCodeModelSupport(); QStringList allIncludePaths; QStringList allFrameworkPaths; @@ -533,6 +567,16 @@ bool CMakeProject::fromMap(const QVariantMap &map) connect(t, SIGNAL(environmentChanged()), this, SLOT(changeEnvironment())); } + + connect(Core::EditorManager::instance(), SIGNAL(editorAboutToClose(Core::IEditor*)), + this, SLOT(editorAboutToClose(Core::IEditor*))); + + connect(Core::EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)), + this, SLOT(editorChanged(Core::IEditor*))); + + connect(ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager(), SIGNAL(buildStateChanged(ProjectExplorer::Project*)), + this, SLOT(buildStateChanged(ProjectExplorer::Project*))); + return true; } @@ -544,6 +588,140 @@ CMakeBuildTarget CMakeProject::buildTargetForTitle(const QString &title) return CMakeBuildTarget(); } +QString CMakeProject::uicCommand() const +{ + return m_uicCommand; +} + +QString CMakeProject::uiHeaderFile(const QString &uiFile) +{ + QDir srcDirRoot = QDir(projectDirectory()); + QString relativePath = srcDirRoot.relativeFilePath(uiFile); + QDir buildDir = QDir(activeTarget()->activeBuildConfiguration()->buildDirectory()); + QString uiHeaderFilePath = buildDir.absoluteFilePath(relativePath); + + QFileInfo fi(uiHeaderFilePath); + uiHeaderFilePath = fi.absolutePath(); + uiHeaderFilePath += QLatin1String("/ui_"); + uiHeaderFilePath += fi.completeBaseName(); + uiHeaderFilePath += QLatin1String(".h"); + return QDir::cleanPath(uiHeaderFilePath); +} + +void CMakeProject::createUiCodeModelSupport() +{ +// qDebug()<<"creatUiCodeModelSupport()"; + CppTools::CppModelManagerInterface *modelManager + = ExtensionSystem::PluginManager::instance()->getObject<CppTools::CppModelManagerInterface>(); + + // First move all to + QMap<QString, CMakeUiCodeModelSupport *> oldCodeModelSupport; + oldCodeModelSupport = m_uiCodeModelSupport; + m_uiCodeModelSupport.clear(); + + // Find all ui files + foreach (const QString &uiFile, m_files) { + if (uiFile.endsWith(".ui")) { + // UI file, not convert to + QString uiHeaderFilePath = uiHeaderFile(uiFile); + QMap<QString, CMakeUiCodeModelSupport *>::iterator it + = oldCodeModelSupport.find(uiFile); + if (it != oldCodeModelSupport.end()) { + // qDebug()<<"updated old codemodelsupport"; + CMakeUiCodeModelSupport *cms = it.value(); + cms->setFileName(uiHeaderFilePath); + m_uiCodeModelSupport.insert(it.key(), cms); + oldCodeModelSupport.erase(it); + } else { + // qDebug()<<"adding new codemodelsupport"; + CMakeUiCodeModelSupport *cms = new CMakeUiCodeModelSupport(modelManager, this, uiFile, uiHeaderFilePath); + m_uiCodeModelSupport.insert(uiFile, cms); + modelManager->addEditorSupport(cms); + } + } + } + + // Remove old + QMap<QString, CMakeUiCodeModelSupport *>::const_iterator it, end; + end = oldCodeModelSupport.constEnd(); + for (it = oldCodeModelSupport.constBegin(); it!=end; ++it) { + modelManager->removeEditorSupport(it.value()); + delete it.value(); + } +} + +void CMakeProject::updateCodeModelSupportFromEditor(const QString &uiFileName, + const QString &contents) +{ + const QMap<QString, CMakeUiCodeModelSupport *>::const_iterator it = + m_uiCodeModelSupport.constFind(uiFileName); + if (it != m_uiCodeModelSupport.constEnd()) + it.value()->updateFromEditor(contents); +} + +void CMakeProject::editorChanged(Core::IEditor *editor) +{ + // Handle old editor + Designer::FormWindowEditor *lastFormEditor = qobject_cast<Designer::FormWindowEditor *>(m_lastEditor); + if (lastFormEditor) { + disconnect(lastFormEditor, SIGNAL(changed()), this, SLOT(uiEditorContentsChanged())); + + if (m_dirtyUic) { + const QString contents = lastFormEditor->contents(); + updateCodeModelSupportFromEditor(lastFormEditor->file()->fileName(), contents); + m_dirtyUic = false; + } + } + + m_lastEditor = editor; + + // Handle new editor + if (Designer::FormWindowEditor *fw = qobject_cast<Designer::FormWindowEditor *>(editor)) + connect(fw, SIGNAL(changed()), this, SLOT(uiEditorContentsChanged())); +} + +void CMakeProject::editorAboutToClose(Core::IEditor *editor) +{ + if (m_lastEditor == editor) { + // Oh no our editor is going to be closed + // get the content first + Designer::FormWindowEditor *lastEditor = qobject_cast<Designer::FormWindowEditor *>(m_lastEditor); + if (lastEditor) { + disconnect(lastEditor, SIGNAL(changed()), this, SLOT(uiEditorContentsChanged())); + if (m_dirtyUic) { + const QString contents = lastEditor->contents(); + updateCodeModelSupportFromEditor(lastEditor->file()->fileName(), contents); + m_dirtyUic = false; + } + } + m_lastEditor = 0; + } +} + +void CMakeProject::uiEditorContentsChanged() +{ + // cast sender, get filename + if (m_dirtyUic) + return; + Designer::FormWindowEditor *fw = qobject_cast<Designer::FormWindowEditor *>(sender()); + if (!fw) + return; + m_dirtyUic = true; +} + +void CMakeProject::buildStateChanged(ProjectExplorer::Project *project) +{ + if (project == this) { + if (!ProjectExplorer::ProjectExplorerPlugin::instance()->buildManager()->isBuilding(this)) { + QMap<QString, CMakeUiCodeModelSupport *>::const_iterator it, end; + end = m_uiCodeModelSupport.constEnd(); + for (it = m_uiCodeModelSupport.constBegin(); it != end; ++it) { + it.value()->updateFromBuild(); + } + } + } +} + // CMakeFile CMakeFile::CMakeFile(CMakeProject *parent, QString fileName) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index d9128daebd7e0a85ec127aef7297c0fab5da42d4..f927b69935494ec71444e8cc6b2505b975244e15 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -43,6 +43,7 @@ #include <projectexplorer/filewatcher.h> #include <projectexplorer/buildconfiguration.h> #include <coreplugin/ifile.h> +#include <coreplugin/editormanager/ieditor.h> #include <QtCore/QXmlStreamReader> #include <QtGui/QPushButton> @@ -53,6 +54,7 @@ namespace Internal { class CMakeFile; class CMakeBuildSettingsWidget; +class CMakeUiCodeModelSupport; struct CMakeBuildTarget { @@ -100,6 +102,8 @@ public: bool parseCMakeLists(); + QString uicCommand() const; + signals: /// emitted after parsing void buildTargetsChanged(); @@ -115,15 +119,23 @@ private slots: void changeActiveBuildConfiguration(ProjectExplorer::BuildConfiguration*); void targetAdded(ProjectExplorer::Target *); + void editorChanged(Core::IEditor *editor); + void editorAboutToClose(Core::IEditor *editor); + void uiEditorContentsChanged(); + void buildStateChanged(ProjectExplorer::Project *project); private: void buildTree(CMakeProjectNode *rootNode, QList<ProjectExplorer::FileNode *> list); void gatherFileNodes(ProjectExplorer::FolderNode *parent, QList<ProjectExplorer::FileNode *> &list); ProjectExplorer::FolderNode *findOrCreateFolder(CMakeProjectNode *rootNode, QString directory); + void updateCodeModelSupportFromEditor(const QString &uiFileName, const QString &contents); + void createUiCodeModelSupport(); + QString uiHeaderFile(const QString &uiFile); CMakeManager *m_manager; QString m_fileName; CMakeFile *m_file; QString m_projectName; + QString m_uicCommand; // TODO probably need a CMake specific node structure CMakeProjectNode *m_rootNode; @@ -134,6 +146,10 @@ private: QSet<QString> m_watchedFiles; CMakeTargetFactory *m_targetFactory; QFuture<void> m_codeModelFuture; + + QMap<QString, CMakeUiCodeModelSupport *> m_uiCodeModelSupport; + Core::IEditor *m_lastEditor; + bool m_dirtyUic; }; class CMakeCbpParser : public QXmlStreamReader diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index bb84b5242d8d4b5c904a9f4018abed827f0f36dd..2403846cd9ccfc7fd7433722c3864ffb75b4e4b3 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -117,7 +117,6 @@ void CMakeManager::createXmlFile(QProcess *proc, const QStringList &arguments, QString buildDirectoryPath = buildDirectory.absolutePath(); buildDirectory.mkpath(buildDirectoryPath); proc->setWorkingDirectory(buildDirectoryPath); - proc->setProcessChannelMode(QProcess::MergedChannels); proc->setEnvironment(env.toStringList()); const QString srcdir = buildDirectory.exists(QLatin1String("CMakeCache.txt")) ? diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro index 8a94e4a77a144ff2093163d02d182191ceca8098..1f54025a5e9953cd9896b16bb60126d4616860b6 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro @@ -14,7 +14,8 @@ HEADERS = cmakeproject.h \ cmakebuildconfiguration.h \ cmakeeditorfactory.h \ cmakeeditor.h \ - cmakehighlighter.h + cmakehighlighter.h \ + cmakeuicodemodelsupport.h SOURCES = cmakeproject.cpp \ cmakeprojectplugin.cpp \ cmakeprojectmanager.cpp \ @@ -26,7 +27,8 @@ SOURCES = cmakeproject.cpp \ cmakebuildconfiguration.cpp \ cmakeeditorfactory.cpp \ cmakeeditor.cpp \ - cmakehighlighter.cpp + cmakehighlighter.cpp \ + cmakeuicodemodelsupport.cpp RESOURCES += cmakeproject.qrc FORMS += diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager_dependencies.pri b/src/plugins/cmakeprojectmanager/cmakeprojectmanager_dependencies.pri index 80118ad122efeb8ce51462307d35e13a66845e9f..7785312ea5fa77ded06f9e938e70786ed5b94dc6 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager_dependencies.pri +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager_dependencies.pri @@ -1,4 +1,4 @@ include(../../plugins/projectexplorer/projectexplorer.pri) include(../../plugins/cpptools/cpptools.pri) -include(../../plugins/cppeditor/cppeditor.pri) include(../../plugins/texteditor/texteditor.pri) +include(../../plugins/designer/designer.pri) diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index c1c493851f10372c99ae34dd463f2cd785fd0e95..2843ecc4385a5ed0b9740535e5d6e4885416d544 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -244,7 +244,7 @@ QStringList CMakeRunConfiguration::dumperLibraryLocations() const { QString qmakePath = ProjectExplorer::DebuggingHelperLibrary::findSystemQt(environment()); QString qtInstallData = ProjectExplorer::DebuggingHelperLibrary::qtInstallDataDir(qmakePath); - return ProjectExplorer::DebuggingHelperLibrary::debuggingHelperLibraryLocationsByInstallData(qtInstallData); + return ProjectExplorer::DebuggingHelperLibrary::locationsByInstallData(qtInstallData); } Utils::Environment CMakeRunConfiguration::baseEnvironment() const diff --git a/src/plugins/cmakeprojectmanager/cmakeuicodemodelsupport.cpp b/src/plugins/cmakeprojectmanager/cmakeuicodemodelsupport.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e6736f54ceb43227ed57871978b45f1355ada793 --- /dev/null +++ b/src/plugins/cmakeprojectmanager/cmakeuicodemodelsupport.cpp @@ -0,0 +1,64 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "cmakeuicodemodelsupport.h" +#include "cmakeproject.h" +#include "cmaketarget.h" +#include "cmakebuildconfiguration.h" + +#include <QtCore/QProcess> + +using namespace CMakeProjectManager; +using namespace Internal; + +CMakeUiCodeModelSupport::CMakeUiCodeModelSupport(CppTools::CppModelManagerInterface *modelmanager, + CMakeProject *project, + const QString &source, + const QString &uiHeaderFile) + : CppTools::UiCodeModelSupport(modelmanager, source, uiHeaderFile), + m_project(project) +{ + +} + +CMakeUiCodeModelSupport::~CMakeUiCodeModelSupport() +{ + +} + +QString CMakeUiCodeModelSupport::uicCommand() const +{ + return m_project->uicCommand(); +} + +QStringList CMakeUiCodeModelSupport::environment() const +{ + CMakeBuildConfiguration *bc = m_project->activeTarget()->activeBuildConfiguration(); + return bc->environment().toStringList(); +} diff --git a/src/plugins/snippets/snippetspec.h b/src/plugins/cmakeprojectmanager/cmakeuicodemodelsupport.h similarity index 62% rename from src/plugins/snippets/snippetspec.h rename to src/plugins/cmakeprojectmanager/cmakeuicodemodelsupport.h index 2f07e6f6fa07af6ba3216f2b733a265bc7eccb4e..dc297d39b7b5b631e05bb47a49d5cde419fc02f3 100644 --- a/src/plugins/snippets/snippetspec.h +++ b/src/plugins/cmakeprojectmanager/cmakeuicodemodelsupport.h @@ -27,39 +27,35 @@ ** **************************************************************************/ -#ifndef SNIPPETSPEC_H -#define SNIPPETSPEC_H +#ifndef CMAKEUICODEMODELSUPPORT_H +#define CMAKEUICODEMODELSUPPORT_H -#include <QtCore/QMap> -#include <QtCore/QString> +#include <cpptools/cppmodelmanagerinterface.h> +#include <cpptools/uicodecompletionsupport.h> -namespace Snippets { +#include <QtCore/QDateTime> + +namespace CMakeProjectManager { namespace Internal { -class SnippetSpec +class CMakeProject; + +class CMakeUiCodeModelSupport : public CppTools::UiCodeModelSupport { public: - bool load(const QString &fileName); - - QString contents() const; - QString name() const; - QString description() const; - QString category() const; - QString completionShortcut() const; - QString argumentDescription(int id) const; - QString argumentDefault(int id) const; - + CMakeUiCodeModelSupport(CppTools::CppModelManagerInterface *modelmanager, + CMakeProject *project, + const QString &sourceFile, + const QString &uiHeaderFile); + ~CMakeUiCodeModelSupport(); +protected: + virtual QString uicCommand() const; + virtual QStringList environment() const; private: - QString m_contents; - QString m_name; - QString m_description; - QString m_category; - QString m_completionShortcut; - QMap<int, QString> m_argumentDescription; - QMap<int, QString> m_argumentDefault; + CMakeProject *m_project; }; -} //namespace Internal -} //namespace Snippets -#endif // SNIPPETSPEC_H +} // Internal +} // Qt4ProjectManager +#endif // CMAKEUICODEMODELSUPPORT_H diff --git a/src/plugins/coreplugin/Core.pluginspec b/src/plugins/coreplugin/Core.pluginspec index 64b3627c3375a862722d38c7c30468ecdc796cd0..6ca42b8d8054686bc9a73a39cc3060234db45ebd 100644 --- a/src/plugins/coreplugin/Core.pluginspec +++ b/src/plugins/coreplugin/Core.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Core" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Core" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp index 993555d20dde9dc214a344d60b6cecd7ec956177..96888ad819efaabe0d0c1daf10cf0795b6c02244 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp +++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp @@ -377,8 +377,6 @@ Command *ActionManagerPrivate::registerOverridableAction(QAction *action, const #endif a->setAction(baseAction); m_mainWnd->addAction(baseAction); - a->setKeySequence(a->keySequence()); - a->setDefaultKeySequence(QKeySequence()); } else if (checkUnique) { qWarning() << "registerOverridableAction: id" << id << "is already registered."; } @@ -417,9 +415,6 @@ Command *ActionManagerPrivate::registerShortcut(QShortcut *shortcut, const Id &i else sc->setContext(context); - sc->setKeySequence(shortcut->key()); - sc->setDefaultKeySequence(QKeySequence()); - return sc; } diff --git a/src/plugins/coreplugin/actionmanager/command.cpp b/src/plugins/coreplugin/actionmanager/command.cpp index 2c37d312492a2470ff3aaec5ef63b7565872a954..ccf4ccd56eed754491c7ae56d4b4de6bb8c76cb1 100644 --- a/src/plugins/coreplugin/actionmanager/command.cpp +++ b/src/plugins/coreplugin/actionmanager/command.cpp @@ -200,12 +200,14 @@ using namespace Core::Internal; */ CommandPrivate::CommandPrivate(int id) - : m_attributes(0), m_id(id) + : m_attributes(0), m_id(id), m_isKeyInitialized(false) { } void CommandPrivate::setDefaultKeySequence(const QKeySequence &key) { + if (!m_isKeyInitialized) + setKeySequence(key); m_defaultKey = key; } @@ -214,6 +216,12 @@ QKeySequence CommandPrivate::defaultKeySequence() const return m_defaultKey; } +void CommandPrivate::setKeySequence(const QKeySequence &key) +{ + Q_UNUSED(key) + m_isKeyInitialized = true; +} + void CommandPrivate::setDefaultText(const QString &text) { m_defaultText = text; @@ -306,15 +314,9 @@ Core::Context Shortcut::context() const return m_context; } -void Shortcut::setDefaultKeySequence(const QKeySequence &key) -{ - if (m_shortcut->key().isEmpty()) - setKeySequence(key); - CommandPrivate::setDefaultKeySequence(key); -} - void Shortcut::setKeySequence(const QKeySequence &key) { + CommandPrivate::setKeySequence(key); m_shortcut->setKey(key); emit keySequenceChanged(); } @@ -405,15 +407,9 @@ QList<CommandLocation> Action::locations() const return m_locations; } -void Action::setDefaultKeySequence(const QKeySequence &key) -{ - if (m_action->shortcut().isEmpty()) - setKeySequence(key); - CommandPrivate::setDefaultKeySequence(key); -} - void Action::setKeySequence(const QKeySequence &key) { + CommandPrivate::setKeySequence(key); m_action->setShortcut(key); updateToolTipWithKeySequence(); emit keySequenceChanged(); @@ -538,3 +534,4 @@ void Action::setActive(bool state) emit activeStateChanged(); } } + diff --git a/src/plugins/coreplugin/actionmanager/command_p.h b/src/plugins/coreplugin/actionmanager/command_p.h index 12ed105afdc5634de5da124f7fd18018a88ed6b9..a7bac35da14fb23030d240be47e57029486df6e2 100644 --- a/src/plugins/coreplugin/actionmanager/command_p.h +++ b/src/plugins/coreplugin/actionmanager/command_p.h @@ -53,6 +53,8 @@ public: void setDefaultKeySequence(const QKeySequence &key); QKeySequence defaultKeySequence() const; + void setKeySequence(const QKeySequence &key); + void setDefaultText(const QString &text); QString defaultText() const; @@ -78,6 +80,7 @@ protected: int m_id; QKeySequence m_defaultKey; QString m_defaultText; + bool m_isKeyInitialized; }; class Shortcut : public CommandPrivate @@ -88,7 +91,6 @@ public: QString name() const; - void setDefaultKeySequence(const QKeySequence &key); void setKeySequence(const QKeySequence &key); QKeySequence keySequence() const; @@ -116,7 +118,6 @@ public: QString name() const; - void setDefaultKeySequence(const QKeySequence &key); void setKeySequence(const QKeySequence &key); QKeySequence keySequence() const; diff --git a/src/plugins/coreplugin/basefilewizard.cpp b/src/plugins/coreplugin/basefilewizard.cpp index 054e560bd8a3018c0202f633b88e21bd907b3f56..96dfcba38a0b68555dadf525897a42b603c0d859 100644 --- a/src/plugins/coreplugin/basefilewizard.cpp +++ b/src/plugins/coreplugin/basefilewizard.cpp @@ -72,7 +72,7 @@ public: }; GeneratedFilePrivate::GeneratedFilePrivate(const QString &p) : - path(p), + path(QDir::cleanPath(p)), binary(false), attributes(0) { @@ -111,7 +111,7 @@ QString GeneratedFile::path() const void GeneratedFile::setPath(const QString &p) { - m_d->path = p; + m_d->path = QDir::cleanPath(p); } QString GeneratedFile::contents() const @@ -628,7 +628,7 @@ bool BaseFileWizard::postGenerateOpenEditors(const GeneratedFiles &l, QString *e if (file.attributes() & Core::GeneratedFile::OpenEditorAttribute) { if (!em->openEditor(file.path(), file.editorId(), Core::EditorManager::ModeSwitch )) { if (errorMessage) - *errorMessage = tr("Failed to open an editor for '%1'.").arg(file.path()); + *errorMessage = tr("Failed to open an editor for '%1'.").arg(QDir::toNativeSeparators(file.path())); return false; } } @@ -663,7 +663,7 @@ BaseFileWizard::OverwriteResult BaseFileWizard::promptOverwrite(const QStringLis if (fi.exists()) { if (!fileNamesMsgPart.isEmpty()) fileNamesMsgPart += QLatin1String(", "); - fileNamesMsgPart += fileName.mid(commonExistingPath.size() + 1); + fileNamesMsgPart += QDir::toNativeSeparators(fileName.mid(commonExistingPath.size() + 1)); do { if (fi.isDir()) { oddStuffFound = true; @@ -687,13 +687,14 @@ BaseFileWizard::OverwriteResult BaseFileWizard::promptOverwrite(const QStringLis return OverwriteOk; if (oddStuffFound) { - *errorMessage = tr("The project directory %1 contains files which cannot be overwritten:\n%2.").arg(commonExistingPath).arg(fileNamesMsgPart); + *errorMessage = tr("The project directory %1 contains files which cannot be overwritten:\n%2.") + .arg(QDir::toNativeSeparators(commonExistingPath)).arg(fileNamesMsgPart); return OverwriteError; } const QString messageFormat = tr("The following files already exist in the directory %1:\n" "%2.\nWould you like to overwrite them?"); - const QString message = messageFormat.arg(commonExistingPath).arg(fileNamesMsgPart); + const QString message = messageFormat.arg(QDir::toNativeSeparators(commonExistingPath)).arg(fileNamesMsgPart); const bool yes = (QMessageBox::question(Core::ICore::instance()->mainWindow(), tr("Existing files"), message, QMessageBox::Yes | QMessageBox::No, diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 42f167dd1551f2682d808b7ccb3108b324efdcda..c1fbb3e40f2e5f894dd7e6f3133ad43d68862956 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -36,8 +36,8 @@ namespace Core { namespace Constants { #define IDE_VERSION_MAJOR 2 -#define IDE_VERSION_MINOR 0 -#define IDE_VERSION_RELEASE 91 +#define IDE_VERSION_MINOR 1 +#define IDE_VERSION_RELEASE 81 #define STRINGIFY_INTERNAL(x) #x #define STRINGIFY(x) STRINGIFY_INTERNAL(x) diff --git a/src/plugins/coreplugin/iversioncontrol.h b/src/plugins/coreplugin/iversioncontrol.h index c402c1fb77c8ef3c316fe6bfb8c06acb53e1fe0e..d0dd868b1a24ccbf8700bcd3814550dc7bd62bba 100644 --- a/src/plugins/coreplugin/iversioncontrol.h +++ b/src/plugins/coreplugin/iversioncontrol.h @@ -52,7 +52,9 @@ public: AddOperation, DeleteOperation, OpenOperation, MoveOperation, CreateRepositoryOperation, SnapshotOperations, - AnnotateOperation + AnnotateOperation, + CheckoutOperation, + GetRepositoryRootOperation }; explicit IVersionControl(QObject *parent = 0) : QObject(parent) {} @@ -116,6 +118,16 @@ public: */ virtual bool vcsCreateRepository(const QString &directory) = 0; + /*! + * Called to clone/checkout the version control system in a directory. + */ + virtual bool vcsCheckout(const QString &directory, const QByteArray &url) = 0; + + /*! + * Called to get the version control repository root. + */ + virtual QString vcsGetRepositoryURL(const QString &director) = 0; + /*! * Create a snapshot of the current state and return an identifier or * an empty string in case of failure. diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 1b0a14e329821869c5fb2d6ea8a5c71e4afc2264..8d086473f42e1c78581c807834a9625e4666b640 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -198,6 +198,9 @@ void ModeManager::objectAdded(QObject *obj) connect(cmd, SIGNAL(keySequenceChanged()), this, SLOT(updateModeToolTip())); for (int i = 0; i < d->m_modeShortcuts.size(); ++i) { Command *currentCmd = d->m_modeShortcuts.at(i); + // we need this hack with currentlyHasDefaultSequence + // because we call setDefaultShortcut multiple times on the same cmd + // and still expect the current shortcut to change with it bool currentlyHasDefaultSequence = (currentCmd->keySequence() == currentCmd->defaultKeySequence()); #ifdef Q_WS_MAC diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index 0221e29c9fa2a4ecf401fe67045da5fd60bcfa1e..da42a17bad48ed7051430789a536ae91338d9468 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -167,6 +167,41 @@ bool VCSManager::promptToDelete(const QString &fileName) return true; } +IVersionControl *VCSManager::checkout(const QString &versionControlType, + const QString &directory, + const QByteArray &url) +{ + foreach (IVersionControl *versionControl, allVersionControls()) { + if (versionControl->displayName() == versionControlType + && versionControl->supportsOperation(Core::IVersionControl::CheckoutOperation)) { + if (versionControl->vcsCheckout(directory, url)) { + m_d->m_cachedMatches.insert(directory, versionControl); + return versionControl; + } + return 0; + } + } + return 0; +} + +bool VCSManager::findVersionControl(const QString &versionControlType) +{ + foreach (IVersionControl * versionControl, allVersionControls()) { + if (versionControl->displayName() == versionControlType) + return true; + } + return false; +} + +QString VCSManager::getRepositoryURL(const QString &directory) +{ + IVersionControl *vc = findVersionControlForDirectory(directory); + + if (vc && vc->supportsOperation(Core::IVersionControl::GetRepositoryRootOperation)) + return vc->vcsGetRepositoryURL(directory); + return QString(); +} + bool VCSManager::promptToDelete(IVersionControl *vc, const QString &fileName) { QTC_ASSERT(vc, return true) diff --git a/src/plugins/coreplugin/vcsmanager.h b/src/plugins/coreplugin/vcsmanager.h index 71e9b3e9c34542569e2da6bcd8ac8e01601d149d..6b2e374a8833517babb22f55b7e42dc39d0d49e2 100644 --- a/src/plugins/coreplugin/vcsmanager.h +++ b/src/plugins/coreplugin/vcsmanager.h @@ -68,6 +68,11 @@ public: IVersionControl *findVersionControlForDirectory(const QString &directory, QString *topLevelDirectory = 0); + IVersionControl *checkout(const QString &versionControlType, + const QString &directory, + const QByteArray &url); + bool findVersionControl(const QString &versionControl); + QString getRepositoryURL(const QString &directory); // Shows a confirmation dialog, whether the file should also be deleted // from revision control Calls sccDelete on the file. Returns false diff --git a/src/plugins/cpaster/CodePaster.pluginspec b/src/plugins/cpaster/CodePaster.pluginspec index 8805039846e0f6aa8b18c0418ba62a96c903cd23..83acf7dd635f9469a398fa4825c16f3e89fc64b1 100644 --- a/src/plugins/cpaster/CodePaster.pluginspec +++ b/src/plugins/cpaster/CodePaster.pluginspec @@ -1,4 +1,4 @@ -<plugin name="CodePaster" version="2.0.91" compatVersion="2.0.91"> +<plugin name="CodePaster" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -13,8 +13,7 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Codepaster plugin for pushing/fetching diff from server</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Core" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/cpaster/codepasterprotocol.cpp b/src/plugins/cpaster/codepasterprotocol.cpp index bc8137abfd8423d4e76d310a166837fb6a30ccc8..bd7657656c80e69fe084d190fe1d71fbb53164b1 100644 --- a/src/plugins/cpaster/codepasterprotocol.cpp +++ b/src/plugins/cpaster/codepasterprotocol.cpp @@ -99,13 +99,24 @@ void CodePasterProtocol::fetch(const QString &id) QTC_ASSERT(!m_fetchReply, return; ) QString hostName = m_page->hostName(); - QString link = "http://"; - link.append(hostName); - link.append("/?format=raw&id="); - link.append(id); + const QString httpPrefix = "http://"; + QString link; + // Did the user enter a complete URL instead of an id? + if (id.startsWith(httpPrefix)) { + // Append 'raw' format option + link = id; + link += QLatin1String("&format=raw"); + const int idPos = id.lastIndexOf(QLatin1Char('=')); + m_fetchId = idPos != -1 ? id.mid(idPos + 1) : id; + } else { + link = httpPrefix; + link.append(hostName); + link.append("/?format=raw&id="); + link.append(id); + m_fetchId = id; + } m_fetchReply = httpGet(link); connect(m_fetchReply, SIGNAL(finished()), this, SLOT(fetchFinished())); - m_fetchId = id; } void CodePasterProtocol::list() diff --git a/src/plugins/cpaster/cpaster_dependencies.pri b/src/plugins/cpaster/cpaster_dependencies.pri index 5c489ae1c49066f67d1afd7a5844dd34b4d855cd..ec55414dcf15ed32efcd4a2c9f7e9cb9a61a4f86 100644 --- a/src/plugins/cpaster/cpaster_dependencies.pri +++ b/src/plugins/cpaster/cpaster_dependencies.pri @@ -1,3 +1,2 @@ -include(../../plugins/projectexplorer/projectexplorer.pri) include(../../plugins/texteditor/texteditor.pri) include(../../plugins/coreplugin/coreplugin.pri) diff --git a/src/plugins/cppeditor/CppEditor.mimetypes.xml b/src/plugins/cppeditor/CppEditor.mimetypes.xml index 5dd9f0610abe4b00b3cd0df1d416e2cff64fa121..6305531764aa2770ae4af127358b3d2022e2415c 100644 --- a/src/plugins/cppeditor/CppEditor.mimetypes.xml +++ b/src/plugins/cppeditor/CppEditor.mimetypes.xml @@ -29,9 +29,12 @@ <glob pattern="*.hpp"/> <glob pattern="*.hp"/> <!-- Find include guards of header files without extension, for - example, STL ones like <string> --> + example, STL ones like <string>. Those can have a big initial + comment exceeding 1000 chars, though. --> <magic priority="50"> - <match value="#ifndef" type="string" offset="0:1000"/> + <match value="#ifndef " type="string" offset="0:2000"/> + <match value="#if " type="string" offset="0:2000"/> + <match value="#include " type="string" offset="0:2000"/> </magic> </mime-type> diff --git a/src/plugins/cppeditor/CppEditor.pluginspec b/src/plugins/cppeditor/CppEditor.pluginspec index ad94a1b9415cf9cbfb4ee4c0b59306d617e98e39..9c2a2b1601c6053f748c49e64dc636726ed9c981 100644 --- a/src/plugins/cppeditor/CppEditor.pluginspec +++ b/src/plugins/cppeditor/CppEditor.pluginspec @@ -1,4 +1,4 @@ -<plugin name="CppEditor" version="2.0.91" compatVersion="2.0.91"> +<plugin name="CppEditor" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,8 +14,8 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>C/C++ editor component.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="CppTools" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="CppTools" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 9fe55f05a81dc23b26fada04985a79f8635ab3cc..e106306e0af9bbd6c9fbc4fba1f0d8c771d24ed5 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -102,6 +102,10 @@ enum { using namespace CPlusPlus; using namespace CppEditor::Internal; +namespace { +bool semanticHighlighterDisabled = qstrcmp(qVersion(), "4.7.0") == 0; +} + static QList<QTextEdit::ExtraSelection> createSelections(QTextDocument *document, const QList<CPlusPlus::Document::DiagnosticMessage> &msgs, const QTextCharFormat &format) @@ -1888,7 +1892,7 @@ void CPPEditor::updateSemanticInfo(const SemanticInfo &semanticInfo) m_highlighter.cancel(); - if (semanticInfo.doc) { + if (! semanticHighlighterDisabled && semanticInfo.doc) { if (Core::EditorManager::instance()->currentEditor() == editableInterface()) { LookupContext context(semanticInfo.doc, semanticInfo.snapshot); CheckSymbols::Future f = CheckSymbols::go(semanticInfo.doc, context); diff --git a/src/plugins/cppeditor/cppeditor.pro b/src/plugins/cppeditor/cppeditor.pro index 0e86ffeb8e8dcea36449c4fb3fe59270f91eb1cd..57767721ec4649ddf481f27d99e4a99787b5e4dd 100644 --- a/src/plugins/cppeditor/cppeditor.pro +++ b/src/plugins/cppeditor/cppeditor.pro @@ -15,7 +15,6 @@ HEADERS += cppplugin.h \ cppeditor_global.h \ cppclasswizard.h \ cppquickfix.h \ - cpprefactoringchanges.h \ cppchecksymbols.h \ cppsemanticinfo.h \ cppoutline.h \ @@ -31,7 +30,6 @@ SOURCES += cppplugin.cpp \ cppclasswizard.cpp \ cppquickfix.cpp \ cppquickfixes.cpp \ - cpprefactoringchanges.cpp \ cppchecksymbols.cpp \ cppsemanticinfo.cpp \ cppoutline.cpp \ diff --git a/src/plugins/cppeditor/cppelementevaluator.cpp b/src/plugins/cppeditor/cppelementevaluator.cpp index 4ed8a0b207a89f7033d380e0962e7630df94dbea..cfb1fd77f5004905927feef72ebb613f23002f39 100644 --- a/src/plugins/cppeditor/cppelementevaluator.cpp +++ b/src/plugins/cppeditor/cppelementevaluator.cpp @@ -66,6 +66,18 @@ namespace { ch = doc->characterAt(tc->position()); } } + + QStringList stripName(const QString &name) { + QStringList all; + all << name; + int colonColon = 0; + const int size = name.size(); + while ((colonColon = name.indexOf(QLatin1String("::"), colonColon)) != -1) { + all << name.right(size - colonColon - 2); + colonColon += 2; + } + return all; + } } CppElementEvaluator::CppElementEvaluator(CPPEditor *editor) : @@ -314,16 +326,14 @@ CppDeclarableElement::CppDeclarableElement(Symbol *declaration) : CppElement() declaration->enclosingScope()->isNamespace() || declaration->enclosingScope()->isEnum()) { m_qualifiedName = overview.prettyName(LookupContext::fullyQualifiedName(declaration)); + setHelpIdCandidates(stripName(m_qualifiedName)); } else { m_qualifiedName = m_name; + setHelpIdCandidates(QStringList(m_name)); } setTooltip(overview.prettyType(declaration->type(), m_qualifiedName)); setLink(CPPEditor::linkToSymbol(declaration)); - - QStringList helpIds; - helpIds << m_qualifiedName << m_name; - setHelpIdCandidates(helpIds); setHelpMark(m_name); } @@ -482,10 +492,15 @@ CppVariable::CppVariable(Symbol *declaration, const LookupContext &context, Scop Symbol *symbol = clazz->symbols().at(0); const QString &name = overview.prettyName(LookupContext::fullyQualifiedName(symbol)); - setTooltip(name); - setHelpCategory(TextEditor::HelpItem::ClassOrNamespace); - setHelpMark(name); - setHelpIdCandidates(QStringList(name)); + if (!name.isEmpty()) { + setTooltip(name); + setHelpCategory(TextEditor::HelpItem::ClassOrNamespace); + const QStringList &allNames = stripName(name); + if (!allNames.isEmpty()) { + setHelpMark(allNames.last()); + setHelpIdCandidates(allNames); + } + } } } } diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cppeditor/cpphoverhandler.cpp index 2168bc9e2d13df6cfffa1f830ad5584c86bc952f..bd448ddafb909e28b18316410baf2980bcbc9c12 100644 --- a/src/plugins/cppeditor/cpphoverhandler.cpp +++ b/src/plugins/cppeditor/cpphoverhandler.cpp @@ -46,16 +46,6 @@ using namespace CppEditor::Internal; using namespace Core; -namespace { - QString removeClassNameQualification(const QString &name) { - const int index = name.lastIndexOf(QLatin1Char(':')); - if (index == -1) - return name; - else - return name.right(name.length() - index - 1); - } -} - CppHoverHandler::CppHoverHandler(QObject *parent) : BaseHoverHandler(parent) {} @@ -87,16 +77,8 @@ void CppHoverHandler::identifyMatch(TextEditor::ITextEditor *editor, int pos) QSharedPointer<CppElement> cppElement = evaluator.identifyCppElement(); if (!cppElement.isNull()) { setToolTip(cppElement->tooltip()); - foreach (QString helpId, cppElement->helpIdCandidates()) { - bool found = false; + foreach (const QString &helpId, cppElement->helpIdCandidates()) { if (!Core::HelpManager::instance()->linksForIdentifier(helpId).isEmpty()) { - found = true; - } else { - helpId = removeClassNameQualification(helpId); - if (!Core::HelpManager::instance()->linksForIdentifier(helpId).isEmpty()) - found = true; - } - if (found) { setLastHelpItemIdentified(TextEditor::HelpItem(helpId, cppElement->helpMark(), cppElement->helpCategory())); @@ -114,14 +96,26 @@ void CppHoverHandler::decorateToolTip() const TextEditor::HelpItem &help = lastHelpItemIdentified(); if (help.isValid()) { + // If Qt is built with a namespace, we still show the tip without it, as + // it is in the docs and for consistency with the doc extraction mechanism. + const TextEditor::HelpItem::Category category = help.category(); const QString &contents = help.extractContent(false); if (!contents.isEmpty()) { - if (help.category() == TextEditor::HelpItem::ClassOrNamespace) { - setToolTip(Qt::escape(toolTip())); - appendToolTip(contents); - } else { + if (category == TextEditor::HelpItem::ClassOrNamespace) + setToolTip(help.helpId() + contents); + else setToolTip(contents); - } + } else if (category == TextEditor::HelpItem::Typedef || + category == TextEditor::HelpItem::Enum || + category == TextEditor::HelpItem::ClassOrNamespace) { + // This approach is a bit limited since it cannot be used for functions + // because the help id doesn't really help in that case. + QString prefix; + if (category == TextEditor::HelpItem::Typedef) + prefix = QLatin1String("typedef "); + else if (category == TextEditor::HelpItem::Enum) + prefix = QLatin1String("enum "); + setToolTip(prefix + help.helpId()); } addF1ToToolTip(); } diff --git a/src/plugins/cppeditor/cppinsertdecldef.cpp b/src/plugins/cppeditor/cppinsertdecldef.cpp index c79c502660b0d69d3ccf474cb346b1228711b8a7..66bbdfd6919a33c0f8f62ab9840d01907222a26f 100644 --- a/src/plugins/cppeditor/cppinsertdecldef.cpp +++ b/src/plugins/cppeditor/cppinsertdecldef.cpp @@ -36,9 +36,10 @@ #include <Symbols.h> #include <TranslationUnit.h> #include <cplusplus/ASTPath.h> -#include <cplusplus/InsertionPointLocator.h> +#include <cplusplus/CppRewriter.h> #include <cplusplus/LookupContext.h> #include <cplusplus/Overview.h> +#include <cpptools/insertionpointlocator.h> #include <QtCore/QCoreApplication> @@ -47,8 +48,6 @@ using namespace CppEditor; using namespace CppEditor::Internal; using namespace CppTools; -using CppEditor::CppRefactoringChanges; - namespace { class InsertDeclOperation: public CppQuickFixOperation @@ -81,7 +80,7 @@ public: void performChanges(CppRefactoringFile *, CppRefactoringChanges *refactoring) { - InsertionPointLocator locator(state().snapshot()); + InsertionPointLocator locator(refactoring); const InsertionLocation loc = locator.methodDeclarationInClass( m_targetFileName, m_targetSymbol, m_xsSpec); Q_ASSERT(loc.isValid()); @@ -209,168 +208,97 @@ QString DeclFromDef::generateDeclaration(const CppQuickFixState &, namespace { -static inline bool hasFunctionType(DeclarationAST *decl) +class InsertDefOperation: public CppQuickFixOperation { - if (decl->asFunctionDefinition()) - return true; +public: + InsertDefOperation(const CppQuickFixState &state, int priority, + Declaration *decl, const InsertionLocation &loc) + : CppQuickFixOperation(state, priority) + , m_decl(decl) + , m_loc(loc) + { + setDescription(QCoreApplication::tr("Add definition in %1", + "CppEditor::DefFromDecl") + .arg(m_loc.fileName())); + } + + void performChanges(CppRefactoringFile *, + CppRefactoringChanges *refactoring) + { + Q_ASSERT(m_loc.isValid()); - if (SimpleDeclarationAST *ast = decl->asSimpleDeclaration()) - if (ast->symbols && ast->symbols->value && !ast->symbols->next) - if (Declaration *decl = ast->symbols->value->asDeclaration()) - if (FullySpecifiedType ty = decl->type()) - return ty->asFunctionType(); + CppRefactoringFile targetFile = refactoring->file(m_loc.fileName()); - return false; -} + Overview oo; + oo.setShowFunctionSignatures(true); + oo.setShowReturnTypes(true); + oo.setShowArgumentNames(true); -static QPair<DeclarationAST *, DeclarationAST *> findSurroundingDeclarations( - DeclarationListAST *members, - DeclarationAST *decl) -{ - bool found = false; - DeclarationAST *last = 0, *next = 0, *prev = 0; - DeclarationListAST *iter = members; - for (; iter; iter = iter->next) { - DeclarationAST *value = iter->value; - if (value == decl) { - prev = last; - found = true; - } else if (hasFunctionType(value)) { - if (found) { - next = value; - break; - } else { - last = value; - } - } + //-- + SubstitutionEnvironment env; + env.setContext(state().context()); + env.switchScope(m_decl->enclosingScope()); + UseQualifiedNames q; + env.enter(&q); + + Control *control = state().context().control().data(); + FullySpecifiedType tn = rewriteType(m_decl->type(), &env, control); + QString name = oo(LookupContext::fullyQualifiedName(m_decl)); + //-- + + QString defText = oo.prettyType(tn, name) + "\n{\n}"; + + int targetPos = targetFile.position(m_loc.line(), m_loc.column()); + int targetPos2 = qMax(0, targetFile.position(m_loc.line(), 1) - 1); + + Utils::ChangeSet target; + target.insert(targetPos, m_loc.prefix() + defText + m_loc.suffix()); + targetFile.change(target); + targetFile.indent(Utils::ChangeSet::Range(targetPos2, targetPos)); + + const int prefixLineCount = m_loc.prefix().count(QLatin1Char('\n')); + refactoring->activateEditor(m_loc.fileName(), + m_loc.line() + prefixLineCount, + 0); } - return qMakePair(prev, next); -} +private: + Declaration *m_decl; + InsertionLocation m_loc; +}; } // anonymous namespace QList<CppQuickFixOperation::Ptr> DefFromDecl::match(const CppQuickFixState &state) { -#if 0 - qDebug() << Q_FUNC_INFO; - const QList<AST *> &path = state.path(); const CppRefactoringFile &file = state.currentFile(); - DeclaratorAST *declAST = 0; - ClassSpecifierAST *classSpec = 0; int idx = path.size() - 1; for (; idx >= 0; --idx) { AST *node = path.at(idx); - if (ClassSpecifierAST *clazz = node->asClassSpecifier()) { - classSpec = clazz; - continue; - } + if (SimpleDeclarationAST *simpleDecl = node->asSimpleDeclaration()) { + if (simpleDecl->symbols && ! simpleDecl->symbols->next) { + if (Symbol *symbol = simpleDecl->symbols->value) { + if (Declaration *decl = symbol->asDeclaration()) { + if (decl->type()->isFunctionType() && decl->enclosingScope() && decl->enclosingScope()->isClass()) { + DeclaratorAST *declarator = simpleDecl->declarator_list->value; + if (file.isCursorOn(declarator->core_declarator)) { + CppRefactoringChanges refactoring(state.snapshot()); + InsertionPointLocator locator(&refactoring); + QList<CppQuickFixOperation::Ptr> results; + foreach (const InsertionLocation &loc, locator.methodDefinition(decl)) + results.append(CppQuickFixOperation::Ptr(new InsertDefOperation(state, idx, decl, loc))); + return results; + } + } + } + } + } - if (idx <= 1) continue; - DeclaratorIdAST *declId = node->asDeclaratorId(); - if (!declId) continue; - - if (!file.isCursorOn(declId)) continue; - - DeclaratorAST *candidate = path.at(idx - 1)->asDeclarator(); - if (!candidate) continue; - if (!candidate->postfix_declarator_list) continue; - if (!candidate->postfix_declarator_list->value) continue; - if (candidate->postfix_declarator_list->next) continue; - FunctionDeclaratorAST *funDecl = candidate->postfix_declarator_list->value->asFunctionDeclarator(); - if (!funDecl) continue; - if (funDecl->symbol->asFunctionType()) - declAST = candidate; + break; + } } - if (!declAST || !classSpec || !classSpec->symbol) - return noResult(); - - if (!declAST->symbols || !declAST->symbols->value || declAST->symbols->next) - return noResult(); - - Declaration *decl = declAST->symbols->value->asDeclaration(); - if (!decl) - return noResult(); - - Function *funTy = decl->type()->asFunctionType(); - if (!funTy) - return noResult(); - - qDebug() << "-> Found funTy."; - - QPair<DeclarationAST *, DeclarationAST *> surroundingNodes = - findSurroundingDeclarations(classSpec->member_specifier_list, declAST); - qDebug() << "->("<<surroundingNodes.first<<","<<surroundingNodes.second<<")"; - if (surroundingNodes.first) - if (SimpleDeclarationAST *sd = surroundingNodes.first->asSimpleDeclaration()) - qDebug()<<"-->prev@"<<sd->symbols->value->line()<<sd->symbols->value->column(); - if (surroundingNodes.second) - if (SimpleDeclarationAST *sd=surroundingNodes.second->asSimpleDeclaration()) - qDebug()<<"-->next@"<<sd->symbols->value->line()<<sd->symbols->value->column(); -#endif -// if (ClassOrNamespace *targetBinding = state.context().lookupParent(method)) { -// foreach (Symbol *s, targetBinding->symbols()) { -// if (Class *clazz = s->asClass()) { -// QList<CppQuickFixOperation::Ptr> results; -// const QLatin1String fn(clazz->fileName()); -// const QString decl = generateDeclaration(state, -// method, -// targetBinding); -// results.append( -// singleResult( -// new InsertDeclOperation(state, idx, fn, clazz, -// InsertionPointLocator::Public, -// decl))); -// results.append( -// singleResult( -// new InsertDeclOperation(state, idx, fn, clazz, -// InsertionPointLocator::Protected, -// decl))); -// results.append( -// singleResult( -// new InsertDeclOperation(state, idx, fn, clazz, -// InsertionPointLocator::Private, -// decl))); -// results.append( -// singleResult( -// new InsertDeclOperation(state, idx, fn, clazz, -// InsertionPointLocator::PublicSlot, -// decl))); -// results.append( -// singleResult( -// new InsertDeclOperation(state, idx, fn, clazz, -// InsertionPointLocator::ProtectedSlot, -// decl))); -// results.append( -// singleResult( -// new InsertDeclOperation(state, idx, fn, clazz, -// InsertionPointLocator::PrivateSlot, -// decl))); -// return results; -// } //! \todo support insertion into namespaces -// } -// } - return noResult(); } - -QString DefFromDecl::generateDefinition(const CppQuickFixState &, - Function *method, - ClassOrNamespace *targetBinding) -{ - Q_UNUSED(targetBinding); - - Overview oo; - oo.setShowFunctionSignatures(true); - oo.setShowReturnTypes(true); - oo.setShowArgumentNames(true); - - QString decl; - decl += oo(method->type(), method->unqualifiedName()); - decl += QLatin1String(";\n"); - - return decl; -} diff --git a/src/plugins/cppeditor/cppinsertdecldef.h b/src/plugins/cppeditor/cppinsertdecldef.h index c56c17331cb82c53cef2f17d34b67f77651572df..0b7f2ff51c5b6adf7634d3b6a1df009337fb11f2 100644 --- a/src/plugins/cppeditor/cppinsertdecldef.h +++ b/src/plugins/cppeditor/cppinsertdecldef.h @@ -56,11 +56,6 @@ class DefFromDecl: public CppQuickFixFactory { public: virtual QList<CppQuickFixOperation::Ptr> match(const CppQuickFixState &state); - -protected: - static QString generateDefinition(const CppQuickFixState &state, - CPlusPlus::Function *method, - CPlusPlus::ClassOrNamespace *targetBinding); }; } // namespace Internal diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp index eb5dce7a114acf697d0410b8a6eaece4679d09ae..a0ce66a1ce9f5ba5eb20a931891926f9fefa5366 100644 --- a/src/plugins/cppeditor/cppquickfix.cpp +++ b/src/plugins/cppeditor/cppquickfix.cpp @@ -43,7 +43,7 @@ #include <cplusplus/CppRewriter.h> #include <cppeditor/cppeditor.h> -#include <cppeditor/cpprefactoringchanges.h> +#include <cpptools/cpprefactoringchanges.h> #include <cpptools/cpptoolsconstants.h> #include <cpptools/cppmodelmanagerinterface.h> #include <extensionsystem/pluginmanager.h> @@ -52,6 +52,7 @@ using namespace CppEditor; using namespace CppEditor::Internal; +using namespace CppTools; using namespace TextEditor; using namespace CPlusPlus; using namespace Utils; diff --git a/src/plugins/cppeditor/cppquickfix.h b/src/plugins/cppeditor/cppquickfix.h index 45cf0e86ac68e897796ecb5a7f3ccdc4fd5fa40a..a261297f5be5a8782a62f124abd1f51c24c67a3b 100644 --- a/src/plugins/cppeditor/cppquickfix.h +++ b/src/plugins/cppeditor/cppquickfix.h @@ -30,11 +30,12 @@ #ifndef CPPQUICKFIX_H #define CPPQUICKFIX_H -#include "cpprefactoringchanges.h" +#include "cppeditor_global.h" #include "cppsemanticinfo.h" #include <ASTfwd.h> #include <cplusplus/CppDocument.h> +#include <cpptools/cpprefactoringchanges.h> #include <texteditor/icompletioncollector.h> #include <texteditor/quickfix.h> #include <utils/changeset.h> @@ -69,7 +70,7 @@ public: CppEditor::Internal::SemanticInfo semanticInfo() const; const CPlusPlus::LookupContext &context() const; - const CppRefactoringFile currentFile() const; + const CppTools::CppRefactoringFile currentFile() const; bool isCursorOn(unsigned tokenIndex) const { return currentFile().isCursorOn(tokenIndex); } @@ -94,7 +95,8 @@ public: virtual void perform(); protected: - virtual void performChanges(CppRefactoringFile *currentFile, CppRefactoringChanges *refactoring) = 0; + virtual void performChanges(CppTools::CppRefactoringFile *currentFile, + CppTools::CppRefactoringChanges *refactoring) = 0; QString fileName() const; diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index c2f648a6cecdac30c0794bb3724bd17881b8845a..509fb1caa0887c8c2f8e71facec465b3b5b703f1 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -58,6 +58,7 @@ using namespace CppEditor; using namespace CppEditor::Internal; +using namespace CppTools; using namespace TextEditor; using namespace CPlusPlus; using namespace Utils; diff --git a/src/plugins/cppeditor/cpptypehierarchy.cpp b/src/plugins/cppeditor/cpptypehierarchy.cpp index a837911ecf767c0c6c30d6b67b6916222850b4cd..e7ee9913646218c441e7b1817afad2817f648b67 100644 --- a/src/plugins/cppeditor/cpptypehierarchy.cpp +++ b/src/plugins/cppeditor/cpptypehierarchy.cpp @@ -35,97 +35,19 @@ #include <coreplugin/editormanager/ieditor.h> #include <coreplugin/editormanager/editormanager.h> -#include <coreplugin/coreconstants.h> #include <utils/navigationtreeview.h> +#include <utils/annotateditemdelegate.h> #include <QtCore/QLatin1Char> #include <QtCore/QLatin1String> #include <QtCore/QModelIndex> -#include <QtCore/QSettings> #include <QtGui/QVBoxLayout> #include <QtGui/QStandardItemModel> -#include <QtGui/QFontMetrics> -#include <QtGui/QApplication> -#include <QtGui/QPainter> #include <QtGui/QLabel> using namespace CppEditor; using namespace Internal; - -// CppTypeHierarchyItem -CppTypeHierarchyItem::CppTypeHierarchyItem(const CppClass &cppClass) : - QStandardItem(), m_cppClass(cppClass) -{} - -CppTypeHierarchyItem::~CppTypeHierarchyItem() -{} - -int CppTypeHierarchyItem::type() const -{ return UserType; } - -const CppClass &CppTypeHierarchyItem::cppClass() const -{ return m_cppClass; } - -// CppTypeHierarchyDelegate -CppTypeHierarchyDelegate::CppTypeHierarchyDelegate(QObject *parent) : QStyledItemDelegate(parent) -{} - -CppTypeHierarchyDelegate::~CppTypeHierarchyDelegate() -{} - -void CppTypeHierarchyDelegate::paint(QPainter *painter, - const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - if (const QStyleOptionViewItemV3 *v3 = - qstyleoption_cast<const QStyleOptionViewItemV3 *>(&option)) { - QApplication::style()->drawPrimitive(QStyle::PE_PanelItemViewItem, v3, painter, v3->widget); - - QStyleOptionViewItemV4 opt = option; - initStyleOption(&opt, index); - - const QStandardItemModel *model = static_cast<const QStandardItemModel *>(index.model()); - CppTypeHierarchyItem *item = - static_cast<CppTypeHierarchyItem *>(model->itemFromIndex(index)); - - painter->save(); - const QIcon &icon = item->cppClass().icon(); - const QSize &iconSize = icon.actualSize(opt.decorationSize); - QRect workingRect(opt.rect); - QRect decorationRect(workingRect.topLeft(), iconSize); - icon.paint(painter, decorationRect, opt.decorationAlignment); - workingRect.setX(workingRect.x() + iconSize.width() + 4); - - QRect boundingRect; - const QString &name = item->cppClass().name() + QLatin1Char(' '); - painter->drawText(workingRect, Qt::AlignLeft, name, &boundingRect); - if (item->cppClass().name() != item->cppClass().qualifiedName()) { - QFont font(painter->font()); - if (font.pointSize() > 2) - font.setPointSize(font.pointSize() - 2); - else if (font.pointSize() > 1) - font.setPointSize(font.pointSize() - 1); - font.setItalic(true); - painter->setFont(font); - - QFontMetrics metrics(font); - workingRect.setX(boundingRect.x() + boundingRect.width()); - workingRect.setY(boundingRect.y() + boundingRect.height() - metrics.height()); - painter->drawText(workingRect, Qt::AlignLeft, item->cppClass().qualifiedName()); - } - painter->restore(); - } else { - QStyledItemDelegate::paint(painter, option, index); - } -} - -QSize CppTypeHierarchyDelegate::sizeHint(const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - QSize size = QStyledItemDelegate::sizeHint(option, index); - size.rwidth() += 5; // Extend a bit because of the font processing. - return size; -} +using namespace Utils; // CppTypeHierarchyWidget CppTypeHierarchyWidget::CppTypeHierarchyWidget(Core::IEditor *editor) : @@ -144,7 +66,9 @@ CppTypeHierarchyWidget::CppTypeHierarchyWidget(Core::IEditor *editor) : m_model = new QStandardItemModel; m_treeView = new Utils::NavigationTreeView; - m_delegate = new CppTypeHierarchyDelegate; + m_delegate = new AnnotatedItemDelegate; + m_delegate->setDelimiter(QLatin1String(" ")); + m_delegate->setAnnotationRole(AnnotationRole); m_treeView->setModel(m_model); m_treeView->setEditTriggers(QAbstractItemView::NoEditTriggers); m_treeView->setItemDelegate(m_delegate); @@ -200,13 +124,16 @@ void CppTypeHierarchyWidget::perform() void CppTypeHierarchyWidget::buildModel(const CppClass &cppClass, QStandardItem *parent) { - CppTypeHierarchyItem *item = new CppTypeHierarchyItem(cppClass); + QStandardItem *item = new QStandardItem; parent->appendRow(item); - // The delegate retrieves data from the item directly. This is to help size hint. - const QString &display = cppClass.name() + cppClass.qualifiedName(); - m_model->setData(m_model->indexFromItem(item), display, Qt::DisplayRole); + m_model->setData(m_model->indexFromItem(item), cppClass.name(), Qt::DisplayRole); + if (cppClass.name() != cppClass.qualifiedName()) + m_model->setData(m_model->indexFromItem(item), cppClass.qualifiedName(), AnnotationRole); m_model->setData(m_model->indexFromItem(item), cppClass.icon(), Qt::DecorationRole); + QVariant link; + link.setValue(CPPEditor::Link(cppClass.link())); + m_model->setData(m_model->indexFromItem(item), link, LinkRole); foreach (const CppClass &cppBase, cppClass.bases()) buildModel(cppBase, item); @@ -216,10 +143,7 @@ void CppTypeHierarchyWidget::buildModel(const CppClass &cppClass, QStandardItem void CppTypeHierarchyWidget::onItemClicked(const QModelIndex &index) { - if (QStandardItem *item = m_model->itemFromIndex(index)) { - CppTypeHierarchyItem *cppItem = static_cast<CppTypeHierarchyItem *>(item); - m_cppEditor->openLink(cppItem->cppClass().link()); - } + m_cppEditor->openLink(index.data(LinkRole).value<CPPEditor::Link>()); } // CppTypeHierarchyStackedWidget diff --git a/src/plugins/cppeditor/cpptypehierarchy.h b/src/plugins/cppeditor/cpptypehierarchy.h index db6174715140fae61a00ed4d67a3ea1c81107865..663feae84d65362878119ef48b9322bf3ab9ebf9 100644 --- a/src/plugins/cppeditor/cpptypehierarchy.h +++ b/src/plugins/cppeditor/cpptypehierarchy.h @@ -37,13 +37,11 @@ #include <QtCore/QString> #include <QtGui/QWidget> #include <QtGui/QStackedWidget> -#include <QtGui/QStandardItem> -#include <QtGui/QStyledItemDelegate> QT_BEGIN_NAMESPACE class QStandardItemModel; +class QStandardItem; class QModelIndex; -class QPainter; QT_END_NAMESPACE namespace Core { @@ -52,6 +50,7 @@ class IEditor; namespace Utils { class NavigationTreeView; +class AnnotatedItemDelegate; } namespace CppEditor { @@ -59,32 +58,6 @@ namespace Internal { class CPPEditor; -class CppTypeHierarchyItem : public QStandardItem -{ -public: - CppTypeHierarchyItem(const CppClass &cppClass); - virtual ~CppTypeHierarchyItem(); - - virtual int type() const; - - const CppClass &cppClass() const; - -private: - CppClass m_cppClass; -}; - -class CppTypeHierarchyDelegate : public QStyledItemDelegate -{ -public: - CppTypeHierarchyDelegate(QObject *parent = 0); - virtual ~CppTypeHierarchyDelegate(); - - virtual void paint(QPainter *painter, - const QStyleOptionViewItem &option, - const QModelIndex &index) const; - virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; -}; - class CppTypeHierarchyWidget : public QWidget { Q_OBJECT @@ -101,12 +74,17 @@ private slots: void onItemClicked(const QModelIndex &index); private: + enum ItemRole { + AnnotationRole = Qt::UserRole + 1, + LinkRole + }; + void buildModel(const CppClass &cppClass, QStandardItem *item); CPPEditor *m_cppEditor; Utils::NavigationTreeView *m_treeView; QStandardItemModel *m_model; - CppTypeHierarchyDelegate *m_delegate; + Utils::AnnotatedItemDelegate *m_delegate; }; // @todo: Pretty much the same design as the OutlineWidgetStack. Maybe we can generalize the diff --git a/src/plugins/cpptools/CppTools.pluginspec b/src/plugins/cpptools/CppTools.pluginspec index c473d1af8a1bba723cdd2d556d68ce55f3bc8881..b62c9e5dff137a72d1fb76fe5a04977e1dd3855c 100644 --- a/src/plugins/cpptools/CppTools.pluginspec +++ b/src/plugins/cpptools/CppTools.pluginspec @@ -1,4 +1,4 @@ -<plugin name="CppTools" version="2.0.91" compatVersion="2.0.91"> +<plugin name="CppTools" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,9 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Tools for analyzing C/C++ code.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Locator" version="2.0.91"/> - <dependency name="Find" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="Locator" version="2.1.81"/> + <dependency name="Find" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp index 3a7462be9b6b355b54ec59ca0820b90a24059408..3c13d10f58983d6689d1b2ee6ee8ae660d951153 100644 --- a/src/plugins/cpptools/cppcodeformatter.cpp +++ b/src/plugins/cpptools/cppcodeformatter.cpp @@ -317,12 +317,14 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) switch (kind) { case T_SEMICOLON: turnInto(for_statement_condition); break; case T_LPAREN: enter(condition_paren_open); break; + case T_RPAREN: turnInto(for_statement_expression); continue; } break; case for_statement_condition: switch (kind) { case T_SEMICOLON: turnInto(for_statement_expression); break; case T_LPAREN: enter(condition_paren_open); break; + case T_RPAREN: turnInto(for_statement_expression); continue; } break; case for_statement_expression: diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index d1415bb281b8e7d47713016ce213f63714515e57..ec71eb4ee6b40de7ac32686e991c8494c029aeeb 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -361,6 +361,12 @@ QString CppPreprocessor::tryIncludeFile(QString &fileName, IncludeType type, uns return contents; } +static inline void appendDirSeparatorIfNeeded(QString &path) +{ + if (!path.endsWith(QLatin1Char('/'), Qt::CaseInsensitive)) + path += QLatin1Char('/'); +} + QString CppPreprocessor::tryIncludeFile_helper(QString &fileName, IncludeType type, unsigned *revision) { QFileInfo fileInfo(fileName); @@ -373,7 +379,7 @@ QString CppPreprocessor::tryIncludeFile_helper(QString &fileName, IncludeType ty if (type == IncludeLocal && m_currentDoc) { QFileInfo currentFileInfo(m_currentDoc->fileName()); QString path = currentFileInfo.absolutePath(); - path += QLatin1Char('/'); + appendDirSeparatorIfNeeded(path); path += fileName; path = QDir::cleanPath(path); QString contents; @@ -385,7 +391,7 @@ QString CppPreprocessor::tryIncludeFile_helper(QString &fileName, IncludeType ty foreach (const QString &includePath, m_includePaths) { QString path = includePath; - path += QLatin1Char('/'); + appendDirSeparatorIfNeeded(path); path += fileName; path = QDir::cleanPath(path); QString contents; @@ -398,7 +404,7 @@ QString CppPreprocessor::tryIncludeFile_helper(QString &fileName, IncludeType ty // look in the system include paths foreach (const QString &includePath, m_systemIncludePaths) { QString path = includePath; - path += QLatin1Char('/'); + appendDirSeparatorIfNeeded(path); path += fileName; path = QDir::cleanPath(path); QString contents; @@ -415,7 +421,7 @@ QString CppPreprocessor::tryIncludeFile_helper(QString &fileName, IncludeType ty foreach (const QString &frameworkPath, m_frameworkPaths) { QString path = frameworkPath; - path += QLatin1Char('/'); + appendDirSeparatorIfNeeded(path); path += frameworkName; path += QLatin1String(".framework/Headers/"); path += name; @@ -1225,6 +1231,9 @@ void CppModelManager::updateIncludesInPaths(QFutureInterface<void> &future, const QString path = paths.takeFirst(); + if (path == QLatin1String("/")) + continue; + // Skip non-existing paths if (!QFile::exists(path)) continue; diff --git a/src/plugins/cppeditor/cpprefactoringchanges.cpp b/src/plugins/cpptools/cpprefactoringchanges.cpp similarity index 99% rename from src/plugins/cppeditor/cpprefactoringchanges.cpp rename to src/plugins/cpptools/cpprefactoringchanges.cpp index cac384bf337045d8838887c7fdd2a7b3a30dc315..b320b578b5200f47f1d3ef2ddf0c273e43e48b95 100644 --- a/src/plugins/cppeditor/cpprefactoringchanges.cpp +++ b/src/plugins/cpptools/cpprefactoringchanges.cpp @@ -37,8 +37,8 @@ #include <QtGui/QTextBlock> -using namespace CppEditor; using namespace CPlusPlus; +using namespace CppTools; using namespace Utils; CppRefactoringChanges::CppRefactoringChanges(const Snapshot &snapshot) diff --git a/src/plugins/cppeditor/cpprefactoringchanges.h b/src/plugins/cpptools/cpprefactoringchanges.h similarity index 92% rename from src/plugins/cppeditor/cpprefactoringchanges.h rename to src/plugins/cpptools/cpprefactoringchanges.h index cb2f83c7cc59b6ee79af2915104bb4adf2df6543..2a0e20bf7878bdcf4f244fe7417596c874184e75 100644 --- a/src/plugins/cppeditor/cpprefactoringchanges.h +++ b/src/plugins/cpptools/cpprefactoringchanges.h @@ -35,15 +35,15 @@ #include <cplusplus/LookupContext.h> #include <cpptools/cppmodelmanagerinterface.h> -#include <cppeditor/cppeditor_global.h> +#include <cpptools/cpptools_global.h> #include <texteditor/refactoringchanges.h> -namespace CppEditor { +namespace CppTools { class CppRefactoringChanges; -class CPPEDITOR_EXPORT CppRefactoringFile: public TextEditor::RefactoringFile +class CPPTOOLS_EXPORT CppRefactoringFile: public TextEditor::RefactoringFile { public: CppRefactoringFile(); @@ -79,7 +79,7 @@ private: mutable CPlusPlus::Document::Ptr m_cppDocument; }; -class CPPEDITOR_EXPORT CppRefactoringChanges: public TextEditor::RefactoringChanges +class CPPTOOLS_EXPORT CppRefactoringChanges: public TextEditor::RefactoringChanges { public: CppRefactoringChanges(const CPlusPlus::Snapshot &snapshot); @@ -99,6 +99,6 @@ private: CppTools::CppModelManagerInterface::WorkingCopy m_workingCopy; }; -} // namespace CppEditor +} // namespace CppTools #endif // CPPREFACTORINGCHANGES_H diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro index 346d10f86c8c8f3de56f9b1085d36f64a166a6b1..be6a5cfde8a1c50d644e5901149e59438fd68509 100644 --- a/src/plugins/cpptools/cpptools.pro +++ b/src/plugins/cpptools/cpptools.pro @@ -25,7 +25,10 @@ HEADERS += completionsettingspage.h \ cppfilesettingspage.h \ cppfindreferences.h \ cppcodeformatter.h \ - symbolsfindfilter.h + symbolsfindfilter.h \ + uicodecompletionsupport.h \ + insertionpointlocator.h \ + cpprefactoringchanges.h SOURCES += completionsettingspage.cpp \ cppclassesfilter.cpp \ @@ -42,7 +45,10 @@ SOURCES += completionsettingspage.cpp \ abstracteditorsupport.cpp \ cppfindreferences.cpp \ cppcodeformatter.cpp \ - symbolsfindfilter.cpp + symbolsfindfilter.cpp \ + uicodecompletionsupport.cpp \ + insertionpointlocator.cpp \ + cpprefactoringchanges.cpp FORMS += completionsettingspage.ui \ cppfilesettingspage.ui diff --git a/src/libs/cplusplus/InsertionPointLocator.cpp b/src/plugins/cpptools/insertionpointlocator.cpp similarity index 85% rename from src/libs/cplusplus/InsertionPointLocator.cpp rename to src/plugins/cpptools/insertionpointlocator.cpp index c031e9322d90228f008e90a83805310a15a3c052..f1594b9860453b2761ad2b2fc6a264a29148cf20 100644 --- a/src/libs/cplusplus/InsertionPointLocator.cpp +++ b/src/plugins/cpptools/insertionpointlocator.cpp @@ -27,13 +27,16 @@ ** **************************************************************************/ -#include "InsertionPointLocator.h" +#include "cpptoolsplugin.h" +#include "cpprefactoringchanges.h" +#include "insertionpointlocator.h" #include <AST.h> #include <ASTVisitor.h> #include <TranslationUnit.h> using namespace CPlusPlus; +using namespace CppTools; namespace { @@ -150,7 +153,8 @@ protected: if (needsSuffix) suffix = QLatin1Char('\n'); - _result = InsertionLocation(prefix, suffix, line, column); + _result = InsertionLocation(_doc->fileName(), prefix, suffix, + line, column); return false; } @@ -264,16 +268,19 @@ InsertionLocation::InsertionLocation() , m_column(0) {} -InsertionLocation::InsertionLocation(const QString &prefix, const QString &suffix, +InsertionLocation::InsertionLocation(const QString &fileName, + const QString &prefix, + const QString &suffix, unsigned line, unsigned column) - : m_prefix(prefix) + : m_fileName(fileName) + , m_prefix(prefix) , m_suffix(suffix) , m_line(line) , m_column(column) {} -InsertionPointLocator::InsertionPointLocator(const Snapshot &snapshot) - : m_snapshot(snapshot) +InsertionPointLocator::InsertionPointLocator(CppRefactoringChanges *refactoringChanges) + : m_refactoringChanges(refactoringChanges) { } @@ -282,7 +289,7 @@ InsertionLocation InsertionPointLocator::methodDeclarationInClass( const Class *clazz, AccessSpec xsSpec) const { - const Document::Ptr doc = m_snapshot.document(fileName); + const Document::Ptr doc = m_refactoringChanges->file(fileName).cppDocument(); if (doc) { FindInClass find(doc, clazz, xsSpec); return find(); @@ -293,11 +300,30 @@ InsertionLocation InsertionPointLocator::methodDeclarationInClass( /// Currently, we return the end of fileName.cpp QList<InsertionLocation> InsertionPointLocator::methodDefinition( - const QString &/*fileName*/) const + Declaration *declaration) const { QList<InsertionLocation> result; + if (!declaration) + return result; + Internal::CppToolsPlugin *cpptools = Internal::CppToolsPlugin::instance(); + const QString declFileName = QLatin1String(declaration->fileName()); + QString target = cpptools->correspondingHeaderOrSource(declFileName); + Document::Ptr doc = m_refactoringChanges->file(target).cppDocument(); + if (doc.isNull()) + return result; + + TranslationUnit *xUnit = doc->translationUnit(); + unsigned tokenCount = xUnit->tokenCount(); + if (tokenCount < 2) // no tokens available + return result; + + unsigned line = 0, column = 0; + xUnit->getTokenEndPosition(xUnit->tokenCount() - 2, &line, &column); + + const QLatin1String prefix("\n\n"); + result.append(InsertionLocation(target, prefix, QString(), line, column)); return result; } diff --git a/src/libs/cplusplus/InsertionPointLocator.h b/src/plugins/cpptools/insertionpointlocator.h similarity index 75% rename from src/libs/cplusplus/InsertionPointLocator.h rename to src/plugins/cpptools/insertionpointlocator.h index 5436d36eb601956d180a2e11df684fd0250a4b30..3124a528f9271632ff41f328084edde58b9c7687 100644 --- a/src/libs/cplusplus/InsertionPointLocator.h +++ b/src/plugins/cpptools/insertionpointlocator.h @@ -30,19 +30,27 @@ #ifndef INSERTIONPOINTLOCATOR_H #define INSERTIONPOINTLOCATOR_H +#include "cpptools_global.h" + #include <ASTfwd.h> #include <CPlusPlusForwardDeclarations.h> #include <Symbols.h> -#include "CppDocument.h" +#include <cplusplus/CppDocument.h> + +namespace CppTools { -namespace CPlusPlus { +class CppRefactoringChanges; -class CPLUSPLUS_EXPORT InsertionLocation +class CPPTOOLS_EXPORT InsertionLocation { public: InsertionLocation(); - InsertionLocation(const QString &prefix, const QString &suffix, unsigned line, unsigned column); + InsertionLocation(const QString &fileName, const QString &prefix, + const QString &suffix, unsigned line, unsigned column); + + QString fileName() const + { return m_fileName; } /// \returns The prefix to insert before any other text. QString prefix() const @@ -61,16 +69,17 @@ public: { return m_column; } bool isValid() const - { return m_line > 0 && m_column > 0; } + { return !m_fileName.isEmpty() && m_line > 0 && m_column > 0; } private: + QString m_fileName; QString m_prefix; QString m_suffix; unsigned m_line; unsigned m_column; }; -class CPLUSPLUS_EXPORT InsertionPointLocator +class CPPTOOLS_EXPORT InsertionPointLocator { public: enum AccessSpec { @@ -89,18 +98,18 @@ public: }; public: - InsertionPointLocator(const Snapshot &snapshot); + InsertionPointLocator(CppRefactoringChanges *refactoringChanges); InsertionLocation methodDeclarationInClass(const QString &fileName, - const Class *clazz, + const CPlusPlus::Class *clazz, AccessSpec xsSpec) const; - QList<InsertionLocation> methodDefinition(const QString &fileName) const; + QList<InsertionLocation> methodDefinition(CPlusPlus::Declaration *declaration) const; private: - Snapshot m_snapshot; + CppRefactoringChanges *m_refactoringChanges; }; -} // namespace CPlusPlus +} // namespace CppTools #endif // INSERTIONPOINTLOCATOR_H diff --git a/src/plugins/cpptools/uicodecompletionsupport.cpp b/src/plugins/cpptools/uicodecompletionsupport.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dc226b09a3882d383c96954d1aee61b56a0d32fc --- /dev/null +++ b/src/plugins/cpptools/uicodecompletionsupport.cpp @@ -0,0 +1,197 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "uicodecompletionsupport.h" +#include <QtCore/QProcess> + +enum { debug = 0 }; + +using namespace CppTools; + +UiCodeModelSupport::UiCodeModelSupport(CppTools::CppModelManagerInterface *modelmanager, + const QString &source, + const QString &uiHeaderFile) + : CppTools::AbstractEditorSupport(modelmanager), + m_sourceName(source), + m_fileName(uiHeaderFile), + m_updateIncludingFiles(false), + m_initialized(false) +{ + if (debug) + qDebug()<<"ctor UiCodeModelSupport for"<<m_sourceName<<uiHeaderFile; +} + +UiCodeModelSupport::~UiCodeModelSupport() +{ + if (debug) + qDebug()<<"dtor ~UiCodeModelSupport for"<<m_sourceName; +} + +void UiCodeModelSupport::init() const +{ + m_initialized = true; + QDateTime sourceTime = QFileInfo(m_sourceName).lastModified(); + QFileInfo uiHeaderFileInfo(m_fileName); + QDateTime uiHeaderTime = uiHeaderFileInfo.exists() ? uiHeaderFileInfo.lastModified() : QDateTime(); + if (uiHeaderTime.isValid() && (uiHeaderTime > sourceTime)) { + QFile file(m_fileName); + if (file.open(QFile::ReadOnly)) { + if (debug) + qDebug()<<"ui*h file is more recent then source file, using information from ui*h file"<<m_fileName; + QTextStream stream(&file); + m_contents = stream.readAll().toUtf8(); + m_cacheTime = uiHeaderTime; + return; + } + } + + if (debug) + qDebug()<<"ui*h file not found, or not recent enough, trying to create it on the fly"; + QFile file(m_sourceName); + if (file.open(QFile::ReadOnly)) { + QTextStream stream(&file); + const QString contents = stream.readAll(); + if (runUic(contents)) { + if (debug) + qDebug()<<"created on the fly"; + return; + } else { + // uic run was unsuccesfull + if (debug) + qDebug()<<"uic run wasn't succesfull"; + m_cacheTime = QDateTime (); + m_contents = QByteArray(); + // and if the header file wasn't there, next time we need to update + // all of the files that include this header + if (!uiHeaderFileInfo.exists()) + m_updateIncludingFiles = true; + return; + } + } else { + if (debug) + qDebug()<<"Could open "<<m_sourceName<<"needed for the cpp model"; + m_contents = QByteArray(); + } +} + +QByteArray UiCodeModelSupport::contents() const +{ + if (!m_initialized) + init(); + + return m_contents; +} + +QString UiCodeModelSupport::fileName() const +{ + return m_fileName; +} + +void UiCodeModelSupport::setFileName(const QString &name) +{ + if (m_fileName == name && m_cacheTime.isValid()) + return; + + if (debug) + qDebug() << "UiCodeModelSupport::setFileName"<<name; + + m_fileName = name; + m_contents.clear(); + m_cacheTime = QDateTime(); + init(); +} + +bool UiCodeModelSupport::runUic(const QString &ui) const +{ + QProcess process; + const QString uic = uicCommand(); + process.setEnvironment(environment()); + + if (debug) + qDebug() << "UiCodeModelSupport::runUic " << uic << " on " << ui.size() << " bytes"; + process.start(uic, QStringList(), QIODevice::ReadWrite); + if (!process.waitForStarted()) + return false; + process.write(ui.toUtf8()); + process.closeWriteChannel(); + if (process.waitForFinished() && process.exitStatus() == QProcess::NormalExit && process.exitCode() == 0) { + m_contents = process.readAllStandardOutput(); + m_cacheTime = QDateTime::currentDateTime(); + if (debug) + qDebug() << "ok" << m_contents.size() << "bytes."; + return true; + } else { + if (debug) + qDebug() << "failed" << process.readAllStandardError(); + process.kill(); + } + return false; +} + +void UiCodeModelSupport::updateFromEditor(const QString &formEditorContents) +{ + if (runUic(formEditorContents)) { + updateDocument(); + } +} + +void UiCodeModelSupport::updateFromBuild() +{ + if (debug) + qDebug()<<"UiCodeModelSupport::updateFromBuild() for file"<<m_sourceName; + // This is mostly a fall back for the cases when uic couldn't be run + // it pays special attention to the case where a ui_*h was newly created + QDateTime sourceTime = QFileInfo(m_sourceName).lastModified(); + if (m_cacheTime.isValid() && m_cacheTime >= sourceTime) { + if (debug) + qDebug()<<"Cache is still more recent then source"; + return; + } else { + QFileInfo fi(m_fileName); + QDateTime uiHeaderTime = fi.exists() ? fi.lastModified() : QDateTime(); + if (uiHeaderTime.isValid() && (uiHeaderTime > sourceTime)) { + if (m_cacheTime >= uiHeaderTime) + return; + if (debug) + qDebug()<<"found ui*h updating from it"; + + QFile file(m_fileName); + if (file.open(QFile::ReadOnly)) { + QTextStream stream(&file); + m_contents = stream.readAll().toUtf8(); + m_cacheTime = uiHeaderTime; + updateDocument(); + return; + } + } + if (debug) + qDebug()<<"ui*h not found or not more recent then source not changing anything"; + } +} + diff --git a/src/plugins/cpptools/uicodecompletionsupport.h b/src/plugins/cpptools/uicodecompletionsupport.h new file mode 100644 index 0000000000000000000000000000000000000000..b03294960d6de179ad736c8861931923cda982e7 --- /dev/null +++ b/src/plugins/cpptools/uicodecompletionsupport.h @@ -0,0 +1,70 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + + +#ifndef UICODECOMPLETIONSUPPORT_H +#define UICODECOMPLETIONSUPPORT_H + +#include "cppmodelmanagerinterface.h" +#include "cpptools_global.h" + +#include <QtCore/QDateTime> + +namespace CppTools { + +class CPPTOOLS_EXPORT UiCodeModelSupport : public CppTools::AbstractEditorSupport +{ +public: + UiCodeModelSupport(CppTools::CppModelManagerInterface *modelmanager, + const QString &sourceFile, + const QString &uiHeaderFile); + ~UiCodeModelSupport(); + void setFileName(const QString &name); + void setSourceName(const QString &name); + virtual QByteArray contents() const; + virtual QString fileName() const; + void updateFromEditor(const QString &formEditorContents); + void updateFromBuild(); +protected: + virtual QString uicCommand() const = 0; + virtual QStringList environment() const = 0; +private: + void init() const; + bool runUic(const QString &ui) const; + QString m_sourceName; + QString m_fileName; + mutable bool m_updateIncludingFiles; + mutable bool m_initialized; + mutable QByteArray m_contents; + mutable QDateTime m_cacheTime; +}; + +} // CppTools + +#endif // UICODECOMPLETIONSUPPORT_H diff --git a/src/plugins/cvs/CVS.pluginspec b/src/plugins/cvs/CVS.pluginspec index 13da091139b3e3d8e293afa0f0b21b04690e5a59..47e49e4686f8cd87f490a206031f7fda09e881c4 100644 --- a/src/plugins/cvs/CVS.pluginspec +++ b/src/plugins/cvs/CVS.pluginspec @@ -1,4 +1,4 @@ -<plugin name="CVS" version="2.0.91" compatVersion="2.0.91"> +<plugin name="CVS" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,9 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>CVS integration.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Core" version="2.0.91"/> - <dependency name="VCSBase" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="VCSBase" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/cvs/cvscontrol.cpp b/src/plugins/cvs/cvscontrol.cpp index 41268e79f07cddc638050f83b9b73f0ff85f2ad5..3ba45ffb297ba946de0c1ad6612763f69f761d43 100644 --- a/src/plugins/cvs/cvscontrol.cpp +++ b/src/plugins/cvs/cvscontrol.cpp @@ -58,6 +58,8 @@ bool CVSControl::supportsOperation(Operation operation) const case MoveOperation: case CreateRepositoryOperation: case SnapshotOperations: + case CheckoutOperation: + case GetRepositoryRootOperation: rc = false; break; } @@ -94,6 +96,16 @@ bool CVSControl::vcsCreateRepository(const QString &) return false; } +QString CVSControl::vcsGetRepositoryURL(const QString &) +{ + return QString(); +} + +bool CVSControl::vcsCheckout(const QString &, const QByteArray &) +{ + return false; +} + QString CVSControl::vcsCreateSnapshot(const QString &) { return QString(); diff --git a/src/plugins/cvs/cvscontrol.h b/src/plugins/cvs/cvscontrol.h index 4fd06c2de72d1be2df14d4c1474048d3a0aece31..b5b882d44255023b67047803b6a84120a057784b 100644 --- a/src/plugins/cvs/cvscontrol.h +++ b/src/plugins/cvs/cvscontrol.h @@ -53,6 +53,8 @@ public: virtual bool vcsDelete(const QString &filename); virtual bool vcsMove(const QString &from, const QString &to); virtual bool vcsCreateRepository(const QString &directory); + virtual bool vcsCheckout(const QString &directory, const QByteArray &url); + virtual QString vcsGetRepositoryURL(const QString &directory); virtual QString vcsCreateSnapshot(const QString &topLevel); virtual QStringList vcsSnapshots(const QString &topLevel); virtual bool vcsRestoreSnapshot(const QString &topLevel, const QString &name); diff --git a/src/plugins/debugger/Debugger.pluginspec b/src/plugins/debugger/Debugger.pluginspec index 7fc9b7a149dd33c81b20507d31e79c08f5780e0d..d2050b61278473425274eb3341346b874a1357da 100644 --- a/src/plugins/debugger/Debugger.pluginspec +++ b/src/plugins/debugger/Debugger.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Debugger" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Debugger" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,10 +14,10 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Debugger integration.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="CppEditor" version="2.0.91"/><!-- Debugger plugin adds items to the editor's context menu --> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Core" version="2.0.91"/> - <dependency name="Find" version="2.0.91"/> + <dependency name="CppEditor" version="2.1.81"/><!-- Debugger plugin adds items to the editor's context menu --> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="Find" version="2.1.81"/> </dependencyList> <argumentList> <argument name="-disable-cdb">Disable Cdb debugger engine</argument> diff --git a/src/plugins/debugger/breakcondition.ui b/src/plugins/debugger/breakcondition.ui index 73aaa8ac39198547e132f8ef691adc4099af91d4..cc9e5d1b319bde83071383dbf6e546f603a27480 100644 --- a/src/plugins/debugger/breakcondition.ui +++ b/src/plugins/debugger/breakcondition.ui @@ -2,75 +2,37 @@ <ui version="4.0"> <class>BreakCondition</class> <widget class="QDialog" name="BreakCondition"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>435</width> - <height>142</height> - </rect> - </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> - <widget class="QLabel" name="labelFileName"> - <property name="text"> - <string>File name:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="lineEditFileName"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="labelLineNumber"> - <property name="text"> - <string>Line number:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="lineEditLineNumber"/> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="labelFunction"> - <property name="text"> - <string>Function:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="lineEditFunction"/> - </item> - <item row="3" column="0"> <widget class="QLabel" name="labelCondition"> <property name="text"> <string>Condition:</string> </property> </widget> </item> - <item row="3" column="1"> + <item row="0" column="1"> <widget class="QLineEdit" name="lineEditCondition"/> </item> - <item row="4" column="0"> + <item row="1" column="0"> <widget class="QLabel" name="labelIgnoreCount"> <property name="text"> <string>Ignore count:</string> </property> </widget> </item> - <item row="4" column="1"> + <item row="1" column="1"> <widget class="QLineEdit" name="lineEditIgnoreCount"/> </item> - <item row="5" column="0"> + <item row="2" column="0"> <widget class="QLabel" name="labelThreadSpec"> <property name="text"> <string>Thread specification:</string> </property> </widget> </item> - <item row="5" column="1"> + <item row="2" column="1"> <widget class="QLineEdit" name="lineEditThreadSpec"/> </item> </layout> diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp index e0428f8cf5642d1986b7ffe53b4c602bff530d01..32df0b3eb5438549b7956a71e19c8d930dae96a4 100644 --- a/src/plugins/debugger/breakhandler.cpp +++ b/src/plugins/debugger/breakhandler.cpp @@ -65,6 +65,8 @@ BreakHandler::BreakHandler(Debugger::DebuggerEngine *engine) //m_emptyIcon(_(":/debugger/images/debugger_empty_14.png")), m_watchpointIcon(_(":/debugger/images/watchpoint.png")), m_engine(engine), + m_bp(0), + m_masterList(false), m_lastFound(0), m_lastFoundQueried(false) { @@ -73,6 +75,11 @@ BreakHandler::BreakHandler(Debugger::DebuggerEngine *engine) BreakHandler::~BreakHandler() { + if (m_bp && m_masterList) { + qDeleteAll(*m_bp); + m_bp->clear(); + delete m_bp; + } clear(); } @@ -97,20 +104,20 @@ bool BreakHandler::hasPendingBreakpoints() const BreakpointData *BreakHandler::at(int index) const { QTC_ASSERT(index < size(), return 0); - return m_bp.at(index); + QTC_ASSERT(m_bp,/**/); + return m_bp->at(index); } void BreakHandler::removeAt(int index) { + QTC_ASSERT(m_bp,/**/); BreakpointData *data = at(index); - m_bp.removeAt(index); + m_bp->removeAt(index); delete data; } void BreakHandler::clear() { - qDeleteAll(m_bp); - m_bp.clear(); m_enabled.clear(); m_disabled.clear(); m_removed.clear(); @@ -119,9 +126,10 @@ void BreakHandler::clear() BreakpointData *BreakHandler::findSimilarBreakpoint(const BreakpointData *needle) const { + QTC_ASSERT(m_bp, /**/); // Search a breakpoint we might refer to. for (int index = 0; index != size(); ++index) { - BreakpointData *data = m_bp[index]; + BreakpointData *data = (*m_bp)[index]; if (data->isSimilarTo(needle)) return data; } @@ -283,10 +291,10 @@ QVariant BreakHandler::data(const QModelIndex &mi, int role) const if (mi.row() >= size()) return QVariant(); - const BreakpointData *data = at(mi.row()); + BreakpointData *data = at(mi.row()); if (role == BreakpointRole) - return qulonglong(data); + return qVariantFromValue(data); if (role == BreakpointUseFullPathRole) return data->useFullPath; @@ -516,8 +524,9 @@ void BreakHandler::reinsertBreakpoint(BreakpointData *data) void BreakHandler::append(BreakpointData *data) { + QTC_ASSERT(m_bp,/**/); data->m_handler = this; - m_bp.append(data); + m_bp->append(data); m_inserted.append(data); } @@ -554,8 +563,9 @@ Breakpoints BreakHandler::takeDisabledBreakpoints() void BreakHandler::removeBreakpointHelper(int index) { - BreakpointData *data = m_bp.at(index); - m_bp.removeAt(index); + QTC_ASSERT(m_bp,/**/); + BreakpointData *data = m_bp->at(index); + m_bp->removeAt(index); data->removeMarker(); m_removed.append(data); } @@ -570,7 +580,8 @@ void BreakHandler::removeBreakpoint(int index) void BreakHandler::removeBreakpoint(BreakpointData *data) { - removeBreakpointHelper(m_bp.indexOf(data)); + QTC_ASSERT(m_bp,/**/); + removeBreakpointHelper(m_bp->indexOf(data)); emit layoutChanged(); } @@ -614,7 +625,8 @@ void BreakHandler::removeAllBreakpoints() BreakpointData *BreakHandler::findBreakpoint(quint64 address) const { - foreach (BreakpointData *data, m_bp) + QTC_ASSERT(m_bp,/**/); + foreach (BreakpointData *data, *m_bp) if (data->address == address) return data; return 0; @@ -623,7 +635,8 @@ BreakpointData *BreakHandler::findBreakpoint(quint64 address) const BreakpointData *BreakHandler::findBreakpoint(const QString &fileName, int lineNumber, bool useMarkerPosition) { - foreach (BreakpointData *data, m_bp) + QTC_ASSERT(m_bp,/**/); + foreach (BreakpointData *data, *m_bp) if (data->isLocatedAt(fileName, lineNumber, useMarkerPosition)) return data; return 0; @@ -633,15 +646,14 @@ void BreakHandler::toggleBreakpoint(const QString &fileName, int lineNumber, quint64 address /* = 0 */) { BreakpointData *data = 0; - do { - if (address) { - data = findBreakpoint(address); - break; - } + + if (address) { + data = findBreakpoint(address); + } else { data = findBreakpoint(fileName, lineNumber, true); if (!data) data = findBreakpoint(fileName, lineNumber, false); - } while (false); + } if (data) { removeBreakpoint(data); @@ -667,9 +679,19 @@ void BreakHandler::saveSessionData() saveBreakpoints(); } +void BreakHandler::initMasterList() +{ + if (m_bp) { + delete m_bp; + } + m_masterList = true; + m_bp = new Breakpoints; +} + void BreakHandler::loadSessionData() { QTC_ASSERT(m_engine->isSessionEngine(), return); + initMasterList(); loadBreakpoints(); updateMarkers(); } @@ -697,23 +719,33 @@ bool BreakHandler::isActive() const return m_engine->isActive(); } +bool BreakHandler::isMasterList() const +{ + return m_masterList; +} + void BreakHandler::initializeFromTemplate(BreakHandler *other) { - QTC_ASSERT(m_bp.isEmpty(), /**/); - foreach (BreakpointData *data, other->m_bp) { - append(data->clone()); - data->removeMarker(); + QTC_ASSERT(other->isMasterList(), /**/); + QTC_ASSERT(!isMasterList(), /**/); + QTC_ASSERT(other->m_bp,/**/); + + m_bp = other->m_bp; + foreach(BreakpointData *data, *m_bp) { + if (m_engine->acceptsBreakpoint(data)) + data->m_handler = this; } - updateMarkers(); + } void BreakHandler::storeToTemplate(BreakHandler *other) { - other->removeAllBreakpoints(); - foreach (const BreakpointData *data, m_bp) - other->append(data->clone()); - removeAllBreakpoints(); - other->updateMarkers(); + QTC_ASSERT(m_bp,/**/); + foreach (BreakpointData *data, *m_bp) { + data->m_handler = other; + } + m_bp = 0; + other->saveSessionData(); } diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h index 9a9aa30289c79e498f5d249e9b5c8fe21756988e..26e4e0eea6e478fb17bcfa7ba4c6fd77dca10444 100644 --- a/src/plugins/debugger/breakhandler.h +++ b/src/plugins/debugger/breakhandler.h @@ -64,11 +64,11 @@ public: QAbstractItemModel *model() { return this; } BreakpointData *at(int index) const; - int size() const { return m_bp.size(); } + int size() const { return m_bp?m_bp->size():0; } bool hasPendingBreakpoints() const; void removeAt(int index); // This also deletes the marker. void clear(); // This also deletes all the marker. - int indexOf(BreakpointData *data) { return m_bp.indexOf(data); } + int indexOf(BreakpointData *data) { return m_bp?m_bp->indexOf(data):-1; } // Find a breakpoint matching approximately the data in needle. BreakpointData *findSimilarBreakpoint(const BreakpointData *needle) const; BreakpointData *findBreakpointByNumber(int bpNumber) const; @@ -76,6 +76,7 @@ public: bool watchPointAt(quint64 address) const; void updateMarkers(); bool isActive() const; + bool isMasterList() const; Breakpoints insertedBreakpoints() const; void takeInsertedBreakPoint(BreakpointData *); @@ -121,6 +122,8 @@ private: void removeBreakpointHelper(int index); void append(BreakpointData *data); + void initMasterList(); + const QIcon m_breakpointIcon; const QIcon m_disabledBreakpointIcon; const QIcon m_pendingBreakPointIcon; @@ -128,12 +131,14 @@ private: const QIcon m_watchpointIcon; Debugger::DebuggerEngine *m_engine; // Not owned. - Breakpoints m_bp; + Breakpoints *m_bp; Breakpoints m_inserted; // Lately inserted breakpoints. Breakpoints m_removed; // Lately removed breakpoints. Breakpoints m_enabled; // Lately enabled breakpoints. Breakpoints m_disabled; // Lately disabled breakpoints. + bool m_masterList; + // Hack for BreakWindow::findSimilarBreakpoint mutable BreakpointData *m_lastFound; mutable bool m_lastFoundQueried; diff --git a/src/plugins/debugger/breakpoint.cpp b/src/plugins/debugger/breakpoint.cpp index f7dc8a848e22987198a80cb9acb15cd4affe0a2d..0c9fc2341bd473ef558ff25bb1f73a4a158391b6 100644 --- a/src/plugins/debugger/breakpoint.cpp +++ b/src/plugins/debugger/breakpoint.cpp @@ -159,6 +159,9 @@ private: // ////////////////////////////////////////////////////////////////// +const char *BreakpointData::throwFunction = "throw"; +const char *BreakpointData::catchFunction = "catch"; + BreakpointData::BreakpointData() : m_handler(0), enabled(true), pending(true), type(BreakpointType), diff --git a/src/plugins/debugger/breakpoint.h b/src/plugins/debugger/breakpoint.h index 7e22ffdb918b281027b1d0b6b1e11388894692e2..e96a58bc83fd614c86a5971d87fa40fe57d6eb2f 100644 --- a/src/plugins/debugger/breakpoint.h +++ b/src/plugins/debugger/breakpoint.h @@ -66,6 +66,10 @@ public: // This copies only the static data. BreakpointData *clone() const; + // Generic name for function to break on 'throw' + static const char *throwFunction; + static const char *catchFunction; + private: // Intentionally unimplemented. // Making it copyable is tricky because of the markers. @@ -90,7 +94,9 @@ public: int lineNumber; // Line in source file. quint64 address; // Address for watchpoints. QByteArray threadSpec; // Thread specification. - QString funcName; // Name of containing function. + // Name of containing function, special values: + // BreakpointData::throwFunction, BreakpointData::catchFunction + QString funcName; bool useFullPath; // Should we use the full path when setting the bp? // This is what gdb produced in response. diff --git a/src/plugins/debugger/breakpoint.ui b/src/plugins/debugger/breakpoint.ui index e8932ce84cf1647c7aa1be1cb3f967352525f89b..5842e70aca6ebdbd0d2aee29bf557f40a157e8cc 100644 --- a/src/plugins/debugger/breakpoint.ui +++ b/src/plugins/debugger/breakpoint.ui @@ -6,12 +6,12 @@ <rect> <x>0</x> <y>0</y> - <width>382</width> + <width>558</width> <height>302</height> </rect> </property> <property name="windowTitle"> - <string>Dialog</string> + <string>Edit Breakpoint Properties</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> @@ -34,7 +34,7 @@ </widget> </item> <item row="1" column="1"> - <widget class="QLineEdit" name="lineEditFileName"/> + <widget class="Utils::PathChooser" name="pathChooserFileName"/> </item> <item row="2" column="0"> <widget class="QLabel" name="labelLineNumber"> diff --git a/src/plugins/debugger/breakwindow.cpp b/src/plugins/debugger/breakwindow.cpp index 0ff0a255a0d0bdf8299bd286edf5167a0471e908..e564a745121406663dd81ea386ef6852ebb4b1c0 100644 --- a/src/plugins/debugger/breakwindow.cpp +++ b/src/plugins/debugger/breakwindow.cpp @@ -33,8 +33,8 @@ #include "debuggerconstants.h" #include "ui_breakpoint.h" #include "ui_breakcondition.h" -#include "ui_breakbyfunction.h" +#include <utils/pathchooser.h> #include <utils/qtcassert.h> #include <utils/savedaction.h> @@ -64,53 +64,76 @@ class BreakpointDialog : public QDialog, public Ui::BreakpointDialog { Q_OBJECT public: - explicit BreakpointDialog(QWidget *parent, BreakpointData *data) - : QDialog(parent) - { - setupUi(this); - comboBoxType->insertItem(0, tr("File and Line Number")); - comboBoxType->insertItem(1, tr("Function Name")); - comboBoxType->insertItem(2, tr("Function \"main()\"")); - comboBoxType->insertItem(3, tr("Address")); - lineEditFileName->setText(data->fileName); - lineEditLineNumber->setText(QByteArray::number(data->lineNumber)); - lineEditFunction->setText(data->funcName); - lineEditCondition->setText(data->condition); - lineEditIgnoreCount->setText(QByteArray::number(data->ignoreCount)); - checkBoxUseFullPath->setChecked(data->useFullPath); - if (data->address) - lineEditAddress->setText("0x" + QByteArray::number(data->address, 16)); - int initialType = 0; - if (!data->funcName.isEmpty()) - initialType = lineEditFunction->text() == "main" ? 2 : 1; - if (data->address) - initialType = 3; - typeChanged(initialType); - connect(comboBoxType, SIGNAL(activated(int)), SLOT(typeChanged(int))); - } + explicit BreakpointDialog(QWidget *parent); + bool showDialog(BreakpointData *data); public slots: - void typeChanged(int index) - { - const bool isLineVisible = index == 0; - const bool isFunctionVisible = index == 1; - const bool isAddressVisible = index == 3; - labelFileName->setEnabled(isLineVisible); - lineEditFileName->setEnabled(isLineVisible); - labelLineNumber->setEnabled(isLineVisible); - lineEditLineNumber->setEnabled(isLineVisible); - labelUseFullPath->setEnabled(isLineVisible); - checkBoxUseFullPath->setEnabled(isLineVisible); - labelFunction->setEnabled(isFunctionVisible); - lineEditFunction->setEnabled(isFunctionVisible); - labelAddress->setEnabled(isAddressVisible); - lineEditAddress->setEnabled(isAddressVisible); - if (index == 2) - lineEditFunction->setText("main"); - } - + void typeChanged(int index); }; +BreakpointDialog::BreakpointDialog(QWidget *parent) : QDialog(parent) +{ + setupUi(this); + comboBoxType->insertItem(0, tr("File and Line Number")); + comboBoxType->insertItem(1, tr("Function Name")); + comboBoxType->insertItem(2, tr("Function \"main()\"")); + comboBoxType->insertItem(3, tr("Address")); + pathChooserFileName->setExpectedKind(Utils::PathChooser::File); + connect(comboBoxType, SIGNAL(activated(int)), SLOT(typeChanged(int))); + lineEditIgnoreCount->setValidator(new QIntValidator(0, 2147483647, lineEditIgnoreCount)); +} + +bool BreakpointDialog::showDialog(BreakpointData *data) +{ + pathChooserFileName->setPath(data->fileName); + lineEditLineNumber->setText(QString::number(data->lineNumber)); + lineEditFunction->setText(data->funcName); + lineEditCondition->setText(QString::fromUtf8(data->condition)); + lineEditIgnoreCount->setText(QString::number(data->ignoreCount)); + checkBoxUseFullPath->setChecked(data->useFullPath); + lineEditThreadSpec->setText(QString::fromUtf8(data->threadSpec)); + if (data->address) + lineEditAddress->setText(QString::fromAscii("0x%1").arg(data->address, 0, 16)); + int initialType = 0; + if (!data->funcName.isEmpty()) + initialType = data->funcName == QLatin1String("main") ? 2 : 1; + if (data->address) + initialType = 3; + typeChanged(initialType); + + if (exec() != QDialog::Accepted) + return false; + + data->lineNumber = lineEditLineNumber->text().toInt(); + data->useFullPath = checkBoxUseFullPath->isChecked(); + data->address = lineEditAddress->text().toULongLong(0, 0); + data->funcName = lineEditFunction->text(); + data->fileName = pathChooserFileName->path(); + data->condition = lineEditCondition->text().toUtf8(); + data->ignoreCount = lineEditIgnoreCount->text().toInt(); + data->threadSpec = lineEditThreadSpec->text().toUtf8(); + return true; +} + +void BreakpointDialog::typeChanged(int index) +{ + const bool isLineVisible = index == 0; + const bool isFunctionVisible = index == 1; + const bool isAddressVisible = index == 3; + labelFileName->setEnabled(isLineVisible); + pathChooserFileName->setEnabled(isLineVisible); + labelLineNumber->setEnabled(isLineVisible); + lineEditLineNumber->setEnabled(isLineVisible); + labelUseFullPath->setEnabled(isLineVisible); + checkBoxUseFullPath->setEnabled(isLineVisible); + labelFunction->setEnabled(isFunctionVisible); + lineEditFunction->setEnabled(isFunctionVisible); + labelAddress->setEnabled(isAddressVisible); + lineEditAddress->setEnabled(isAddressVisible); + if (index == 2) + lineEditFunction->setText(QLatin1String("main")); +} + /////////////////////////////////////////////////////////////////////// // // BreakWindow @@ -267,12 +290,6 @@ void BreakWindow::contextMenuEvent(QContextMenuEvent *ev) QAction *toggleEnabledAction = new QAction(str5, &menu); toggleEnabledAction->setEnabled(si.size() > 0); - const bool fullpath = si.isEmpty() - || idx2.data(BreakpointEnabledRole).toBool(); - const QString str6 = fullpath ? tr("Use Short Path") : tr("Use Full Path"); - QAction *pathAction = new QAction(str6, &menu); - pathAction->setEnabled(si.size() > 0); - QAction *addBreakpointAction = new QAction(tr("Add Breakpoint..."), this); QAction *breakAtThrowAction = @@ -285,7 +302,6 @@ void BreakWindow::contextMenuEvent(QContextMenuEvent *ev) menu.addAction(editBreakpointAction); menu.addAction(associateBreakpointAction); menu.addAction(toggleEnabledAction); - menu.addAction(pathAction); menu.addSeparator(); menu.addAction(deleteAllAction); menu.addAction(deleteByFileAction); @@ -327,14 +343,12 @@ void BreakWindow::contextMenuEvent(QContextMenuEvent *ev) setModelData(RequestSynchronizeBreakpointsRole); else if (act == toggleEnabledAction) setBreakpointsEnabled(si, !enabled); - else if (act == pathAction) - setBreakpointsFullPath(si, !fullpath); else if (act == addBreakpointAction) addBreakpoint(); else if (act == breakAtThrowAction) - setModelData(RequestBreakByFunctionRole, "__cxa_throw"); + setModelData(RequestBreakByFunctionRole, QLatin1String(BreakpointData::throwFunction)); else if (act == breakAtCatchAction) - setModelData(RequestBreakByFunctionRole, "__cxa_begin_catch"); + setModelData(RequestBreakByFunctionRole, QLatin1String(BreakpointData::catchFunction)); } void BreakWindow::setBreakpointsEnabled(const QModelIndexList &list, bool enabled) @@ -377,27 +391,8 @@ void BreakWindow::deleteBreakpoints(QList<int> list) bool BreakWindow::editBreakpoint(BreakpointData *data) { - BreakpointDialog dialog(this, data); - if (dialog.exec() == QDialog::Rejected) - return false; - bool ok = false; - if (!dialog.lineEditAddress->text().isEmpty()) - data->address = dialog.lineEditAddress->text().toULongLong(&ok, 0); - if (!dialog.lineEditFunction->text().isEmpty()) - data->funcName = dialog.lineEditFunction->text(); - if (!dialog.lineEditFunction->text().isEmpty()) - data->funcName = dialog.lineEditFunction->text(); - if (!dialog.lineEditFileName->text().isEmpty()) - data->fileName = dialog.lineEditFileName->text(); - data->lineNumber = dialog.lineEditLineNumber->text().toInt(); - data->useFullPath = dialog.checkBoxUseFullPath->isChecked(); - if (!dialog.lineEditCondition->text().isEmpty()) - data->condition = dialog.lineEditCondition->text().toUtf8(); - if (!dialog.lineEditIgnoreCount->text().isEmpty()) - data->ignoreCount = dialog.lineEditIgnoreCount->text().toInt(); - if (!dialog.lineEditThreadSpec->text().isEmpty()) - data->threadSpec = dialog.lineEditThreadSpec->text().toUtf8(); - return true; + BreakpointDialog dialog(this); + return dialog.showDialog(data); } void BreakWindow::addBreakpoint() @@ -412,8 +407,9 @@ void BreakWindow::addBreakpoint() void BreakWindow::editBreakpoints(const QModelIndexList &list) { if (list.size() == 1) { - QVariant var = model()->data(list.at(0), BreakpointRole); - BreakpointData *data = (BreakpointData *)var.toULongLong(); + const QVariant dataV = model()->data(list.at(0), BreakpointRole); + QTC_ASSERT(qVariantCanConvert<BreakpointData *>(dataV), return ); + BreakpointData *data = qvariant_cast<BreakpointData *>(dataV); if (editBreakpoint(data)) data->reinsertBreakpoint(); return; @@ -427,12 +423,6 @@ void BreakWindow::editBreakpoints(const QModelIndexList &list) QTC_ASSERT(!list.isEmpty(), return); QModelIndex idx = list.front(); dlg.setWindowTitle(tr("Edit Breakpoint Properties")); - ui.lineEditFunction->hide(); - ui.labelFunction->hide(); - ui.lineEditFileName->hide(); - ui.labelFileName->hide(); - ui.lineEditLineNumber->hide(); - ui.labelLineNumber->hide(); QAbstractItemModel *m = model(); ui.lineEditCondition->setText( m->data(idx, BreakpointConditionRole).toString()); @@ -448,7 +438,7 @@ void BreakWindow::editBreakpoints(const QModelIndexList &list) foreach (const QModelIndex &idx, list) { //m->setData(idx.sibling(idx.row(), 1), ui.lineEditFunction->text()); - //m->setData(idx.sibling(idx.row(), 2), ui.lineEditFileName->text()); + //m->setData(idx.sibling(idx.row(), 2), ui.pathChooserFileName->text()); //m->setData(idx.sibling(idx.row(), 3), ui.lineEditLineNumber->text()); m->setData(idx, ui.lineEditCondition->text(), BreakpointConditionRole); m->setData(idx, ui.lineEditIgnoreCount->text(), BreakpointIgnoreCountRole); diff --git a/src/plugins/debugger/cdb/cdbbreakpoint.cpp b/src/plugins/debugger/cdb/cdbbreakpoint.cpp index 5dbe1f6219633683f72ce674a212748c1d9ebffc..6115b60053539c6a479cc12f8a8a0a4915606aba 100644 --- a/src/plugins/debugger/cdb/cdbbreakpoint.cpp +++ b/src/plugins/debugger/cdb/cdbbreakpoint.cpp @@ -53,7 +53,8 @@ CdbCore::BreakPoint breakPointFromBreakPointData(const Debugger::Internal::Break } rc.fileName = QDir::toNativeSeparators(bpd.fileName); rc.condition = bpd.condition; - rc.funcName = bpd.funcName; + // Resolved function goes to bpd.bpFuncName. + rc.funcName = bpd.bpFuncName.isEmpty() ? bpd.funcName : bpd.bpFuncName; rc.ignoreCount = bpd.ignoreCount; rc.lineNumber = bpd.lineNumber; rc.oneShot = false; @@ -92,7 +93,8 @@ bool synchronizeBreakPoints(CIDebugControl* debugControl, if (nbd->funcName.isEmpty()) { breakPointOk = true; } else { - switch (resolveSymbol(syms, &nbd->funcName, &warning)) { + nbd->bpFuncName = nbd->funcName; + switch (resolveSymbol(syms, &nbd->bpFuncName, &warning)) { case ResolveSymbolOk: breakPointOk = true; break; @@ -128,7 +130,6 @@ bool synchronizeBreakPoints(CIDebugControl* debugControl, nbd->bpThreadSpec = nbd->threadSpec; nbd->bpFileName = nbd->fileName; nbd->bpLineNumber = nbd->lineNumber; - nbd->bpFuncName = nbd->funcName; } } // had symbol if (!breakPointOk && !warning.isEmpty()) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 66bc3067a71f78d0f98eba660511c85762b35a94..8fff78742c636f43d5a8383ec3851aeaa605da74 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -409,7 +409,7 @@ void CdbEngine::setupEngine() m_d->m_inferiorStartupComplete = false; // Options QString errorMessage; - if (!m_d->setBreakOnThrow(theDebuggerBoolSetting(BreakOnThrow), &errorMessage)) + if (!m_d->setBreakOnThrow(m_d->m_options->breakOnException, &errorMessage)) showMessage(errorMessage, LogWarning); m_d->setVerboseSymbolLoading(m_d->m_options->verboseSymbolLoading); // Figure out dumper. @TODO: same in gdb... @@ -481,7 +481,7 @@ void CdbEngine::runEngine() } break; case AttachCore: - errorMessage = tr("Attaching to core files is not supported!"); + errorMessage = tr("Attaching to core files is not supported."); break; } if (rc) { @@ -563,6 +563,8 @@ void CdbEngine::processTerminated(unsigned long exitCode) bool CdbEnginePrivate::endInferior(bool detachOnly, QString *errorMessage) { + if (debugCDBExecution) + qDebug("endInferior detach=%d, %s", detachOnly, DebuggerEngine::stateName(m_engine->state())); // Are we running switch (m_engine->state()) { case InferiorRunRequested: @@ -572,6 +574,7 @@ bool CdbEnginePrivate::endInferior(bool detachOnly, QString *errorMessage) case InferiorStopOk: case InferiorStopFailed: case InferiorShutdownRequested: + case EngineShutdownRequested: // Forwarded when choosing 'Abort...' an attached process. break; default: return true; diff --git a/src/plugins/debugger/cdb/cdbmodules.cpp b/src/plugins/debugger/cdb/cdbmodules.cpp index 8082527e1e9f5466e3d2ae9c540d935e4fc9265f..ed5427375a8d06cb8960faf4b1599acdc46a2168 100644 --- a/src/plugins/debugger/cdb/cdbmodules.cpp +++ b/src/plugins/debugger/cdb/cdbmodules.cpp @@ -30,6 +30,7 @@ #include "cdbmodules.h" #include "moduleshandler.h" #include "cdbengine_p.h" +#include "breakpoint.h" #include <QtCore/QFileInfo> #include <QtCore/QRegExp> @@ -180,14 +181,35 @@ static ResolveSymbolResult resolveSymbol(CIDebugSymbols *syms, QString *symbol, // Is it an incomplete symbol? if (symbol->contains(QLatin1Char('!'))) return ResolveSymbolOk; - // 'main' is a #define for gdb, but not for VS - if (*symbol == QLatin1String("qMain")) + // Throw and catch + bool withinMSVCRunTime = false; + if (*symbol == QLatin1String(BreakpointData::throwFunction)) { + *symbol = QLatin1String("CxxThrowException"); + withinMSVCRunTime = true; + } else if (*symbol == QLatin1String(BreakpointData::catchFunction)) { + *symbol = QLatin1String("__CxxCallCatchBlock"); + withinMSVCRunTime = true; + } else if (*symbol == QLatin1String("qMain")) // 'main' is a #define for gdb, but not for VS *symbol = QLatin1String("main"); // resolve if (!searchSymbols(syms, *symbol, matches, errorMessage)) return ResolveSymbolError; - if (matches->empty()) + // Exception functions sometimes show up ambiguously as'QtGuid4!CxxThrowException', + // 'MSVCR100D!CxxThrowException', QtCored4!CxxThrowException', + // 'MSVCP100D!CxxThrowException' and 'msvcrt!CxxThrowException', + // 'OLEAUT32!CxxThrowException'...restrict to MSVC-RunTime (any MSVC version). + if (withinMSVCRunTime && matches->size() > 1) { + for (QStringList::iterator it = matches->begin(); it != matches->end(); ) + if (it->startsWith(QLatin1String("MSVCR"))) { + ++it; + } else { + it = matches->erase(it); + } + } + if (matches->empty()) { + *errorMessage = QString::fromLatin1("No match for '%1' found").arg(*symbol); return ResolveSymbolNotFound; + } *symbol = matches->front(); if (matches->size() > 1) { *errorMessage = QString::fromLatin1("Ambiguous symbol '%1': %2"). diff --git a/src/plugins/debugger/cdb/cdboptions.cpp b/src/plugins/debugger/cdb/cdboptions.cpp index 9443cc531a63b6fbe5f2147bf87bb2097c07a132..0f7e19945d0140f520b8d7c507f683917f45cc46 100644 --- a/src/plugins/debugger/cdb/cdboptions.cpp +++ b/src/plugins/debugger/cdb/cdboptions.cpp @@ -39,6 +39,7 @@ static const char *enabledKeyC = "Enabled"; static const char *pathKeyC = "Path"; static const char *symbolPathsKeyC = "SymbolPaths"; static const char *sourcePathsKeyC = "SourcePaths"; +static const char *breakOnExceptionKeyC = "BreakOnException"; static const char *verboseSymbolLoadingKeyC = "VerboseSymbolLoading"; static const char *fastLoadDebuggingHelpersKeyC = "FastLoadDebuggingHelpers"; @@ -47,6 +48,7 @@ namespace Internal { CdbOptions::CdbOptions() : enabled(false), + breakOnException(false), verboseSymbolLoading(false), fastLoadDebuggingHelpers(true) { @@ -83,6 +85,7 @@ void CdbOptions::fromSettings(const QSettings *s) sourcePaths = s->value(keyRoot + QLatin1String(sourcePathsKeyC), QStringList()).toStringList(); verboseSymbolLoading = s->value(keyRoot + QLatin1String(verboseSymbolLoadingKeyC), false).toBool(); fastLoadDebuggingHelpers = s->value(keyRoot + QLatin1String(fastLoadDebuggingHelpersKeyC), true).toBool(); + breakOnException = s->value(keyRoot + QLatin1String(breakOnExceptionKeyC), false).toBool(); } void CdbOptions::toSettings(QSettings *s) const @@ -94,6 +97,7 @@ void CdbOptions::toSettings(QSettings *s) const s->setValue(QLatin1String(sourcePathsKeyC), sourcePaths); s->setValue(QLatin1String(verboseSymbolLoadingKeyC), verboseSymbolLoading); s->setValue(QLatin1String(fastLoadDebuggingHelpersKeyC), fastLoadDebuggingHelpers); + s->setValue(QLatin1String(breakOnExceptionKeyC), breakOnException); s->endGroup(); } @@ -108,6 +112,8 @@ unsigned CdbOptions::compare(const CdbOptions &rhs) const rc |= SymbolOptionsChanged; if (fastLoadDebuggingHelpers != rhs.fastLoadDebuggingHelpers) rc |= FastLoadDebuggingHelpersChanged; + if (breakOnException != rhs.breakOnException) + rc |= OtherOptionsChanged; return rc; } diff --git a/src/plugins/debugger/cdb/cdboptions.h b/src/plugins/debugger/cdb/cdboptions.h index 43151aebc7896e9588c5fe0d576505caa0b99554..34db9ee1b8f1dc2f8c4297f8050057380e75ae51 100644 --- a/src/plugins/debugger/cdb/cdboptions.h +++ b/src/plugins/debugger/cdb/cdboptions.h @@ -52,7 +52,9 @@ public: enum ChangeFlags { InitializationOptionsChanged = 0x1, DebuggerPathsChanged = 0x2, SymbolOptionsChanged = 0x4, - FastLoadDebuggingHelpersChanged = 0x8 }; + FastLoadDebuggingHelpersChanged = 0x8, + OtherOptionsChanged = 0x100 + }; unsigned compare(const CdbOptions &s) const; // Format a symbol server specification with a cache directory @@ -67,6 +69,7 @@ public: QString path; QStringList symbolPaths; QStringList sourcePaths; + bool breakOnException; bool verboseSymbolLoading; bool fastLoadDebuggingHelpers; }; diff --git a/src/plugins/debugger/cdb/cdboptionspage.cpp b/src/plugins/debugger/cdb/cdboptionspage.cpp index 84252e52048113859c34ee37b1451a5aba538fb5..a42d10fd6f11177464fad05e3d2f972d38883fdf 100644 --- a/src/plugins/debugger/cdb/cdboptionspage.cpp +++ b/src/plugins/debugger/cdb/cdboptionspage.cpp @@ -86,6 +86,7 @@ void CdbOptionsPageWidget::setOptions(CdbOptions &o) m_ui.sourcePathListEditor->setPathList(o.sourcePaths); m_ui.verboseSymbolLoadingCheckBox->setChecked(o.verboseSymbolLoading); m_ui.fastLoadDebuggingHelpersCheckBox->setChecked(o.fastLoadDebuggingHelpers); + m_ui.breakOnExceptionCheckBox->setChecked(o.breakOnException); } CdbOptions CdbOptionsPageWidget::options() const @@ -97,6 +98,7 @@ CdbOptions CdbOptionsPageWidget::options() const rc.sourcePaths = m_ui.sourcePathListEditor->pathList(); rc.verboseSymbolLoading = m_ui.verboseSymbolLoadingCheckBox->isChecked(); rc.fastLoadDebuggingHelpers = m_ui.fastLoadDebuggingHelpersCheckBox->isChecked(); + rc.breakOnException = m_ui.breakOnExceptionCheckBox->isChecked(); return rc; } @@ -134,7 +136,8 @@ QString CdbOptionsPageWidget::searchKeywords() const QTextStream(&rc) << m_ui.pathLabel->text() << ' ' << m_ui.symbolPathLabel->text() << ' ' << m_ui.sourcePathLabel->text() << ' ' << m_ui.verboseSymbolLoadingCheckBox->text() - << ' ' << m_ui.fastLoadDebuggingHelpersCheckBox->text(); + << ' ' << m_ui.fastLoadDebuggingHelpersCheckBox->text() + << ' ' << m_ui.breakOnExceptionCheckBox->text(); rc.remove(QLatin1Char('&')); return rc; } diff --git a/src/plugins/debugger/cdb/cdboptionspagewidget.ui b/src/plugins/debugger/cdb/cdboptionspagewidget.ui index 26bbd3b900c6108ed2d7ec3f71a407778ff503c9..60b0e9959952f3473d990f98f0f799efbc4758ac 100644 --- a/src/plugins/debugger/cdb/cdboptionspagewidget.ui +++ b/src/plugins/debugger/cdb/cdboptionspagewidget.ui @@ -88,20 +88,27 @@ <property name="fieldGrowthPolicy"> <enum>QFormLayout::AllNonFixedFieldsGrow</enum> </property> - <item row="0" column="0" colspan="2"> + <item row="1" column="0" colspan="2"> <widget class="QCheckBox" name="verboseSymbolLoadingCheckBox"> <property name="text"> <string>Verbose symbol loading</string> </property> </widget> </item> - <item row="1" column="0"> + <item row="2" column="0"> <widget class="QCheckBox" name="fastLoadDebuggingHelpersCheckBox"> <property name="text"> <string>Fast loading of debugging helpers</string> </property> </widget> </item> + <item row="0" column="0" colspan="2"> + <widget class="QCheckBox" name="breakOnExceptionCheckBox"> + <property name="text"> + <string>Break on exception</string> + </property> + </widget> + </item> </layout> </widget> </item> diff --git a/src/plugins/debugger/cdb/symbolgroupcontext.cpp b/src/plugins/debugger/cdb/symbolgroupcontext.cpp index 569d20c5e44b50a3bbdb19419efdf118fe93aa80..72b8320c0ba20899909ef66ce6532d67b8814c1a 100644 --- a/src/plugins/debugger/cdb/symbolgroupcontext.cpp +++ b/src/plugins/debugger/cdb/symbolgroupcontext.cpp @@ -373,12 +373,23 @@ static inline QString msgExpandFailed(const QString &prefix, unsigned long index return QString::fromLatin1("Unable to expand '%1' %2: %3").arg(prefix).arg(index).arg(why); } +bool SymbolGroupContext::expandSymbol(unsigned long index, QString *errorMessage) +{ + return expandSymbol(m_inameIndexMap.key(index), index, errorMessage); +} + // Expand a symbol using the symbol group interface. bool SymbolGroupContext::expandSymbol(const QString &prefix, unsigned long index, QString *errorMessage) { if (debug) qDebug() << '>' << Q_FUNC_INFO << '\n' << prefix << index; + if (index >= unsigned(m_symbolParameters.size())) { + *errorMessage = QString::fromLatin1("Index %1 (%2) out of range 0..%3."). + arg(index).arg(prefix).arg(m_symbolParameters.size()); + return false; + } + switch (symbolState(index)) { case LeafSymbol: *errorMessage = QString::fromLatin1("Attempt to expand leaf node '%1' %2!").arg(prefix).arg(index); @@ -556,7 +567,7 @@ unsigned SymbolGroupContext::dumpValueRaw(unsigned long index, name.truncate(shadowedPos); } // For class hierarchies, we get sometimes complicated std::template types here. - // (std::map extends std::tree<>... Remove them for display only. + // (std::map extends std::tree<>... Remove them for display only. *nameIn = formatShadowedName(removeInnerTemplateType(name), shadowedNumber); *typeNameIn = getSymbolString(m_symbolGroup, &IDebugSymbolGroup2::GetSymbolTypeNameWide, index); // Check for uninitialized variables at level 0 only. @@ -616,7 +627,7 @@ unsigned SymbolGroupContext::dumpValue(unsigned long index, ULONG *typeIdIn, QString *typeNameIn, QString *valueIn) -{ +{ unsigned rc = dumpValueRaw(index, inameIn, nameIn, addrIn, typeIdIn, typeNameIn, valueIn); do { @@ -714,7 +725,7 @@ int SymbolGroupContext::dumpQString(unsigned long index, if (!expandSymbol(iname, index, &errorMessage)) return 2; const unsigned long dIndex = index + 4; - if (!expandSymbol(iname, dIndex, &errorMessage)) + if (!expandSymbol(dIndex, &errorMessage)) return 3; const unsigned long sizeIndex = dIndex + 3; const unsigned long arrayIndex = dIndex + 4; @@ -760,27 +771,49 @@ int SymbolGroupContext::dumpStdString(unsigned long index, { QString errorMessage; - // Expand string ->string_val->_bx. if (!expandSymbol(inameIn, index, &errorMessage)) return 1; - const unsigned long bxIndex = index + 3; - if (!expandSymbol(inameIn, bxIndex, &errorMessage)) - return 2; - // Check if size is something sane - const int sizeIndex = index + 6; + int sizeIndex = -1; + int bufIndex = -1; + if (m_symbolParameters.at(index).SubElements >= 3 + && m_inameIndexMap.key(index + 3).endsWith(QLatin1String("Bx"))) { + // Up to MSVC 2008 + const int bxIndex = index + 3; + if (m_symbolParameters.at(bxIndex).SubElements < 2 + || !expandSymbol(index + 3, &errorMessage)) + return 2; + // Check if size is something sane + sizeIndex = index + 6; + bufIndex = index + 4; + } else { + // MSVC10 onwards: Large nested string_val structure containing Bx + if (m_symbolParameters.at(index + 1).SubElements < 5 + || !expandSymbol(index + 1, &errorMessage)) + return 3; + const int bxIndex = index + 3; + if (m_symbolParameters.at(bxIndex).SubElements < 3 + || !m_inameIndexMap.key(bxIndex).endsWith(QLatin1String("Bx")) + || !expandSymbol(bxIndex, &errorMessage)) + return 4; + sizeIndex = index + 7; + bufIndex = index + 4; + } + if (sizeIndex < 0 || bufIndex < 0 + || sizeIndex >= m_symbolParameters.size() || bufIndex >= m_symbolParameters.size()) + return 5; + // Extract size and buffer qint64 size; if (!getSG_DecimalIntValue(m_symbolGroup, sizeIndex, &size)) - return 3; + return 6; if (size < 0) return 1; // Just copy over the value of the buf[]-array, which should be the string - const QChar doubleQuote = QLatin1Char('"'); - const int bufIndex = index + 4; *valueIn = getSymbolString(m_symbolGroup, &IDebugSymbolGroup2::GetSymbolValueTextWide, bufIndex); + const QChar doubleQuote = QLatin1Char('"'); const int quotePos = valueIn->indexOf(doubleQuote); if (quotePos == -1) - return 1; + return 7; valueIn->remove(0, quotePos); if (valueIn->size() > maxStringLength) { valueIn->truncate(maxStringLength); diff --git a/src/plugins/debugger/cdb/symbolgroupcontext.h b/src/plugins/debugger/cdb/symbolgroupcontext.h index 214af95dfc0633a0330a0e6c9957ed0b47875006..559e64a6747cf63c4bfc9a689afb3fe861078d87 100644 --- a/src/plugins/debugger/cdb/symbolgroupcontext.h +++ b/src/plugins/debugger/cdb/symbolgroupcontext.h @@ -143,6 +143,7 @@ private: void clear(); bool expandSymbol(const QString &prefix, unsigned long index, QString *errorMessage); + bool expandSymbol(unsigned long index, QString *errorMessage); void populateINameIndexMap(const QString &prefix, unsigned long parentId, unsigned long end); QString symbolINameAt(unsigned long index) const; inline QString formatShadowedName(const QString &name, int n) const; diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp index 670db758c0070602427c3b429739dba6293027ac..5d4b8d1a6dcf6fa96d43ec13374e07c9f15242e2 100644 --- a/src/plugins/debugger/debuggeractions.cpp +++ b/src/plugins/debugger/debuggeractions.cpp @@ -240,7 +240,7 @@ DebuggerSettings *DebuggerSettings::instance() item->setCheckable(true); item->setDefaultValue(true); item->setSettingsKey(debugModeGroup, QLatin1String("AutoDerefPointers")); - item->setToolTip(tr("This switches the Locals&Watchers view to " + item->setToolTip(tr("This switches the Locals&&Watchers view to " "automatically dereference pointers. This saves a level in the " "tree view, but also loses data for the now-missing intermediate " "level.")); @@ -306,6 +306,14 @@ DebuggerSettings *DebuggerSettings::instance() item->setValue(false); instance->insertItem(DebugDebuggingHelpers, item); + item = new SavedAction(instance); + item->setSettingsKey(debugModeGroup, QLatin1String("UseQmlObserver")); + item->setText(tr("Use QML Observer")); + item->setCheckable(true); + item->setDefaultValue(true); + item->setValue(true); + instance->insertItem(UseQmlObserver, item); + item = new SavedAction(instance); item->setSettingsKey(debugModeGroup, QLatin1String("UseCodeModel")); item->setText(tr("Use Code Model")); @@ -325,18 +333,6 @@ DebuggerSettings *DebuggerSettings::instance() item->setText(tr("Synchronize Breakpoints")); instance->insertItem(SynchronizeBreakpoints, item); - item = new SavedAction(instance); - item->setText(tr("Use Precise Breakpoints")); - item->setToolTip(tr("Selecting this causes breakpoint synchronization " - "being done after each step. This results in up-to-date breakpoint " - "information on whether a breakpoint has been resolved after " - "loading shared libraries, but slows down stepping.")); - item->setCheckable(true); - item->setDefaultValue(false); - item->setValue(false); - item->setSettingsKey(debugModeGroup, QLatin1String("UsePreciseBreakpoints")); - instance->insertItem(UsePreciseBreakpoints, item); - item = new SavedAction(instance); item->setText(tr("Adjust Breakpoint Locations")); item->setToolTip(tr("Not all source code lines generate " diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h index c0ef28a8f37b8770ccc78498d84e50440f5b0a41..aa59ee4bf20d07f2d19f90bf191f5db80e3f473d 100644 --- a/src/plugins/debugger/debuggeractions.h +++ b/src/plugins/debugger/debuggeractions.h @@ -99,6 +99,8 @@ enum DebuggerActionCode CustomDebuggingHelperLocation, DebugDebuggingHelpers, + UseQmlObserver, + UseCodeModel, UseToolTipsInMainEditor, @@ -140,7 +142,6 @@ enum DebuggerActionCode AdjustBreakpointLocations, NoPluginBreakpoints, SelectedPluginBreakpointsPattern, - UsePreciseBreakpoints, BreakOnThrow, BreakOnCatch }; diff --git a/src/plugins/debugger/debuggerconstants.h b/src/plugins/debugger/debuggerconstants.h index 35e60bcfe45fda385d7e08b7e46c1fe3a9922800..0360144147da087358cd513e9d3960c77d04873f 100644 --- a/src/plugins/debugger/debuggerconstants.h +++ b/src/plugins/debugger/debuggerconstants.h @@ -47,7 +47,6 @@ const char * const STEPOUT = "Debugger.StepOut"; const char * const NEXT = "Debugger.NextLine"; const char * const REVERSE = "Debugger.ReverseDirection"; -const char * const M_DEBUG_DEBUGGING_LANGUAGES = "Debugger.Menu.View.DebugLanguages"; const char * const M_DEBUG_VIEWS = "Debugger.Menu.View.Debug"; const char * const C_DEBUGMODE = "Debugger.DebugMode"; diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 87d836dfbbc088acf9b7613cba1d70d9988586d4..cbb287f1099412b3088bd252f62bdad4caea31a1 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -53,11 +53,7 @@ #include <coreplugin/progressmanager/futureprogress.h> #include <projectexplorer/debugginghelper.h> -#include <projectexplorer/project.h> -#include <projectexplorer/projectexplorerconstants.h> -#include <projectexplorer/target.h> -#include <projectexplorer/buildconfiguration.h> -#include <projectexplorer/applicationrunconfiguration.h> // For LocalApplication* +#include <projectexplorer/toolchain.h> #include <qt4projectmanager/qt4projectmanagerconstants.h> @@ -326,7 +322,7 @@ void DebuggerEnginePrivate::breakpointSetRemoveMarginActionTriggered() QAction *act = qobject_cast<QAction *>(sender()); QTC_ASSERT(act, return); QList<QVariant> list = act->data().toList(); - QTC_ASSERT(list.size() >= 3, return); + QTC_ASSERT(list.size() >= 3, qDebug() << list; return); const QString fileName = list.at(0).toString(); const int lineNumber = list.at(1).toInt(); const quint64 address = list.at(2).toULongLong(); @@ -338,7 +334,7 @@ void DebuggerEnginePrivate::breakpointEnableDisableMarginActionTriggered() QAction *act = qobject_cast<QAction *>(sender()); QTC_ASSERT(act, return); QList<QVariant> list = act->data().toList(); - QTC_ASSERT(list.size() == 2, return); + QTC_ASSERT(list.size() == 3, qDebug() << list; return); const QString fileName = list.at(0).toString(); const int lineNumber = list.at(1).toInt(); m_breakHandler.toggleBreakpointEnabled(fileName, lineNumber); @@ -347,7 +343,7 @@ void DebuggerEnginePrivate::breakpointEnableDisableMarginActionTriggered() void DebuggerEnginePrivate::handleContextMenuRequest(const QVariant ¶meters) { const QList<QVariant> list = parameters.toList(); - QTC_ASSERT(list.size() == 3, return); + QTC_ASSERT(list.size() == 3, qDebug() << list; return); TextEditor::ITextEditor *editor = (TextEditor::ITextEditor *)(list.at(0).value<quint64>()); int lineNumber = list.at(1).toInt(); @@ -1024,8 +1020,7 @@ QStringList DebuggerEngine::qtDumperLibraryLocations() const void DebuggerEngine::showQtDumperLibraryWarning(const QString &details) { - //QMessageBox dialog(d->m_mainWindow); // FIXME - QMessageBox dialog; + QMessageBox dialog(plugin()->mainWindow()); QPushButton *qtPref = dialog.addButton(tr("Open Qt4 Options"), QMessageBox::ActionRole); QPushButton *helperOff = dialog.addButton(tr("Turn off Helper Usage"), @@ -1054,6 +1049,35 @@ void DebuggerEngine::showQtDumperLibraryWarning(const QString &details) } } +void DebuggerEngine::showQmlObserverToolWarning() +{ + QMessageBox dialog(plugin()->mainWindow()); + QPushButton *qtPref = dialog.addButton(tr("Open Qt4 Options"), + QMessageBox::ActionRole); + QPushButton *helperOff = dialog.addButton(tr("Turn off QML Observer Usage"), + QMessageBox::ActionRole); + QPushButton *justContinue = dialog.addButton(tr("Continue Anyway"), + QMessageBox::AcceptRole); + dialog.setDefaultButton(justContinue); + dialog.setWindowTitle(tr("QML Observer Missing")); + dialog.setText(tr("QML Observer could not be found.")); + dialog.setInformativeText(tr( + "QML Observer is used to offer additional debugging features for " + "QML applications, such as interactive debugging and inspection tools." + "It must be compiled for each used Qt version separately. " + "On the Qt4 options page, select a Qt installation " + "and click Rebuild.")); + dialog.exec(); + if (dialog.clickedButton() == qtPref) { + Core::ICore::instance()->showOptionsDialog( + _(Qt4ProjectManager::Constants::QT_SETTINGS_CATEGORY), + _(Qt4ProjectManager::Constants::QTVERSION_SETTINGS_PAGE_ID)); + } else if (dialog.clickedButton() == helperOff) { + theDebuggerAction(UseQmlObserver) + ->setValue(qVariantFromValue(false), false); + } +} + QString DebuggerEngine::qtDumperLibraryName() const { if (theDebuggerAction(UseCustomDebuggingHelperLocation)->value().toBool()) @@ -1668,6 +1692,11 @@ void DebuggerEngine::attemptBreakpointSynchronization() { } +bool DebuggerEngine::acceptsBreakpoint(const BreakpointData *) +{ + return true; +} + void DebuggerEngine::selectThread(int) { } diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index f42ffd26e118cafec74ee86dac2d291f4cc82a17..199d7c6626060fde3456a0879b6c4ce42c423d10 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -84,6 +84,7 @@ public: quint16 qmlServerPort; QString projectBuildDir; QString projectDir; + bool qmlObserverAvailable; // for cpp+qml debugging DebuggerEngineType cppEngineType; @@ -129,6 +130,7 @@ class StackFrame; class SourceFilesHandler; class ThreadsHandler; class WatchHandler; +class BreakpointData; struct WatchUpdateFlags { @@ -182,6 +184,7 @@ public: virtual void updateAll(); virtual void attemptBreakpointSynchronization(); + virtual bool acceptsBreakpoint(const Internal::BreakpointData *); virtual void selectThread(int index); virtual void assignValueInDebugger(const Internal::WatchData *w, const QString &expr, const QVariant &value); @@ -264,6 +267,7 @@ public: QString qtDumperLibraryName() const; QStringList qtDumperLibraryLocations() const; void showQtDumperLibraryWarning(const QString &details); + void showQmlObserverToolWarning(); static const char *stateName(int s); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 34d1b5b591fe95be44a8892a4e906e3836ae285c..161546f031d33c616a58bb2f815f28b9e83540b8 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -572,7 +572,6 @@ QWidget *CommonOptionsPage::createPage(QWidget *parent) m_group.insert(theDebuggerAction(SortStructMembers), 0); m_group.insert(theDebuggerAction(LogTimeStamps), 0); m_group.insert(theDebuggerAction(VerboseLog), 0); - m_group.insert(theDebuggerAction(UsePreciseBreakpoints), 0); m_group.insert(theDebuggerAction(BreakOnThrow), 0); m_group.insert(theDebuggerAction(BreakOnCatch), 0); #ifdef Q_OS_WIN @@ -669,6 +668,9 @@ QWidget *DebuggingHelperOptionPage::createPage(QWidget *parent) m_group.insert(theDebuggerAction(UseCodeModel), m_ui.checkBoxUseCodeModel); + m_group.insert(theDebuggerAction(UseQmlObserver), + m_ui.checkBoxUseQmlObserver); + #ifdef QT_DEBUG m_group.insert(theDebuggerAction(DebugDebuggingHelpers), m_ui.checkBoxDebugDebuggingHelpers); @@ -692,7 +694,8 @@ QWidget *DebuggingHelperOptionPage::createPage(QWidget *parent) << ' ' << m_ui.customLocationGroupBox->title() << ' ' << m_ui.dumperLocationLabel->text() << ' ' << m_ui.checkBoxUseCodeModel->text() - << ' ' << m_ui.checkBoxDebugDebuggingHelpers->text(); + << ' ' << m_ui.checkBoxDebugDebuggingHelpers->text() + << ' ' << m_ui.checkBoxUseQmlObserver->text(); m_searchKeywords.remove(QLatin1Char('&')); } return w; @@ -1265,8 +1268,8 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, QString *er // Cpp/Qml ui setup m_uiSwitcher = new DebuggerUISwitcher(m_debugMode, this); ExtensionSystem::PluginManager::instance()->addObject(m_uiSwitcher); - m_uiSwitcher->addLanguage(CppLanguage, tr("C++"), cppDebuggercontext); - m_uiSwitcher->addLanguage(QmlLanguage, tr("QML/JavaScript"), qmlDebuggerContext); + m_uiSwitcher->addLanguage(CppLanguage, cppDebuggercontext); + m_uiSwitcher->addLanguage(QmlLanguage, qmlDebuggerContext); // Dock widgets m_breakDock = m_uiSwitcher->createDockWidget(CppLanguage, m_breakWindow); @@ -2168,8 +2171,7 @@ void DebuggerPluginPrivate::setSimpleDockWidgetArrangement if ((activeLanguages.testFlag(CppLanguage) && !activeLanguages.testFlag(QmlLanguage)) - || activeLanguages == AnyLanguage - || !uiSwitcher->qmlInspectorWindow()) { + || activeLanguages == AnyLanguage) { m_stackDock->show(); m_breakDock->show(); m_watchDock->show(); @@ -2180,7 +2182,8 @@ void DebuggerPluginPrivate::setSimpleDockWidgetArrangement m_breakDock->show(); m_watchDock->show(); m_scriptConsoleDock->show(); - uiSwitcher->qmlInspectorWindow()->show(); + if (uiSwitcher->qmlInspectorWindow()) + uiSwitcher->qmlInspectorWindow()->show(); } mw->splitDockWidget(mw->toolBarDockWidget(), m_stackDock, Qt::Vertical); mw->splitDockWidget(m_stackDock, m_watchDock, Qt::Horizontal); diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 69f739b85002401989072c58a861e65e2e97a7d1..8c016620bbc4c75167f386dc153b60203d8647fb 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -54,6 +54,7 @@ #include <projectexplorer/applicationrunconfiguration.h> // For LocalApplication* #include <utils/environment.h> +#include <utils/synchronousprocess.h> #include <utils/qtcassert.h> #include <utils/fancymainwindow.h> #include <coreplugin/icore.h> @@ -138,6 +139,36 @@ QString DebuggerRunControlFactory::displayName() const return tr("Debug"); } +// Find Qt installation by running qmake +static inline QString findQtInstallPath(const QString &qmakePath) +{ + QProcess proc; + QStringList args; + args.append(QLatin1String("-query")); + args.append(QLatin1String("QT_INSTALL_HEADERS")); + proc.start(qmakePath, args); + if (!proc.waitForStarted()) { + qWarning("%s: Cannot start '%s': %s", Q_FUNC_INFO, qPrintable(qmakePath), + qPrintable(proc.errorString())); + return QString(); + } + proc.closeWriteChannel(); + if (!proc.waitForFinished()) { + Utils::SynchronousProcess::stopProcess(proc); + qWarning("%s: Timeout running '%s'.", Q_FUNC_INFO, qPrintable(qmakePath)); + return QString(); + } + if (proc.exitStatus() != QProcess::NormalExit) { + qWarning("%s: '%s' crashed.", Q_FUNC_INFO, qPrintable(qmakePath)); + return QString(); + } + const QByteArray ba = proc.readAllStandardOutput().trimmed(); + QDir dir(QString::fromLocal8Bit(ba)); + if (dir.exists() && dir.cdUp()) + return dir.absolutePath(); + return QString(); +} + static DebuggerStartParameters localStartParameters(RunConfiguration *runConfiguration) { DebuggerStartParameters sp; @@ -176,17 +207,8 @@ static DebuggerStartParameters localStartParameters(RunConfiguration *runConfigu // Find qtInstallPath. QString qmakePath = DebuggingHelperLibrary::findSystemQt(rc->environment()); - if (!qmakePath.isEmpty()) { - QProcess proc; - QStringList args; - args.append(QLatin1String("-query")); - args.append(QLatin1String("QT_INSTALL_HEADERS")); - proc.start(qmakePath, args); - proc.waitForFinished(); - QByteArray ba = proc.readAllStandardOutput().trimmed(); - QFileInfo fi(QString::fromLocal8Bit(ba) + "/.."); - sp.qtInstallPath = fi.absoluteFilePath(); - } + if (!qmakePath.isEmpty()) + sp.qtInstallPath = findQtInstallPath(qmakePath); return sp; } @@ -234,7 +256,6 @@ struct DebuggerRunnerPrivate { DebuggerEngine *m_engine; const QWeakPointer<RunConfiguration> m_myRunConfiguration; bool m_running; - bool m_started; const DebuggerEngineType m_enabledEngines; QString m_errorMessage; QString m_settingsIdHint; @@ -244,7 +265,6 @@ DebuggerRunnerPrivate::DebuggerRunnerPrivate(RunConfiguration *runConfiguration, DebuggerEngineType enabledEngines) : m_myRunConfiguration(runConfiguration) , m_running(false) - , m_started(false) , m_enabledEngines(enabledEngines) { } @@ -380,13 +400,7 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams // Figure out engine according to toolchain, executable, attach or default. DebuggerEngineType engineType = NoEngineType; DebuggerLanguages activeLangs = DebuggerPlugin::instance()->activeLanguages(); - /*bool isQmlExecutable = sp.executable.endsWith(_("qmlviewer")) || sp.executable.endsWith(_("qmlobserver")); -#ifdef Q_OS_MAC - isQmlExecutable = sp.executable.endsWith(_("QMLViewer.app")) || sp.executable.endsWith(_("QMLObserver.app")); -#endif - if (isQmlExecutable && sp.startMode != AttachCore) - engineType = QmlEngineType; - else */if (sp.executable.endsWith(_(".js"))) + if (sp.executable.endsWith(_(".js"))) engineType = ScriptEngineType; else if (sp.executable.endsWith(_(".py"))) engineType = PdbEngineType; @@ -552,11 +566,17 @@ void DebuggerRunControl::start() plugin()->showMessage(DebuggerSettings::instance()->dump(), LogDebug); plugin()->runControlStarted(this); - engine()->startDebugger(this); - d->m_running = true; - emit addToOutputWindowInline(this, tr("Debugging starts"), false); - emit addToOutputWindowInline(this, "\n", false); + // We might get a synchronous startFailed() notification on Windows, + // when launching the process fails. Emit a proper finished() sequence. emit started(); + d->m_running = true; + + engine()->startDebugger(this); + + if (d->m_running) { + emit addToOutputWindowInline(this, tr("Debugging starts"), false); + emit addToOutputWindowInline(this, "\n", false); + } } void DebuggerRunControl::startFailed() @@ -593,7 +613,7 @@ bool DebuggerRunControl::aboutToStop() const { QTC_ASSERT(isRunning(), return true;) - const QString question = tr("A debugging session are still in progress. " + const QString question = tr("A debugging session is still in progress. " "Terminating the session in the current" " state can leave the target in an inconsistent state." " Would you still like to terminate it?"); diff --git a/src/plugins/debugger/debuggeruiswitcher.cpp b/src/plugins/debugger/debuggeruiswitcher.cpp index b3f40540c3db98bc9ec5e80eefd690005d0e0807..9c89368dbcbe2ed687500344fa7c921985fb8fc9 100644 --- a/src/plugins/debugger/debuggeruiswitcher.cpp +++ b/src/plugins/debugger/debuggeruiswitcher.cpp @@ -129,17 +129,12 @@ struct DebuggerUISwitcherPrivate QHash<DebuggerLanguage, Context> m_contextsForLanguage; - QActionGroup *m_languageActionGroup; bool m_inDebugMode; bool m_changingUI; - ActionContainer *m_debuggerLanguageMenu; DebuggerLanguages m_previousDebugLanguages; DebuggerLanguages m_activeDebugLanguages; - QAction *m_activateCppAction; - QAction *m_activateQmlAction; QAction *m_openMemoryEditorAction; - bool m_qmlEnabled; ActionContainer *m_viewsMenu; ActionContainer *m_debugMenu; @@ -160,21 +155,15 @@ DebuggerUISwitcherPrivate::DebuggerUISwitcherPrivate(DebuggerUISwitcher *q) , m_supportedLanguages(AnyLanguage) , m_languageCount(0) , m_toolbarStack(new QStackedWidget) - , m_languageActionGroup(new QActionGroup(q)) , m_inDebugMode(false) , m_changingUI(false) - , m_debuggerLanguageMenu(0) , m_previousDebugLanguages(AnyLanguage) , m_activeDebugLanguages(AnyLanguage) - , m_activateCppAction(0) - , m_activateQmlAction(0) , m_openMemoryEditorAction(0) - , m_qmlEnabled(false) , m_viewsMenu(0) , m_debugMenu(0) , m_initialized(false) { - m_languageActionGroup->setExclusive(false); } DebuggerUISwitcher *DebuggerUISwitcherPrivate::m_instance = 0; @@ -197,7 +186,6 @@ DebuggerUISwitcher::DebuggerUISwitcher(BaseMode *mode, QObject* parent) d->m_debugMenu = am->actionContainer(ProjectExplorer::Constants::M_DEBUG); d->m_viewsMenu = am->actionContainer(Core::Id(Core::Constants::M_WINDOW_VIEWS)); QTC_ASSERT(d->m_viewsMenu, return) - d->m_debuggerLanguageMenu = am->createMenu(Constants::M_DEBUG_DEBUGGING_LANGUAGES); DebuggerUISwitcherPrivate::m_instance = this; } @@ -268,43 +256,24 @@ void DebuggerUISwitcher::updateUiForRunConfiguration(ProjectExplorer::RunConfigu void DebuggerUISwitcher::updateUiForCurrentRunConfiguration() { - if (d->m_previousRunConfiguration) { - ProjectExplorer::RunConfiguration *rc = d->m_previousRunConfiguration.data(); - - if (d->m_activateCppAction) - d->m_activateCppAction->setChecked(rc->useCppDebugger()); - if (d->m_activateQmlAction) - d->m_activateQmlAction->setChecked(rc->useQmlDebugger()); - } - updateActiveLanguages(); } void DebuggerUISwitcher::updateActiveLanguages() { - DebuggerLanguages prevLanguages = d->m_activeDebugLanguages; - - d->m_activeDebugLanguages = AnyLanguage; + DebuggerLanguages newLanguages = AnyLanguage; - if (d->m_activateCppAction->isChecked()) - d->m_activeDebugLanguages = CppLanguage; - - if (d->m_qmlEnabled && d->m_activateQmlAction->isChecked()) - d->m_activeDebugLanguages |= QmlLanguage; - - if (d->m_activeDebugLanguages == AnyLanguage) { - // do mutual exclusive selection if qml is enabled. Otherwise, just keep - // cpp language selected. - if (prevLanguages & CppLanguage && d->m_qmlEnabled) { - d->m_activeDebugLanguages = QmlLanguage; - d->m_activateQmlAction->setChecked(true); - } else { - d->m_activateCppAction->setChecked(true); - d->m_activeDebugLanguages = CppLanguage; - } + if (d->m_previousRunConfiguration) { + if (d->m_previousRunConfiguration.data()->useCppDebugger()) + newLanguages = CppLanguage; + if (d->m_previousRunConfiguration.data()->useQmlDebugger()) + newLanguages |= QmlLanguage; } - emit activeLanguagesChanged(d->m_activeDebugLanguages); + if (newLanguages != d->m_activeDebugLanguages) { + d->m_activeDebugLanguages = newLanguages; + emit activeLanguagesChanged(d->m_activeDebugLanguages); + } updateUi(); } @@ -357,9 +326,6 @@ void DebuggerUISwitcher::createViewsMenuItems() ActionManager *am = core->actionManager(); Context globalcontext(Core::Constants::C_GLOBAL); - d->m_debugMenu->addMenu(d->m_debuggerLanguageMenu, Core::Constants::G_DEFAULT_THREE); - d->m_debuggerLanguageMenu->menu()->setTitle(tr("&Debug Languages")); - d->m_openMemoryEditorAction = new QAction(this); d->m_openMemoryEditorAction->setText(tr("Memory...")); connect(d->m_openMemoryEditorAction, SIGNAL(triggered()), @@ -390,8 +356,7 @@ DebuggerUISwitcher *DebuggerUISwitcher::instance() return DebuggerUISwitcherPrivate::m_instance; } -void DebuggerUISwitcher::addLanguage(const DebuggerLanguage &languageId, - const QString &languageName, const Context &context) +void DebuggerUISwitcher::addLanguage(const DebuggerLanguage &languageId, const Context &context) { bool activate = (d->m_supportedLanguages == AnyLanguage); d->m_supportedLanguages = d->m_supportedLanguages | languageId; @@ -400,30 +365,6 @@ void DebuggerUISwitcher::addLanguage(const DebuggerLanguage &languageId, d->m_toolBars.insert(languageId, 0); d->m_contextsForLanguage.insert(languageId, context); - ActionManager *am = ICore::instance()->actionManager(); - - QAction *debuggableLang = new QAction(languageName, this); - debuggableLang->setCheckable(true); - debuggableLang->setText(languageName); - d->m_languageActionGroup->addAction(debuggableLang); - Command *activeDebugLanguageCmd = am->registerAction(debuggableLang, - QString("Debugger.DebugLanguage." + languageName), - Context(Core::Constants::C_GLOBAL)); - d->m_debuggerLanguageMenu->addAction(activeDebugLanguageCmd); - - QString shortcutPrefix = tr("Alt+L"); - QString shortcutIndex = QString::number(d->m_languageCount); - activeDebugLanguageCmd->setDefaultKeySequence(QKeySequence( - QString("%1,%2").arg(shortcutPrefix).arg(shortcutIndex))); - - if (languageId == QmlLanguage) { - d->m_qmlEnabled = true; - d->m_activateQmlAction = debuggableLang; - } else if (!d->m_activateCppAction) { - d->m_activateCppAction = debuggableLang; - } - connect(debuggableLang, SIGNAL(triggered()), SLOT(updateActiveLanguages())); - updateUiForRunConfiguration(0); if (activate) @@ -683,7 +624,7 @@ void DebuggerUISwitcher::writeSettings() const } settings->endGroup(); } - if (d->m_qmlEnabled) { + { settings->beginGroup(QLatin1String("DebugMode.CppQmlMode")); QHashIterator<QString, QVariant> it(d->m_dockWidgetActiveStateQmlCpp); while (it.hasNext()) { @@ -706,13 +647,11 @@ void DebuggerUISwitcher::readSettings() } settings->endGroup(); - if (d->m_qmlEnabled) { - settings->beginGroup(QLatin1String("DebugMode.CppQmlMode")); - foreach (const QString &key, settings->childKeys()) { - d->m_dockWidgetActiveStateQmlCpp.insert(key, settings->value(key)); - } - settings->endGroup(); + settings->beginGroup(QLatin1String("DebugMode.CppQmlMode")); + foreach (const QString &key, settings->childKeys()) { + d->m_dockWidgetActiveStateQmlCpp.insert(key, settings->value(key)); } + settings->endGroup(); // reset initial settings when there are none yet DebuggerLanguages langs = d->m_activeDebugLanguages; @@ -720,7 +659,7 @@ void DebuggerUISwitcher::readSettings() d->m_activeDebugLanguages = CppLanguage; resetDebuggerLayout(); } - if (d->m_qmlEnabled && d->m_dockWidgetActiveStateQmlCpp.isEmpty()) { + if (d->m_dockWidgetActiveStateQmlCpp.isEmpty()) { d->m_activeDebugLanguages = QmlLanguage; resetDebuggerLayout(); } diff --git a/src/plugins/debugger/debuggeruiswitcher.h b/src/plugins/debugger/debuggeruiswitcher.h index 3fbd69b4b6b0603baf43a1a2936c3e8287cf27db..71b5728af3ac510b7473ed87c9df7960f588ed27 100644 --- a/src/plugins/debugger/debuggeruiswitcher.h +++ b/src/plugins/debugger/debuggeruiswitcher.h @@ -76,8 +76,7 @@ public: static DebuggerUISwitcher *instance(); // debuggable languages are registered with this function. - void addLanguage(const DebuggerLanguage &language, const QString &languageName, - const Core::Context &context); + void addLanguage(const DebuggerLanguage &language, const Core::Context &context); // debugger toolbars are registered with this function void setToolbar(const DebuggerLanguage &language, QWidget *widget); diff --git a/src/plugins/debugger/dumperoptionpage.ui b/src/plugins/debugger/dumperoptionpage.ui index 797601b656a6bc9ae407f64ffa80a86e405df1ea..8d64f355abe4672d220efadeccb2e0eb5ddb590c 100644 --- a/src/plugins/debugger/dumperoptionpage.ui +++ b/src/plugins/debugger/dumperoptionpage.ui @@ -2,7 +2,15 @@ <ui version="4.0"> <class>DebuggingHelperOptionPage</class> <widget class="QWidget" name="DebuggingHelperOptionPage"> - <layout class="QVBoxLayout" name="verticalLayout_2"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>529</width> + <height>411</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> <item> <widget class="QLabel" name="label"> <property name="text"> @@ -47,7 +55,7 @@ </widget> </item> <item row="0" column="1"> - <widget class="Utils::PathChooser" name="dumperLocationChooser"/> + <widget class="Utils::PathChooser" name="dumperLocationChooser" native="true"/> </item> </layout> </widget> @@ -75,6 +83,25 @@ </layout> </widget> </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>QML Observer is used to offer additional debugging facilities to QML applications, such as interactive preview of code changes and inspection tools. + +It is not strictly necessary for debugging with Qt Creator.</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="checkBoxUseQmlObserver"> + <property name="text"> + <string>Use QML Observer</string> + </property> + </widget> + </item> <item> <spacer name="verticalSpacer"> <property name="orientation"> diff --git a/src/plugins/debugger/gdb/gdbchooserwidget.cpp b/src/plugins/debugger/gdb/gdbchooserwidget.cpp index accaf8aee871c3f4cc5d964183082fc12533d83c..7c937575cba28503c04ac4a60bccfcb276fa896f 100644 --- a/src/plugins/debugger/gdb/gdbchooserwidget.cpp +++ b/src/plugins/debugger/gdb/gdbchooserwidget.cpp @@ -565,7 +565,7 @@ void BinaryToolChainDialog::setPath(const QString &p) QString BinaryToolChainDialog::path() const { - return m_pathChooser->path(); + return m_pathChooser->rawPath(); } void BinaryToolChainDialog::slotValidChanged() diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index ec860d875aad5ac0d7d4b3a37fee454bbcba4316..1bf2ce0a6364f6776fa43a248c74b58f8c3540fc 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -230,6 +230,7 @@ void GdbEngine::initializeVariables() m_isMacGdb = false; m_hasPython = false; m_registerNamesListed = false; + m_hasInferiorThreadList = false; m_fullToShortName.clear(); m_shortToFullName.clear(); @@ -270,8 +271,8 @@ QString GdbEngine::errorMessage(QProcess::ProcessError error) case QProcess::FailedToStart: return tr("The Gdb process failed to start. Either the " "invoked program '%1' is missing, or you may have insufficient " - "permissions to invoke the program.") - .arg(m_gdb); + "permissions to invoke the program.\n%2") + .arg(m_gdb, gdbProc()->errorString()); case QProcess::Crashed: return tr("The Gdb process crashed some time after starting " "successfully."); @@ -793,7 +794,7 @@ void GdbEngine::flushCommand(const GdbCommand &cmd0) return; } - QTC_ASSERT(gdbProc()->state() == QProcess::Running, /**/); + QTC_ASSERT(gdbProc()->state() == QProcess::Running, return;) ++currentToken(); GdbCommand cmd = cmd0; @@ -1395,10 +1396,6 @@ void GdbEngine::handleStop1(const GdbMi &data) if (m_modulesListOutdated) reloadModulesInternal(); - // This needs to be done before fullName() may need it. - if (m_sourcesListOutdated && theDebuggerBoolSetting(UsePreciseBreakpoints)) - reloadSourceFilesInternal(); - if (m_breakListOutdated) { reloadBreakListInternal(); } else { @@ -1678,12 +1675,18 @@ void GdbEngine::notifyAdapterShutdownOk() showMessage(_("INITIATE GDBENGINE SHUTDOWN IN STATE %1, PROC: %2") .arg(lastGoodState()).arg(gdbProc()->state())); m_commandsDoneCallback = 0; - if (gdbProc()->state() == QProcess::Running) { + switch (gdbProc()->state()) { + case QProcess::Running: postCommand("-gdb-exit", GdbEngine::ExitRequest, CB(handleGdbExit)); - } else { + break; + case QProcess::NotRunning: // Cannot find executable + notifyEngineShutdownOk(); + break; + case QProcess::Starting: showMessage(_("GDB NOT REALLY RUNNING; KILLING IT")); gdbProc()->kill(); notifyEngineShutdownFailed(); + break; } } @@ -2144,8 +2147,13 @@ static inline QByteArray bpAddressSpec(quint64 address) QByteArray GdbEngine::breakpointLocation(const BreakpointData *data) { - if (!data->funcName.isEmpty()) + if (!data->funcName.isEmpty()) { + if (data->funcName == QLatin1String(BreakpointData::throwFunction)) + return QByteArray("__cxa_throw"); + if (data->funcName == QLatin1String(BreakpointData::catchFunction)) + return QByteArray("__cxa_begin_catch"); return data->funcName.toLatin1(); + } if (data->address) return bpAddressSpec(data->address); // In this case, data->funcName is something like '*0xdeadbeef' @@ -2475,31 +2483,6 @@ void GdbEngine::attemptBreakpointSynchronization() return; } - // For best results, we rely on an up-to-date fullname mapping. - // The listing completion will retrigger us, so no futher action is needed. - if (m_sourcesListOutdated && theDebuggerBoolSetting(UsePreciseBreakpoints)) { - if (state() == InferiorRunOk) { - // FIXME: this is a hack - // The hack solves the problem that we want both commands - // (reloadSourceFiles and reloadBreakList) to be executed - // within the same stop-executecommand-continue cycle. - // Just calling reloadSourceFiles and reloadBreakList doesn't work - // in this case, because a) stopping the executable is asynchronous, - // b) we wouldn't want to stop-exec-continue twice - m_sourcesListUpdating = true; - GdbCommand cmd; - cmd.command = "-file-list-exec-source-files"; - cmd.flags = NoFlags; - cmd.callback = &GdbEngine::handleQuerySources; - cmd.callbackName = ""; - m_commandsToRunOnTemporaryBreak.append(cmd); - } else { - reloadSourceFilesInternal(); - } - reloadBreakListInternal(); - return; - } - if (m_breakListOutdated) { reloadBreakListInternal(); return; @@ -2597,6 +2580,11 @@ void GdbEngine::attemptBreakpointSynchronization() handler->updateMarkers(); } +bool GdbEngine::acceptsBreakpoint(const Internal::BreakpointData *br) +{ + return !( br->fileName.endsWith(QLatin1String("js")) || br->fileName.endsWith(QLatin1String("qml")) ); +} + ////////////////////////////////////////////////////////////////////// // diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index 210b1c678174aa3c5dcc80a4395f55faf1a03844..bc9a357af7fd5c43bae0477e26983241b2efae2e 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -309,6 +309,7 @@ private: ////////// Inferior Management ////////// // This should be always the last call in a function. Q_SLOT virtual void attemptBreakpointSynchronization(); + bool acceptsBreakpoint(const Internal::BreakpointData *br); virtual void executeStep(); virtual void executeStepOut(); diff --git a/src/plugins/debugger/gdb/gdboptionspage.cpp b/src/plugins/debugger/gdb/gdboptionspage.cpp index 1974b68150df7dd2f95f923d50ceabe613239499..8482a207dc117f769e94af0feec6b0d56c350155 100644 --- a/src/plugins/debugger/gdb/gdboptionspage.cpp +++ b/src/plugins/debugger/gdb/gdboptionspage.cpp @@ -83,8 +83,6 @@ QWidget *GdbOptionsPage::createPage(QWidget *parent) m_ui.environmentEdit); m_group.insert(theDebuggerAction(AdjustBreakpointLocations), m_ui.checkBoxAdjustBreakpointLocations); - m_group.insert(theDebuggerAction(UsePreciseBreakpoints), - m_ui.checkBoxUsePreciseBreakpoints); m_group.insert(theDebuggerAction(GdbWatchdogTimeout), m_ui.spinBoxGdbWatchdogTimeout); diff --git a/src/plugins/debugger/gdb/gdboptionspage.ui b/src/plugins/debugger/gdb/gdboptionspage.ui index 5baef8d76779741f0a6698d70f6bf335b45393d1..385fa4abfee1335276d706b583c2c9c8cbab6c4d 100644 --- a/src/plugins/debugger/gdb/gdboptionspage.ui +++ b/src/plugins/debugger/gdb/gdboptionspage.ui @@ -2,14 +2,6 @@ <ui version="4.0"> <class>GdbOptionsPage</class> <widget class="QWidget" name="GdbOptionsPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>480</width> - <height>475</height> - </rect> - </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QGroupBox" name="groupBoxLocations"> @@ -92,26 +84,13 @@ on slow machines. In this case, the value should be increased.</string> </widget> </item> <item row="4" column="0" colspan="2"> - <widget class="QCheckBox" name="checkBoxUsePreciseBreakpoints"> - <property name="toolTip"> - <string>When this option is checked, the debugger plugin attempts -to extract full path information for all source files from gdb. This is a -slow process but enables setting breakpoints in files with the same file -name in different directories.</string> - </property> - <property name="text"> - <string>Use full path information to set breakpoints</string> - </property> - </widget> - </item> - <item row="5" column="0" colspan="2"> <widget class="QCheckBox" name="checkBoxEnableReverseDebugging"> <property name="text"> <string>Enable reverse debugging</string> </property> </widget> </item> - <item row="6" column="0" colspan="2"> + <item row="5" column="0" colspan="2"> <widget class="QCheckBox" name="checkBoxSkipKnownFrames"> <property name="toolTip"> <string>When this option is checked, 'Step Into' compresses several steps into one in certain situations, leading to 'less noisy' debugging. So will, e.g., the atomic @@ -122,14 +101,14 @@ name in different directories.</string> </property> </widget> </item> - <item row="7" column="0" colspan="2"> + <item row="6" column="0" colspan="2"> <widget class="QCheckBox" name="checkBoxUseMessageBoxForSignals"> <property name="text"> <string>Show a message box when receiving a signal</string> </property> </widget> </item> - <item row="8" column="0" colspan="2"> + <item row="7" column="0" colspan="2"> <widget class="QCheckBox" name="checkBoxAdjustBreakpointLocations"> <property name="text"> <string>Adjust Breakpoint Locations</string> diff --git a/src/plugins/debugger/gdb/symbian.cpp b/src/plugins/debugger/gdb/symbian.cpp index f7d6b62f2827f9320fa4440f5dddb3aa96959409..636c83da85eb54a9b1af3156265ab5bcc8385c58 100644 --- a/src/plugins/debugger/gdb/symbian.cpp +++ b/src/plugins/debugger/gdb/symbian.cpp @@ -418,9 +418,9 @@ static void gdbAppendRegister(QByteArray *ba, uint regno, uint value) ba->append(';'); } -QByteArray Snapshot::gdbStopMessage(uint threadId, bool reportThreadId) const +QByteArray Snapshot::gdbStopMessage(uint threadId, int signalNumber, bool reportThreadId) const { - QByteArray ba = "T05"; + QByteArray ba = ('T' + trk::hexNumber(signalNumber, 2)); if (reportThreadId) { ba += "thread:"; ba += trk::hexNumber(threadId, 3); @@ -548,7 +548,7 @@ QVector<QByteArray> gdbStartupSequence() } // namespace Symbian // Generic gdb server helpers: Read address/length off a memory -// command like 'm845,455','X845,455' +// command like 'm845,455','X845,455:' QPair<quint64, unsigned> parseGdbReadMemoryRequest(const QByteArray &cmd) { QPair<quint64, unsigned> rc(0, 0); @@ -559,7 +559,11 @@ QPair<quint64, unsigned> parseGdbReadMemoryRequest(const QByteArray &cmd) rc.first = cmd.mid(1, pos - 1).toULongLong(&ok, 16); if (!ok) return rc; - rc.second = cmd.mid(pos + 1).toUInt(&ok, 16); + const int colonPos = cmd.indexOf(':'); + if (colonPos == -1) + rc.second = cmd.mid(pos + 1).toUInt(&ok, 16); + else + rc.second = cmd.mid(pos + 1, colonPos - pos - 1 ).toUInt(&ok, 16); if (!ok) rc.first = 0; return rc; diff --git a/src/plugins/debugger/gdb/symbian.h b/src/plugins/debugger/gdb/symbian.h index 30012183c5377bd2888f5534c00acad2f978b3e3..ec34462e47a258804df514bf9daef5cc95049c92 100644 --- a/src/plugins/debugger/gdb/symbian.h +++ b/src/plugins/debugger/gdb/symbian.h @@ -73,6 +73,12 @@ struct MemoryRange QDebug operator<<(QDebug d, const MemoryRange &range); +// Signals to be passed to gdb server as stop reason (2 digit hex) +enum GdbServerStopReason { + gdbServerSignalTrap = 5, // Trap/Breakpoint, etc. + gdbServerSignalSegfault = 11 // Segfault +}; + namespace Symbian { enum CodeMode @@ -135,7 +141,7 @@ struct Snapshot QByteArray gdbQsThreadInfo() const; QByteArray gdbQThreadExtraInfo(const QByteArray &cmd) const; // Format a gdb T05 stop message with thread and register set - QByteArray gdbStopMessage(uint threadId, bool reportThreadId) const; + QByteArray gdbStopMessage(uint threadId, int signalNumber, bool reportThreadId) const; // Format a log message for memory access with some smartness about registers QByteArray memoryReadLogMessage(uint addr, uint threadId, bool verbose, const QByteArray &ba) const; // Gdb command parse helpers: 'salnext' diff --git a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp index 6e54e60eb54c9f3b314002b25f7077cde3291c19..65e328725e0ef74a29fb9857c90a6cee760fdb17 100644 --- a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp +++ b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp @@ -113,6 +113,7 @@ static inline QString startMsg(const trk::Session &session) TcfTrkGdbAdapter::TcfTrkGdbAdapter(GdbEngine *engine) : AbstractGdbAdapter(engine), m_running(false), + m_stopReason(0), m_trkDevice(new TcfTrkDevice(this)), m_gdbAckMode(true), m_uid(0), @@ -326,6 +327,9 @@ void TcfTrkGdbAdapter::tcftrkEvent(const TcfTrkEvent &e) m_snapshot.setThreadState(threadId, reason); // Update registers first, then report stopped m_running = false; + m_stopReason = reason.contains(QLatin1String("exception"), Qt::CaseInsensitive) + || reason.contains(QLatin1String("panic"), Qt::CaseInsensitive) ? + gdbServerSignalSegfault : gdbServerSignalTrap; m_trkDevice->sendRegistersGetMRangeCommand( TcfTrkCallback(this, &TcfTrkGdbAdapter::handleAndReportReadRegistersAfterStop), currentThreadContextId(), 0, @@ -689,7 +693,7 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) } else { //qDebug() << "Fetching single register"; m_trkDevice->sendRegistersGetMRangeCommand( - TcfTrkCallback(this, &TcfTrkGdbAdapter::handleAndReportReadRegistersAfterStop), + TcfTrkCallback(this, &TcfTrkGdbAdapter::handleAndReportReadRegister), currentThreadContextId(), registerNumber, 1); } } @@ -1306,7 +1310,7 @@ void TcfTrkGdbAdapter::handleAndReportReadRegistersAfterStop(const TcfTrkCommand handleReadRegisters(result); handleReadRegisters(result); const bool reportThread = m_session.tid != m_session.mainTid; - sendGdbServerMessage(m_snapshot.gdbStopMessage(m_session.tid, reportThread), stopMessage()); + sendGdbServerMessage(m_snapshot.gdbStopMessage(m_session.tid, m_stopReason, reportThread), stopMessage()); } void TcfTrkGdbAdapter::handleAndReportSetBreakpoint(const TcfTrkCommandResult &result) diff --git a/src/plugins/debugger/gdb/tcftrkgdbadapter.h b/src/plugins/debugger/gdb/tcftrkgdbadapter.h index ab69c13f256a4d6e73dc3fdea870ff305a47741c..71becf8e248962f581aceba24f5cf9db8ea638a3 100644 --- a/src/plugins/debugger/gdb/tcftrkgdbadapter.h +++ b/src/plugins/debugger/gdb/tcftrkgdbadapter.h @@ -137,6 +137,7 @@ private: QString m_gdbServerName; // 127.0.0.1:(2222+uid) bool m_running; + int m_stopReason; tcftrk::TcfTrkDevice *m_trkDevice; QSharedPointer<QIODevice> m_trkIODevice; diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp index 1961ab61cf44f67f78ac4f66a0d74672c6086618..05d1ba6bc4021c26ca47c044358dc7c7ab633070 100644 --- a/src/plugins/debugger/gdb/trkgdbadapter.cpp +++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp @@ -829,6 +829,17 @@ void TrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) sendGdbServerMessage("E20", msg.toLatin1()); } } // qPart/qXfer + + else if (cmd.startsWith("X")) { + logMessage(msgGdbPacket(QLatin1String("Write memory"))); + // X addr,length + sendGdbServerAck(); + const QPair<quint64, unsigned> addrLength = parseGdbReadMemoryRequest(cmd); + int pos = cmd.indexOf(':'); + m_snapshot.resetMemory(); + writeMemory(addrLength.first, cmd.mid(pos + 1, addrLength.second)); + } + else { logMessage(msgGdbPacket(QLatin1String("FIXME unknown: ") + QString::fromAscii(cmd)), LogWarning); @@ -963,10 +974,12 @@ void TrkGdbAdapter::handleTrkResult(const TrkResult &result) # if 1 // We almost always need register values, so get them // now before informing gdb about the stop.s - //qDebug() << "Auto-fetching registers"; + const int signalNumber = reason.contains(QLatin1String("exception"), Qt::CaseInsensitive) + || reason.contains(QLatin1String("panic"), Qt::CaseInsensitive) ? + gdbServerSignalSegfault : gdbServerSignalTrap; sendTrkMessage(0x12, TrkCB(handleAndReportReadRegistersAfterStop), - Launcher::readRegistersMessage(m_session.pid, m_session.tid)); + Launcher::readRegistersMessage(m_session.pid, m_session.tid), signalNumber); # else // As a source-line step typically consists of // several instruction steps, better avoid the multiple @@ -1181,7 +1194,8 @@ void TrkGdbAdapter::handleAndReportReadRegistersAfterStop(const TrkResult &resul { handleReadRegisters(result); const bool reportThread = m_session.tid != m_session.mainTid; - sendGdbServerMessage(m_snapshot.gdbStopMessage(m_session.tid, reportThread), + const int signalNumber = result.cookie.isValid() ? result.cookie.toInt() : int(gdbServerSignalTrap); + sendGdbServerMessage(m_snapshot.gdbStopMessage(m_session.tid, signalNumber, reportThread), "Stopped with registers in thread " + QByteArray::number(m_session.tid, 16)); } @@ -1441,6 +1455,29 @@ void TrkGdbAdapter::readMemory(uint addr, uint len, bool buffered) tryAnswerGdbMemoryRequest(buffered); } +void TrkGdbAdapter::writeMemory(uint addr, const QByteArray &data) +{ + Q_ASSERT(data.size() < (2 << 16)); + if (m_verbose > 2) { + logMessage(_("writeMemory %1 bytes from 0x%2 blocksize=%3 data=%4") + .arg(data.size()).arg(addr, 0, 16).arg(MemoryChunkSize).arg(QString::fromLatin1(data.toHex()))); + } + + sendTrkMessage(0x11, TrkCB(handleWriteMemory), + trkWriteMemoryMessage(addr, data)); +} + +void TrkGdbAdapter::handleWriteMemory(const TrkResult &result) +{ + logMessage(" RESULT: " + result.toString() + result.cookie.toString()); + if (result.errorCode()) { + logMessage("ERROR: " + result.errorString(), LogError); + sendGdbServerMessage("E01"); + return; + } + sendGdbServerMessage("OK"); +} + void TrkGdbAdapter::interruptInferior() { sendTrkMessage(0x1a, TrkCallback(), trkInterruptMessage(), "Interrupting..."); diff --git a/src/plugins/debugger/gdb/trkgdbadapter.h b/src/plugins/debugger/gdb/trkgdbadapter.h index 1e7873815e995ef78b5e5ea7cb3a844a232d0751..2ea7e1bcfab8f337fe0871e5c0bef3b46c7eae6a 100644 --- a/src/plugins/debugger/gdb/trkgdbadapter.h +++ b/src/plugins/debugger/gdb/trkgdbadapter.h @@ -162,12 +162,14 @@ private: void handleStep(const TrkResult &result); void handleReadRegisters(const TrkResult &result); void handleWriteRegister(const TrkResult &result); + void handleWriteMemory(const TrkResult &result); void reportToGdb(const TrkResult &result); void gdbSetCurrentThread(const QByteArray &cmd, const char *why); //void reportReadMemoryBuffered(const TrkResult &result); //void reportReadMemoryUnbuffered(const TrkResult &result); void readMemory(uint addr, uint len, bool buffered); + void writeMemory(uint addr, const QByteArray &data); void handleDirectTrk(const TrkResult &response); void directStep(uint addr); diff --git a/src/plugins/debugger/qml/qmladapter.cpp b/src/plugins/debugger/qml/qmladapter.cpp index fbea843d19ef05b20c404fc0cdff89d540ee1408..4c32f3c68a8c30b4d92df21afa1c0cae363c68b7 100644 --- a/src/plugins/debugger/qml/qmladapter.cpp +++ b/src/plugins/debugger/qml/qmladapter.cpp @@ -36,6 +36,8 @@ #include <QtCore/QTimer> #include <QtCore/QDebug> +#include <utils/qtcassert.h> + namespace Debugger { struct QmlAdapterPrivate { @@ -49,6 +51,7 @@ struct QmlAdapterPrivate { int m_connectionAttempts; int m_maxConnectionAttempts; QDeclarativeDebugConnection *m_conn; + QList<QByteArray> sendBuffer; }; QmlAdapterPrivate::QmlAdapterPrivate(DebuggerEngine *engine, QmlAdapter *q) : @@ -133,6 +136,16 @@ bool QmlAdapter::connectToViewer() return true; } +void QmlAdapter::sendMessage(const QByteArray &msg) +{ + if (d->m_qmlClient->status() == QDeclarativeDebugClient::Enabled) { + flushSendBuffer(); + d->m_qmlClient->sendMessage(msg); + } else { + d->sendBuffer.append(msg); + } +} + void QmlAdapter::connectionErrorOccurred(QAbstractSocket::SocketError socketError) { showConnectionErrorMessage(tr("Error: (%1) %2", "%1=error code, %2=error message") @@ -143,6 +156,19 @@ void QmlAdapter::connectionErrorOccurred(QAbstractSocket::SocketError socketErro emit connectionError(socketError); } +void QmlAdapter::clientStatusChanged(QDeclarativeDebugClient::Status status) +{ + QString serviceName; + if (QDeclarativeDebugClient *client = qobject_cast<QDeclarativeDebugClient*>(sender())) { + serviceName = client->name(); + } + + logServiceStatusChange(serviceName, status); + + if (status == QDeclarativeDebugClient::Enabled) + flushSendBuffer(); +} + void QmlAdapter::connectionStateChanged() { switch (d->m_conn->state()) { @@ -165,6 +191,7 @@ void QmlAdapter::connectionStateChanged() if (!d->m_mainClient) { d->m_mainClient = new QDeclarativeEngineDebug(d->m_conn, this); + logServiceStatusChange(QLatin1String("QmlObserver"), static_cast<QDeclarativeDebugClient::Status>(d->m_mainClient->status())); } createDebuggerClient(); @@ -185,11 +212,15 @@ void QmlAdapter::createDebuggerClient() { d->m_qmlClient = new Internal::QmlDebuggerClient(d->m_conn); + connect(d->m_qmlClient, SIGNAL(newStatus(QDeclarativeDebugClient::Status)), + this, SLOT(clientStatusChanged(QDeclarativeDebugClient::Status))); connect(d->m_engine.data(), SIGNAL(sendMessage(QByteArray)), - d->m_qmlClient, SLOT(slotSendMessage(QByteArray))); + this, SLOT(sendMessage(QByteArray))); connect(d->m_qmlClient, SIGNAL(messageWasReceived(QByteArray)), d->m_engine.data(), SLOT(messageReceived(QByteArray))); + logServiceStatusChange(d->m_qmlClient->name(), d->m_qmlClient->status()); + //engine->startSuccessful(); // FIXME: AAA: port to new debugger states } @@ -237,4 +268,33 @@ void QmlAdapter::setConnectionAttemptInterval(int interval) d->m_connectionTimer->setInterval(interval); } +void QmlAdapter::logServiceStatusChange(const QString &service, QDeclarativeDebugClient::Status newStatus) +{ + switch (newStatus) { + case QDeclarativeDebugClient::Unavailable: { + showConnectionErrorMessage(tr("Error: Cannot connect to debug service '%1'. Debugging functionality will be limited.").arg(service)); + emit serviceConnectionError(service); + break; + } + case QDeclarativeDebugClient::Enabled: { + showConnectionStatusMessage(tr("Connected to debug service '%1'.").arg(service)); + break; + } + + case QDeclarativeDebugClient::NotConnected: { + showConnectionStatusMessage(tr("Not connected to debug service '%1'.").arg(service)); + break; + } + } +} + +void QmlAdapter::flushSendBuffer() +{ + QTC_ASSERT(d->m_qmlClient->status() == QDeclarativeDebugClient::Enabled, return); + foreach (const QByteArray &msg, d->sendBuffer) { + d->m_qmlClient->sendMessage(msg); + } + d->sendBuffer.clear(); +} + } // namespace Debugger diff --git a/src/plugins/debugger/qml/qmladapter.h b/src/plugins/debugger/qml/qmladapter.h index 6118a05543f26b40f46f3520e11d3089e1b84941..64478569d7b526cbfca2c4495942412684755577 100644 --- a/src/plugins/debugger/qml/qmladapter.h +++ b/src/plugins/debugger/qml/qmladapter.h @@ -36,6 +36,7 @@ #include "debugger_global.h" #include <QtNetwork/QAbstractSocket> +#include "qmldebuggerclient.h" namespace QmlJsDebugClient { class QDeclarativeEngineDebug; @@ -72,15 +73,19 @@ public: void setMaxConnectionAttempts(int maxAttempts); void setConnectionAttemptInterval(int interval); + void logServiceStatusChange(const QString &service, QDeclarativeDebugClient::Status newStatus); + signals: - void aboutToDisconnect(); void connected(); void disconnected(); void connectionStartupFailed(); void connectionError(QAbstractSocket::SocketError socketError); + void serviceConnectionError(const QString serviceName); private slots: + void sendMessage(const QByteArray &msg); void connectionErrorOccurred(QAbstractSocket::SocketError socketError); + void clientStatusChanged(QDeclarativeDebugClient::Status status); void connectionStateChanged(); void pollInferior(); @@ -89,6 +94,7 @@ private: void createDebuggerClient(); void showConnectionStatusMessage(const QString &message); void showConnectionErrorMessage(const QString &message); + void flushSendBuffer(); private: QScopedPointer<QmlAdapterPrivate> d; diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp index 90489310c9bc1ee953f98fc4ecf5482f1dbe1862..6b232a69e57b20c201bef26686c3af64d47c10d6 100644 --- a/src/plugins/debugger/qml/qmlcppengine.cpp +++ b/src/plugins/debugger/qml/qmlcppengine.cpp @@ -222,6 +222,11 @@ void QmlCppEngine::attemptBreakpointSynchronization() static_cast<DebuggerEngine*>(d->m_qmlEngine)->attemptBreakpointSynchronization(); } +bool QmlCppEngine::acceptsBreakpoint(const Internal::BreakpointData *br) +{ + return d->m_cppEngine->acceptsBreakpoint(br) || d->m_qmlEngine->acceptsBreakpoint(br); +} + void QmlCppEngine::selectThread(int index) { d->m_cppEngine->selectThread(index); diff --git a/src/plugins/debugger/qml/qmlcppengine.h b/src/plugins/debugger/qml/qmlcppengine.h index 9bdf2a6781bf399f5cea19b7766b805735a62e43..d3bb72056d3c4c65e5a94925e1f55b907c58e372 100644 --- a/src/plugins/debugger/qml/qmlcppengine.h +++ b/src/plugins/debugger/qml/qmlcppengine.h @@ -52,6 +52,7 @@ public: virtual void updateAll(); virtual void attemptBreakpointSynchronization(); + virtual bool acceptsBreakpoint(const Internal::BreakpointData *br); virtual void selectThread(int index); virtual void assignValueInDebugger(const Internal::WatchData *w, const QString &expr, const QVariant &value); diff --git a/src/plugins/debugger/qml/qmldebuggerclient.cpp b/src/plugins/debugger/qml/qmldebuggerclient.cpp index a4d852fb93c47729c26da42198aed2c951ff70f6..99ebc0019c4f7a1623aee121ce40661a09bc5d03 100644 --- a/src/plugins/debugger/qml/qmldebuggerclient.cpp +++ b/src/plugins/debugger/qml/qmldebuggerclient.cpp @@ -37,21 +37,20 @@ namespace Internal { QmlDebuggerClient::QmlDebuggerClient(QmlJsDebugClient::QDeclarativeDebugConnection* client) : QDeclarativeDebugClient(QLatin1String("JSDebugger"), client) { - setEnabled(true); } QmlDebuggerClient::~QmlDebuggerClient() { } -void QmlDebuggerClient::messageReceived(const QByteArray &data) +void QmlDebuggerClient::statusChanged(Status status) { - emit messageWasReceived(data); + emit newStatus(status); } -void QmlDebuggerClient::slotSendMessage(const QByteArray &message) +void QmlDebuggerClient::messageReceived(const QByteArray &data) { - QDeclarativeDebugClient::sendMessage(message); + emit messageWasReceived(data); } } // Internal diff --git a/src/plugins/debugger/qml/qmldebuggerclient.h b/src/plugins/debugger/qml/qmldebuggerclient.h index 191e3570d52fbe007938de12ab1425f12dec9523..2345a56d923c1329905184cfcaa885958dab1510 100644 --- a/src/plugins/debugger/qml/qmldebuggerclient.h +++ b/src/plugins/debugger/qml/qmldebuggerclient.h @@ -44,12 +44,11 @@ public: virtual ~QmlDebuggerClient(); signals: + void newStatus(QDeclarativeDebugClient::Status status); void messageWasReceived(const QByteArray &data); -private Q_SLOTS: - void slotSendMessage(const QByteArray &message); - protected: + virtual void statusChanged(Status status); virtual void messageReceived(const QByteArray &data); }; diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index 80223489d6146aa6ac8eb60b2edcd00c8b0de808..9e1599aedc1931efc62bd8ed0087295110e4f833 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -30,6 +30,7 @@ #include "qmlengine.h" #include "qmladapter.h" +#include "debuggeractions.h" #include "debuggertooltip.h" #include "debuggerconstants.h" #include "debuggerplugin.h" @@ -217,6 +218,12 @@ void QmlEngine::connectionError(QAbstractSocket::SocketError socketError) plugin()->showMessage(tr("QML Debugger: Remote host closed connection."), StatusBar); } + +void QmlEngine::serviceConnectionError(const QString &serviceName) +{ + plugin()->showMessage(tr("QML Debugger: Couldn't connect to service '%1'.").arg(serviceName), StatusBar); +} + void QmlEngine::runEngine() { QTC_ASSERT(state() == EngineRunRequested, qDebug() << state()); @@ -315,10 +322,18 @@ void QmlEngine::shutdownEngine() void QmlEngine::setupEngine() { + if (!d->m_attachToRunningExternalApp + && !startParameters().qmlObserverAvailable + && Internal::theDebuggerBoolSetting(Internal::UseQmlObserver)) + { + showQmlObserverToolWarning(); + } + d->m_adapter->setMaxConnectionAttempts(MaxConnectionAttempts); d->m_adapter->setConnectionAttemptInterval(ConnectionAttemptDefaultInterval); connect(d->m_adapter, SIGNAL(connectionError(QAbstractSocket::SocketError)), SLOT(connectionError(QAbstractSocket::SocketError))); + connect(d->m_adapter, SIGNAL(serviceConnectionError(QString)), SLOT(serviceConnectionError(QString))); connect(d->m_adapter, SIGNAL(connected()), SLOT(connectionEstablished())); connect(d->m_adapter, SIGNAL(connectionStartupFailed()), SLOT(connectionStartupFailed())); @@ -452,6 +467,11 @@ void QmlEngine::attemptBreakpointSynchronization() } } +bool QmlEngine::acceptsBreakpoint(const Internal::BreakpointData *br) +{ + return (br->fileName.endsWith(QLatin1String("qml")) || br->fileName.endsWith(QLatin1String("js"))); +} + void QmlEngine::loadSymbols(const QString &moduleName) { Q_UNUSED(moduleName) @@ -646,9 +666,34 @@ void QmlEngine::messageReceived(const QByteArray &message) tr("<p>An Uncaught Exception occured in <i>%1</i>:</p><p>%2</p>") .arg(stackFrames.value(0).file, Qt::escape(error)); showMessageBox(QMessageBox::Information, tr("Uncaught Exception"), msg); - } + } else { + // + // Make breakpoint non-pending + // + QString file; + int line = -1; + + if (!stackFrames.isEmpty()) { + file = stackFrames.at(0).file; + line = stackFrames.at(0).line; + + if (isShadowBuildProject()) { + file = fromShadowBuildFilename(file); + } + } + Internal::BreakHandler *handler = breakHandler(); + for (int index = 0; index != handler->size(); ++index) { + Internal::BreakpointData *data = handler->at(index); + QString processedFilename = data->fileName; + if (processedFilename == file + && data->lineNumber == line) { + data->pending = false; + data->updateMarker(); + } + } + } } else if (command == "RESULT") { Internal::WatchData data; QByteArray iname; diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index 5f12e25eee55ca3ac3e68ae40437339517b111c0..d5087873cdd6a4b64db8f882848d38d5762e6a5a 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -93,6 +93,7 @@ private: void selectThread(int index); void attemptBreakpointSynchronization(); + bool acceptsBreakpoint(const Internal::BreakpointData *br); void assignValueInDebugger(const Internal::WatchData *w, const QString &expr, const QVariant &value); void loadSymbols(const QString &moduleName); @@ -117,6 +118,7 @@ private slots: void connectionEstablished(); void connectionStartupFailed(); void connectionError(QAbstractSocket::SocketError error); + void serviceConnectionError(const QString &service); private: void expandObject(const QByteArray &iname, quint64 objectId); diff --git a/src/plugins/designer/Designer.pluginspec b/src/plugins/designer/Designer.pluginspec index acc3a5823e2de589f5278e809af9cb0df73e9f78..3f6e81ea869fd4154de75fc1075feb45414c311a 100644 --- a/src/plugins/designer/Designer.pluginspec +++ b/src/plugins/designer/Designer.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Designer" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Designer" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,8 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Qt Designer integration.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> <!-- For compiling with CPP support enabled --> - <dependency name="CppEditor" version="2.0.91"/> + <dependency name="CppTools" version="2.1.81"/> + <dependency name="TextEditor" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/designer/designer_dependencies.pri b/src/plugins/designer/designer_dependencies.pri index 4c98d46428cb68a11a8cd92060d2221b259999df..f19342ea3ca0f2bbde0c1ad4cdf7fae25c74b016 100644 --- a/src/plugins/designer/designer_dependencies.pri +++ b/src/plugins/designer/designer_dependencies.pri @@ -1,3 +1,5 @@ -include(../../plugins/cppeditor/cppeditor.pri) +include(../../libs/cplusplus/cplusplus.pri) +include(../../plugins/cpptools/cpptools.pri) +include(../../plugins/texteditor/texteditor.pri) include(../../libs/utils/utils.pri) include(../../plugins/coreplugin/coreplugin.pri) diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp index 9f842de177f3c6c711a9e47b73a4dc2280b09a17..ea7c04cac7894c3d1da6af85b3cf0cc4637a6dbd 100644 --- a/src/plugins/designer/formeditorplugin.cpp +++ b/src/plugins/designer/formeditorplugin.cpp @@ -34,7 +34,6 @@ #ifdef CPP_ENABLED # include "formclasswizard.h" -# include <cppeditor/cppeditorconstants.h> # include "cppsettingspage.h" #endif diff --git a/src/plugins/designer/qtcreatorintegration.cpp b/src/plugins/designer/qtcreatorintegration.cpp index 4b741898ecb8fee336876fdc34c54f55d8da9f03..d05f9b122266e56b2bb6a49346f66e5259bbd889 100644 --- a/src/plugins/designer/qtcreatorintegration.cpp +++ b/src/plugins/designer/qtcreatorintegration.cpp @@ -37,8 +37,9 @@ #include <widgethost.h> #include <cpptools/cppmodelmanagerinterface.h> +#include <cpptools/cpprefactoringchanges.h> #include <cpptools/cpptoolsconstants.h> -#include <cplusplus/InsertionPointLocator.h> +#include <cpptools/insertionpointlocator.h> #include <cplusplus/Symbols.h> #include <cplusplus/Overview.h> #include <cplusplus/CoreTypes.h> @@ -282,9 +283,10 @@ static void addDeclaration(const Snapshot &snapshot, declaration += functionName; declaration += QLatin1String(";\n"); - InsertionPointLocator find(snapshot); - const InsertionLocation loc = find.methodDeclarationInClass( - fileName, cl, InsertionPointLocator::PrivateSlot); + CppTools::CppRefactoringChanges refactoring(snapshot); + CppTools::InsertionPointLocator find(&refactoring); + const CppTools::InsertionLocation loc = find.methodDeclarationInClass( + fileName, cl, CppTools::InsertionPointLocator::PrivateSlot); // //! \todo change this to use the Refactoring changes. diff --git a/src/plugins/fakevim/FakeVim.pluginspec b/src/plugins/fakevim/FakeVim.pluginspec index ec1aa495c75a90f25845ceb833e0c99d72e3dd51..d68f79f50904761f6b1737056985eecb87130326 100644 --- a/src/plugins/fakevim/FakeVim.pluginspec +++ b/src/plugins/fakevim/FakeVim.pluginspec @@ -1,4 +1,4 @@ -<plugin name="FakeVim" version="2.0.91" compatVersion="2.0.91"> +<plugin name="FakeVim" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -13,9 +13,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>VI-style keyboard navigation.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="CppEditor" version="2.0.91"/><!-- Plugin adds items to the editor's context menu --> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Core" version="2.0.91"/> + <dependency name="CppEditor" version="2.1.81"/><!-- Plugin adds items to the editor's context menu --> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 28266834d82e7904d2609380b2450072cc5948b9..326b66e3bde478a555c8002f2b4fd0b3a061258f 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -400,9 +400,7 @@ public: bool is(int c) const { - return m_xkey == c && (m_modifiers == 0 - || m_modifiers == Qt::ShiftModifier - || m_modifiers == Qt::GroupSwitchModifier); + return m_xkey == c && m_modifiers != Qt::ControlModifier; } bool isControl(int c) const @@ -896,7 +894,6 @@ public: int m_targetColumn; // -1 if past end of line int m_visualTargetColumn; // 'l' can move past eol in visual mode only - int m_cursorWidth; // auto-indent QString tabExpand(int len) const; @@ -998,7 +995,6 @@ void FakeVimHandler::Private::init() m_targetColumn = 0; m_visualTargetColumn = 0; m_movetype = MoveInclusive; - m_cursorWidth = EDITOR(cursorWidth()); m_justAutoIndented = 0; m_rangemode = RangeCharMode; m_ctrlVActive = false; @@ -1139,6 +1135,7 @@ EventResult FakeVimHandler::Private::handleEvent(QKeyEvent *ev) updateSelection(); exportSelection(); + updateCursorShape(); } return result; @@ -1168,7 +1165,6 @@ void FakeVimHandler::Private::setupWidget() void FakeVimHandler::Private::exportSelection() { - updateCursorShape(); int pos = position(); int anc = anchor(); m_oldInternalPosition = pos; @@ -1402,7 +1398,6 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) m_commandBuffer = QString(".,+%1!").arg(qAbs(endLine - beginLine)); //g.commandHistory.append(QString()); updateMiniBuffer(); - updateCursorShape(); return; } @@ -1527,7 +1522,6 @@ void FakeVimHandler::Private::finishMovement(const QString &dotCommand) resetCommandMode(); updateSelection(); updateMiniBuffer(); - updateCursorShape(); } void FakeVimHandler::Private::resetCommandMode() @@ -1940,7 +1934,6 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input) m_subsubmode = SearchSubSubMode; m_commandPrefix = QLatin1Char(m_lastSearchForward ? '/' : '?'); m_commandBuffer = QString(); - updateCursorShape(); updateMiniBuffer(); } } else if (input.is('`')) { @@ -2664,20 +2657,31 @@ EventResult FakeVimHandler::Private::handleInsertMode(const Input &input) enterCommandMode(); m_submode = NoSubMode; m_ctrlVActive = false; + m_opcount.clear(); + m_mvcount.clear(); } else if (m_ctrlVActive) { insertInInsertMode(input.raw()); } else if (input.isControl('v')) { m_ctrlVActive = true; + } else if (input.isControl('w')) { + int endPos = position(); + moveToWordBoundary(false, false, false); + int beginPos = position(); + Range range(beginPos, endPos, RangeCharMode); + removeText(range); } else if (input.isKey(Key_Insert)) { if (m_mode == ReplaceMode) m_mode = InsertMode; else m_mode = ReplaceMode; - updateCursorShape(); } else if (input.isKey(Key_Left)) { moveLeft(count()); setTargetColumn(); m_lastInsertion.clear(); + } else if (input.isControl(Key_Left)) { + moveToWordBoundary(false, false); + setTargetColumn(); + m_lastInsertion.clear(); } else if (input.isKey(Key_Down)) { //removeAutomaticIndentation(); m_submode = NoSubMode; @@ -2692,6 +2696,11 @@ EventResult FakeVimHandler::Private::handleInsertMode(const Input &input) moveRight(count()); setTargetColumn(); m_lastInsertion.clear(); + } else if (input.isControl(Key_Right)) { + moveToWordBoundary(false, true); + moveRight(); // we need one more move since we are in insert mode + setTargetColumn(); + m_lastInsertion.clear(); } else if (input.isKey(Key_Home)) { moveToStartOfLine(); setTargetColumn(); @@ -4495,16 +4504,12 @@ void FakeVimHandler::Private::redo() void FakeVimHandler::Private::updateCursorShape() { - if (m_mode == ExMode || m_subsubmode == SearchSubSubMode) { - EDITOR(setCursorWidth(0)); - EDITOR(setOverwriteMode(false)); - } else if (m_mode == InsertMode || isVisualMode()) { - EDITOR(setCursorWidth(m_cursorWidth)); - EDITOR(setOverwriteMode(false)); - } else { - EDITOR(setCursorWidth(m_cursorWidth)); - EDITOR(setOverwriteMode(true)); - } + bool thinCursor = m_mode == ExMode + || m_subsubmode == SearchSubSubMode + || m_mode == InsertMode + || isVisualMode() + || cursor().hasSelection(); + EDITOR(setOverwriteMode(!thinCursor)); } void FakeVimHandler::Private::enterReplaceMode() @@ -4515,7 +4520,6 @@ void FakeVimHandler::Private::enterReplaceMode() m_commandPrefix.clear(); m_lastInsertion.clear(); m_lastDeletion.clear(); - updateCursorShape(); } void FakeVimHandler::Private::enterInsertMode() @@ -4526,7 +4530,6 @@ void FakeVimHandler::Private::enterInsertMode() m_commandPrefix.clear(); m_lastInsertion.clear(); m_lastDeletion.clear(); - updateCursorShape(); } void FakeVimHandler::Private::enterCommandMode() @@ -4537,7 +4540,6 @@ void FakeVimHandler::Private::enterCommandMode() m_submode = NoSubMode; m_subsubmode = NoSubSubMode; m_commandPrefix.clear(); - updateCursorShape(); } void FakeVimHandler::Private::enterExMode() @@ -4546,7 +4548,6 @@ void FakeVimHandler::Private::enterExMode() m_submode = NoSubMode; m_subsubmode = NoSubSubMode; m_commandPrefix = ":"; - updateCursorShape(); } void FakeVimHandler::Private::recordJump() diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index f377d465391c38735504265684ed8028ae40fae8..2024be56a47429aa0fb6d887bd5209f689b03c09 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -50,7 +50,6 @@ #include <coreplugin/statusbarmanager.h> #include <projectexplorer/projectexplorerconstants.h> -#include <projectexplorer/session.h> #include <texteditor/basetextdocumentlayout.h> #include <texteditor/basetexteditor.h> @@ -90,8 +89,6 @@ using namespace FakeVim::Internal; using namespace TextEditor; using namespace Core; -using namespace ProjectExplorer; - namespace FakeVim { namespace Constants { diff --git a/src/plugins/find/Find.pluginspec b/src/plugins/find/Find.pluginspec index 2ac0f2475ecc0b20cec7793b0c2cc822d7d1a682..d9263df3f60f34c9290a0e33f9ec83c6f860ab20 100644 --- a/src/plugins/find/Find.pluginspec +++ b/src/plugins/find/Find.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Find" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Find" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,6 +14,6 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Provides the find widget and the hooks for find implementations.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/find/basetextfind.cpp b/src/plugins/find/basetextfind.cpp index d939c5b69a132a047bff05b789753bf5adc6758a..42059de72bc1cf5a69c2cd7a008077fbb0a7664a 100644 --- a/src/plugins/find/basetextfind.cpp +++ b/src/plugins/find/basetextfind.cpp @@ -329,7 +329,7 @@ void BaseTextFind::defineFindScope() { QTextCursor cursor = textCursor(); if (cursor.hasSelection() && cursor.block() != cursor.document()->findBlock(cursor.anchor())) { - d->m_findScopeStart = QTextCursor(document()->docHandle(), qMax(0, cursor.selectionStart()-1)); + d->m_findScopeStart = QTextCursor(document()->docHandle(), qMax(0, cursor.selectionStart())); d->m_findScopeEnd = QTextCursor(document()->docHandle(), cursor.selectionEnd()); d->m_findScopeVerticalBlockSelectionFirstColumn = -1; d->m_findScopeVerticalBlockSelectionLastColumn = -1; @@ -344,7 +344,7 @@ void BaseTextFind::defineFindScope() emit findScopeChanged(d->m_findScopeStart, d->m_findScopeEnd, d->m_findScopeVerticalBlockSelectionFirstColumn, d->m_findScopeVerticalBlockSelectionLastColumn); - cursor.setPosition(d->m_findScopeStart.position()+1); + cursor.setPosition(d->m_findScopeStart.position()); setTextCursor(cursor); } else { clearFindScope(); diff --git a/src/plugins/genericprojectmanager/GenericProjectManager.pluginspec b/src/plugins/genericprojectmanager/GenericProjectManager.pluginspec index 46f5e2e010905c2bd96cefe3a782310ebdaae5e1..89808c9a922a9c387e883d4702e3078a227c6125 100644 --- a/src/plugins/genericprojectmanager/GenericProjectManager.pluginspec +++ b/src/plugins/genericprojectmanager/GenericProjectManager.pluginspec @@ -1,4 +1,4 @@ -<plugin name="GenericProjectManager" version="2.0.91" compatVersion="2.0.91"> +<plugin name="GenericProjectManager" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,9 +14,8 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Generic support</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="CppTools" version="2.0.91"/> - <dependency name="CppEditor" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="CppTools" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/genericprojectmanager/genericprojectmanager_dependencies.pri b/src/plugins/genericprojectmanager/genericprojectmanager_dependencies.pri index 80118ad122efeb8ce51462307d35e13a66845e9f..78430f853b9fc827c611b0ddc4a0bbba37818f17 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager_dependencies.pri +++ b/src/plugins/genericprojectmanager/genericprojectmanager_dependencies.pri @@ -1,4 +1,3 @@ include(../../plugins/projectexplorer/projectexplorer.pri) include(../../plugins/cpptools/cpptools.pri) -include(../../plugins/cppeditor/cppeditor.pri) include(../../plugins/texteditor/texteditor.pri) diff --git a/src/plugins/git/ScmGit.pluginspec b/src/plugins/git/ScmGit.pluginspec index 82e8b8b099c2a4ae63b6c527fb78fe1f5b89a776..f1a87589de4fc7aa1693cf9e67d3f6bfcfaf3a10 100644 --- a/src/plugins/git/ScmGit.pluginspec +++ b/src/plugins/git/ScmGit.pluginspec @@ -1,4 +1,4 @@ -<plugin name="ScmGit" version="2.0.91" compatVersion="2.0.91"> +<plugin name="ScmGit" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,9 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Git integration.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Core" version="2.0.91"/> - <dependency name="VCSBase" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="VCSBase" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 48f5c5a893dc016e69224411ab0643469ca3ad5d..9837b7c35a7ad42aab10f499a5ba9d0273e9e122 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -50,6 +50,7 @@ #include <texteditor/itexteditor.h> #include <utils/qtcassert.h> #include <utils/synchronousprocess.h> +#include <utils/environment.h> #include <vcsbase/vcsbaseeditor.h> #include <vcsbase/vcsbaseoutputwindow.h> #include <vcsbase/vcsbaseplugin.h> @@ -1922,6 +1923,67 @@ QString GitClient::readConfigValue(const QString &workingDirectory, const QStrin return readConfig(workingDirectory, QStringList(configVar)).remove(QLatin1Char('\n')); } +bool GitClient::cloneRepository(const QString &directory,const QByteArray &url) +{ + QDir workingDirectory(directory); + const unsigned flags = VCSBase::VCSBasePlugin::SshPasswordPrompt | + VCSBase::VCSBasePlugin::ShowStdOutInLogWindow| + VCSBase::VCSBasePlugin::ShowSuccessMessage; + + if (workingDirectory.exists()) { + if (!synchronousInit(workingDirectory.path())) + return false; + + QStringList arguments(QLatin1String("remote")); + arguments << QLatin1String("add") << QLatin1String("origin") << url; + if (!fullySynchronousGit(workingDirectory.path(), arguments, 0, 0, true)) + return false; + + arguments.clear(); + arguments << QLatin1String("fetch"); + const Utils::SynchronousProcessResponse resp = + synchronousGit(workingDirectory.path(), arguments, flags); + if (resp.result != Utils::SynchronousProcessResponse::Finished) + return false; + + arguments.clear(); + arguments << QLatin1String("config") + << QLatin1String("branch.master.remote") + << QLatin1String("origin"); + if (!fullySynchronousGit(workingDirectory.path(), arguments, 0, 0, true)) + return false; + + arguments.clear(); + arguments << QLatin1String("config") + << QLatin1String("branch.master.merge") + << QLatin1String("refs/heads/master"); + if (!fullySynchronousGit(workingDirectory.path(), arguments, 0, 0, true)) + return false; + + return true; + } else { + QStringList arguments(QLatin1String("clone")); + arguments << url << workingDirectory.dirName(); + workingDirectory.cdUp(); + const Utils::SynchronousProcessResponse resp = + synchronousGit(workingDirectory.path(), arguments, flags); + return resp.result == Utils::SynchronousProcessResponse::Finished; + } +} + +QString GitClient::vcsGetRepositoryURL(const QString &directory) +{ + QStringList arguments(QLatin1String("config")); + QByteArray outputText; + + arguments << QLatin1String("remote.origin.url"); + + if (fullySynchronousGit(directory, arguments, &outputText, 0, false)) { + return commandOutputFromLocal8Bit(outputText); + } + return QString(); +} + GitSettings GitClient::settings() const { return m_settings; diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 9de9844788958d65860cd3a4ce5df06c3e5b3be8..828a4e090943fd5ca02c920f58984ea17241f91e 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -158,6 +158,8 @@ public: unsigned gitVersion(bool silent, QString *errorMessage = 0); QString gitVersionString(bool silent, QString *errorMessage = 0); + bool cloneRepository(const QString &directory, const QByteArray &url); + QString vcsGetRepositoryURL(const QString &directory); bool synchronousFetch(const QString &workingDirectory); bool synchronousPull(const QString &workingDirectory); bool synchronousPush(const QString &workingDirectory); diff --git a/src/plugins/git/gitsettings.cpp b/src/plugins/git/gitsettings.cpp index 2a0110f23dc50ef667a1ddda3b40164c2788ba66..b860ce8790de91f590e66ba0fba81aa7e1b3cae2 100644 --- a/src/plugins/git/gitsettings.cpp +++ b/src/plugins/git/gitsettings.cpp @@ -128,11 +128,12 @@ QString GitSettings::gitBinaryPath(bool *ok, QString *errorMessage) const if (errorMessage) errorMessage->clear(); const QString binary = QLatin1String(Constants::GIT_BINARY); + QString currentPath = path; // Easy, git is assumed to be elsewhere accessible if (!adoptPath) - return binary; + currentPath = QString::fromLocal8Bit(qgetenv("PATH")); // Search in path? - const QString pathBinary = Utils::SynchronousProcess::locateBinary(path, binary); + const QString pathBinary = Utils::SynchronousProcess::locateBinary(currentPath, binary); if (pathBinary.isEmpty()) { if (ok) *ok = false; @@ -144,5 +145,5 @@ QString GitSettings::gitBinaryPath(bool *ok, QString *errorMessage) const return pathBinary; } -} -} +} // namespace Internal +} // namespace Git diff --git a/src/plugins/git/gitsettings.h b/src/plugins/git/gitsettings.h index 0c73c454766e6f8b68716102486f5274031ad4ad..81cd280c6fe89925ac947030f3c403a3384a1923 100644 --- a/src/plugins/git/gitsettings.h +++ b/src/plugins/git/gitsettings.h @@ -47,6 +47,7 @@ struct GitSettings void fromSettings(QSettings *); void toSettings(QSettings *) const; + /** Return the full path to the git executable */ QString gitBinaryPath(bool *ok = 0, QString *errorMessage = 0) const; bool equals(const GitSettings &s) const; diff --git a/src/plugins/git/gitsubmiteditorwidget.cpp b/src/plugins/git/gitsubmiteditorwidget.cpp index 1a02f4a8a184b77af480d6449682c065387e83f8..d58a927fe2b12dc60278a3b47d84b5966cb68fb3 100644 --- a/src/plugins/git/gitsubmiteditorwidget.cpp +++ b/src/plugins/git/gitsubmiteditorwidget.cpp @@ -34,10 +34,13 @@ #include <texteditor/fontsettings.h> #include <texteditor/texteditorconstants.h> +#include <QtGui/QLineEdit> +#include <QtGui/QRegExpValidator> #include <QtGui/QSyntaxHighlighter> #include <QtGui/QTextEdit> #include <QtCore/QDebug> +#include <QtCore/QDir> #include <QtCore/QRegExp> namespace Git { @@ -116,11 +119,19 @@ GitSubmitEditorWidget::GitSubmitEditorWidget(QWidget *parent) : m_gitSubmitPanelUi.setupUi(m_gitSubmitPanel); insertTopWidget(m_gitSubmitPanel); new GitSubmitHighlighter(descriptionEdit()); + + m_emailValidator = new QRegExpValidator(QRegExp(QLatin1String("[^@ ]+@[^@ ]+\\.[a-zA-Z]+")), this); + + m_gitSubmitPanelUi.emailLineEdit->setValidator(m_emailValidator); + connect(m_gitSubmitPanelUi.authorLineEdit, SIGNAL(textChanged(QString)), + this, SLOT(authorInformationChanged())); + connect(m_gitSubmitPanelUi.emailLineEdit, SIGNAL(textChanged(QString)), + this, SLOT(authorInformationChanged())); } void GitSubmitEditorWidget::setPanelInfo(const GitSubmitEditorPanelInfo &info) { - m_gitSubmitPanelUi.repositoryLabel->setText(info.repository); + m_gitSubmitPanelUi.repositoryLabel->setText(QDir::toNativeSeparators(info.repository)); m_gitSubmitPanelUi.branchLabel->setText(info.branch); } @@ -136,6 +147,32 @@ void GitSubmitEditorWidget::setPanelData(const GitSubmitEditorPanelData &data) { m_gitSubmitPanelUi.authorLineEdit->setText(data.author); m_gitSubmitPanelUi.emailLineEdit->setText(data.email); + authorInformationChanged(); +} + +bool GitSubmitEditorWidget::canSubmit() const +{ + if (m_gitSubmitPanelUi.authorLineEdit->text().isEmpty() + || !emailIsValid()) + return false; + return SubmitEditorWidget::canSubmit(); +} + +void GitSubmitEditorWidget::authorInformationChanged() +{ + m_gitSubmitPanelUi.invalidAuthorLabel-> + setVisible(m_gitSubmitPanelUi.authorLineEdit->text().isEmpty()); + m_gitSubmitPanelUi.invalidEmailLabel-> + setVisible(!emailIsValid()); + + updateSubmitAction(); +} + +bool GitSubmitEditorWidget::emailIsValid() const +{ + int pos = m_gitSubmitPanelUi.emailLineEdit->cursorPosition(); + QString text = m_gitSubmitPanelUi.emailLineEdit->text(); + return m_emailValidator->validate(text, pos) == QValidator::Acceptable; } } // namespace Internal diff --git a/src/plugins/git/gitsubmiteditorwidget.h b/src/plugins/git/gitsubmiteditorwidget.h index 40d744641fd68d0965c951322b15373fb2a49368..64e4c5aac3c90d3e1937d84adcdc3833082ac6dc 100644 --- a/src/plugins/git/gitsubmiteditorwidget.h +++ b/src/plugins/git/gitsubmiteditorwidget.h @@ -31,8 +31,13 @@ #define GITSUBMITEDITORWIDGET_H #include "ui_gitsubmitpanel.h" + #include <utils/submiteditorwidget.h> +QT_BEGIN_NAMESPACE +class QValidator; +QT_END_NAMESPACE + namespace Git { namespace Internal { @@ -49,6 +54,7 @@ struct GitSubmitEditorPanelData; class GitSubmitEditorWidget : public Utils::SubmitEditorWidget { + Q_OBJECT public: explicit GitSubmitEditorWidget(QWidget *parent = 0); @@ -59,9 +65,18 @@ public: void setPanelInfo(const GitSubmitEditorPanelInfo &info); +protected: + bool canSubmit() const; + +private slots: + void authorInformationChanged(); + private: + bool emailIsValid() const; + QWidget *m_gitSubmitPanel; Ui::GitSubmitPanel m_gitSubmitPanelUi; + QValidator *m_emailValidator; }; } // namespace Internal diff --git a/src/plugins/git/gitsubmitpanel.ui b/src/plugins/git/gitsubmitpanel.ui index 7dfa9b3ba0fbc4973fe988caedd157a5cd22363c..c790299aa11cd9ed1e74495d87893dacd34067d4 100644 --- a/src/plugins/git/gitsubmitpanel.ui +++ b/src/plugins/git/gitsubmitpanel.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>374</width> - <height>229</height> + <width>364</width> + <height>172</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout"> @@ -59,49 +59,96 @@ <property name="title"> <string>Commit Information</string> </property> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="authorLabel"> - <property name="text"> - <string>Author:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="authorLineEdit"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="emailLabel"> - <property name="text"> - <string>Email:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="emailLineEdit"/> - </item> - </layout> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="authorLabel"> + <property name="text"> + <string>Author:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="authorLineEdit"> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + </widget> </item> - <item> + <item row="0" column="2"> + <widget class="QLabel" name="invalidAuthorLabel"> + <property name="minimumSize"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + <property name="text"> + <string/> + </property> + <property name="pixmap"> + <pixmap resource="../projectexplorer/projectexplorer.qrc">:/projectexplorer/images/compile_error.png</pixmap> + </property> + </widget> + </item> + <item row="0" column="3"> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> + <property name="sizeType"> + <enum>QSizePolicy::MinimumExpanding</enum> + </property> <property name="sizeHint" stdset="0"> <size> - <width>161</width> + <width>5</width> <height>20</height> </size> </property> </spacer> </item> + <item row="1" column="0"> + <widget class="QLabel" name="emailLabel"> + <property name="text"> + <string>Email:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="emailLineEdit"> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QLabel" name="invalidEmailLabel"> + <property name="minimumSize"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + <property name="text"> + <string/> + </property> + <property name="pixmap"> + <pixmap resource="../projectexplorer/projectexplorer.qrc">:/projectexplorer/images/compile_error.png</pixmap> + </property> + </widget> + </item> </layout> </widget> </item> </layout> </widget> - <resources/> + <resources> + <include location="../projectexplorer/projectexplorer.qrc"/> + </resources> <connections/> </ui> diff --git a/src/plugins/git/gitversioncontrol.cpp b/src/plugins/git/gitversioncontrol.cpp index 370e20bb2704a1ab835183519f4e09126f6a290c..ad6cc63c2da5c7dd9e3532ff0376a7acb1f2962e 100644 --- a/src/plugins/git/gitversioncontrol.cpp +++ b/src/plugins/git/gitversioncontrol.cpp @@ -87,6 +87,10 @@ bool GitVersionControl::supportsOperation(Operation operation) const case AnnotateOperation: rc = true; break; + case CheckoutOperation: + case GetRepositoryRootOperation: + rc = true; + break; } return rc; } @@ -121,6 +125,17 @@ bool GitVersionControl::vcsCreateRepository(const QString &directory) { return gitClient()->synchronousInit(directory); } + +bool GitVersionControl::vcsCheckout(const QString &directory, const QByteArray &url) +{ + return gitClient()->cloneRepository(directory,url); +} + +QString GitVersionControl::vcsGetRepositoryURL(const QString &directory) +{ + return gitClient()->vcsGetRepositoryURL(directory); +} + /* Snapshots are implement using stashes, relying on stash messages for * naming as the actual stash names (stash{n}) are rotated as one adds stashes. * Note that the snapshot interface does not care whether we have an unmodified diff --git a/src/plugins/git/gitversioncontrol.h b/src/plugins/git/gitversioncontrol.h index 35504747a7ca3ecf284cca76ec081b85ee369ca8..0d7276a392df0eb53060c88f3e4937d25f6a9f2e 100644 --- a/src/plugins/git/gitversioncontrol.h +++ b/src/plugins/git/gitversioncontrol.h @@ -54,6 +54,8 @@ public: virtual bool vcsDelete(const QString &filename); virtual bool vcsMove(const QString &from, const QString &to); virtual bool vcsCreateRepository(const QString &directory); + virtual bool vcsCheckout(const QString &directory, const QByteArray &url); + virtual QString vcsGetRepositoryURL(const QString &directory); virtual QString vcsCreateSnapshot(const QString &topLevel); virtual QStringList vcsSnapshots(const QString &topLevel); virtual bool vcsRestoreSnapshot(const QString &topLevel, const QString &name); diff --git a/src/plugins/helloworld/HelloWorld.pluginspec b/src/plugins/helloworld/HelloWorld.pluginspec index 40b8a493a7007ae6b6e2f7fdaa28094fc555ed23..f2b06679bd0fb6d5f82c7e787332c4e59973e3fa 100644 --- a/src/plugins/helloworld/HelloWorld.pluginspec +++ b/src/plugins/helloworld/HelloWorld.pluginspec @@ -1,4 +1,4 @@ -<plugin name="HelloWorld" version="2.0.91" compatVersion="2.0.91" experimental="true"> +<plugin name="HelloWorld" version="2.1.81" compatVersion="2.1.81" experimental="true"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -13,6 +13,6 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Hello World sample plugin.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/help/Help.pluginspec b/src/plugins/help/Help.pluginspec index aa1238ac0d96b5ba8dfe90a077f2368bfac81d7f..fc80949bf40d70b1ec8934d5c962cfbdc0ffb05e 100644 --- a/src/plugins/help/Help.pluginspec +++ b/src/plugins/help/Help.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Help" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Help" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,8 +14,8 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Help system.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="Find" version="2.0.91"/> - <dependency name="Locator" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="Find" version="2.1.81"/> + <dependency name="Locator" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/help/generalsettingspage.ui b/src/plugins/help/generalsettingspage.ui index 0bcd55ef5e7c45ccff1401a7c869296123a3f2c0..2a49b659828d7e86fba9f17abe3d26ca1ec53285 100644 --- a/src/plugins/help/generalsettingspage.ui +++ b/src/plugins/help/generalsettingspage.ui @@ -368,7 +368,7 @@ <string>Switch to editor context after last help page is closed.</string> </property> <property name="text"> - <string>Return to editor on closing the last page</string> + <string>Return to editor on closing the last page</string> </property> </widget> </item> diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 55438fa64c158a8e1a779e600b1ecabb9e03fa6c..043e3ed2d444f3707614087bde6a033231f969d0 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -73,6 +73,7 @@ #include <QtCore/QTimer> #include <QtCore/QTranslator> #include <QtCore/qplugin.h> +#include <QtCore/QRegExp> #include <QtGui/QAction> #include <QtGui/QComboBox> @@ -839,19 +840,49 @@ void HelpPlugin::activateContext() "available.</center></body></html>").arg(m_idFromContext)); viewer->setSource(QUrl()); } else { - const QUrl &source = *links.begin(); + int version = 0; + const QRegExp exp("(\\d+)"); + QUrl source = *links.begin(); + const QLatin1String qtRefDoc = QLatin1String("com.trolltech.qt"); + + // workaround to show the latest qt version + foreach (const QUrl &tmp, links) { + const QString &authority = tmp.authority(); + if (authority.startsWith(qtRefDoc)) { + if (exp.indexIn(authority) >= 0) { + const int tmpVersion = exp.cap(1).toInt(); + if (tmpVersion > version) { + source = tmp; + version = tmpVersion; + } + } + } + } + const QUrl &oldSource = viewer->source(); if (source != oldSource) { #if !defined(QT_NO_WEBKIT) viewer->stop(); #endif + const QString &fragment = source.fragment(); + const bool isQtRefDoc = source.authority().startsWith(qtRefDoc); + if (isQtRefDoc) { + // workaround for qt properties + m_idFromContext = fragment; + + if (!m_idFromContext.isEmpty()) { + connect(viewer, SIGNAL(loadFinished(bool)), this, + SLOT(highlightSearchTerms())); + } + } + viewer->setSource(source); - connect(viewer, SIGNAL(loadFinished(bool)), this, - SLOT(highlightSearchTerms())); - if (source.toString().remove(source.fragment()) - == oldSource.toString().remove(oldSource.fragment())) { + if (isQtRefDoc && !m_idFromContext.isEmpty()) { + if (source.toString().remove(fragment) + == oldSource.toString().remove(oldSource.fragment())) { highlightSearchTerms(); + } } } else { #if !defined(QT_NO_WEBKIT) @@ -1011,11 +1042,6 @@ void HelpPlugin::highlightSearchTerms() SLOT(highlightSearchTerms())); #if !defined(QT_NO_WEBKIT) - const QString &attrValue = m_idFromContext.mid(m_idFromContext - .lastIndexOf(QChar(':')) + 1); - if (attrValue.isEmpty()) - return; - const QWebElement &document = viewer->page()->mainFrame()->documentElement(); const QWebElementCollection &collection = document.findAll(QLatin1String("h3.fn a")); @@ -1031,14 +1057,15 @@ void HelpPlugin::highlightSearchTerms() parent.setStyleProperty(property, m_styleProperty); } - if (attrValue == name || name.startsWith(attrValue + QLatin1Char('-'))) { + if (m_idFromContext == name + || name.startsWith(m_idFromContext + QLatin1Char('-'))) { QWebElement parent = element.parent(); m_styleProperty = parent.styleProperty(property, QWebElement::ComputedStyle); parent.setStyleProperty(property, QLatin1String("yellow")); } } - m_oldAttrValue = attrValue; + m_oldAttrValue = m_idFromContext; #endif } } diff --git a/src/plugins/imageviewer/ImageViewer.pluginspec b/src/plugins/imageviewer/ImageViewer.pluginspec index 3f4c6933b00cb8eca340c271140c21a0b12595b0..d4a01b072804b686c50b93e8e43895c048ba6166 100644 --- a/src/plugins/imageviewer/ImageViewer.pluginspec +++ b/src/plugins/imageviewer/ImageViewer.pluginspec @@ -1,4 +1,4 @@ -<plugin name="ImageViewer" version="2.0.91" compatVersion="2.0.91"> +<plugin name="ImageViewer" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Denis Mingulov</copyright> <license> @@ -14,6 +14,6 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Image Viewer component.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/locator/Locator.pluginspec b/src/plugins/locator/Locator.pluginspec index 45e30fee4a7d00ac3a696a31f03503d5cd668ed1..96ca3145d6b03a52927d0be2e8e47cae8aed7862 100644 --- a/src/plugins/locator/Locator.pluginspec +++ b/src/plugins/locator/Locator.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Locator" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Locator" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,6 +14,6 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Provides the Locator widget and the hooks for Locator filter implementations.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/mercurial/Mercurial.pluginspec b/src/plugins/mercurial/Mercurial.pluginspec index 8db3981264a3cedea092d84c2f56d2f3ae5cff1f..473be1f488571d5a665c4f86effe344997586ae3 100644 --- a/src/plugins/mercurial/Mercurial.pluginspec +++ b/src/plugins/mercurial/Mercurial.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Mercurial" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Mercurial" version="2.1.81" compatVersion="2.1.81"> <vendor>Brian McGillion</vendor> <copyright>(C) 2008-2009 Brian McGillion</copyright> <license> @@ -14,9 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Mercurial integration.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Core" version="2.0.91"/> - <dependency name="VCSBase" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="VCSBase" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp index 3cc71ca7aa0ce15fa50796d5ba85d5c11483ea1b..68db76e2901bb2434f66ec865e4e0e22c03401ce 100644 --- a/src/plugins/mercurial/mercurialclient.cpp +++ b/src/plugins/mercurial/mercurialclient.cpp @@ -497,6 +497,64 @@ bool MercurialClient::pushSync(const QString &repositoryRoot, const QString &rep return resp.result == Utils::SynchronousProcessResponse::Finished; } +bool MercurialClient::clone(const QString &directory, const QString &url) +{ + QDir workingDirectory(directory); + QByteArray output; + const unsigned flags = VCSBase::VCSBasePlugin::SshPasswordPrompt | + VCSBase::VCSBasePlugin::ShowStdOutInLogWindow | + VCSBase::VCSBasePlugin::ShowSuccessMessage; + + if (workingDirectory.exists()) { + // Let's make first init + QStringList arguments(QLatin1String("init")); + if (!executeHgFullySynchronously(workingDirectory.path(), arguments, &output)) { + return false; + } + + // Then pull remote repository + arguments.clear(); + arguments << QLatin1String("pull") << url; + const Utils::SynchronousProcessResponse resp1 = + executeHgSynchronously(workingDirectory.path(), arguments, flags); + if (resp1.result != Utils::SynchronousProcessResponse::Finished) { + return false; + } + + // By now, there is no hgrc file -> create it + QFile hgrc(workingDirectory.path()+"/.hg/hgrc"); + hgrc.open(QIODevice::WriteOnly); + hgrc.write(QString("[paths]\ndefault = %1\n").arg(QString(url)).toUtf8()); + hgrc.close(); + + // And last update repository + arguments.clear(); + arguments << QLatin1String("update"); + const Utils::SynchronousProcessResponse resp2 = + executeHgSynchronously(workingDirectory.path(), arguments, flags); + return resp2.result == Utils::SynchronousProcessResponse::Finished; + } else { + QStringList arguments(QLatin1String("clone")); + arguments << url << workingDirectory.dirName(); + workingDirectory.cdUp(); + const Utils::SynchronousProcessResponse resp = + executeHgSynchronously(workingDirectory.path(), arguments, flags); + return resp.result == Utils::SynchronousProcessResponse::Finished; + } +} + +QString MercurialClient::vcsGetRepositoryURL(const QString &directory) +{ + QByteArray output; + + QStringList arguments(QLatin1String("showconfig")); + arguments << QLatin1String("paths.default"); + + if (executeHgFullySynchronously(directory, arguments, &output)) + return QString::fromLocal8Bit(output);; + return QString(); +} + void MercurialClient::incoming(const QString &repositoryRoot, const QString &repository) { QStringList args; diff --git a/src/plugins/mercurial/mercurialclient.h b/src/plugins/mercurial/mercurialclient.h index f6ea3a3d28b47db515cdd7330bf8e4db5309ed12..8750d0fbb237fb7b5d5a313010c29ac063f227ef 100644 --- a/src/plugins/mercurial/mercurialclient.h +++ b/src/plugins/mercurial/mercurialclient.h @@ -100,6 +100,8 @@ public: const QString &commiterInfo, const QString &commitMessageFile, bool autoAddRemove = false); + bool clone(const QString &directory, const QString &url); + QString vcsGetRepositoryURL(const QString &directory); static QString findTopLevelForFile(const QFileInfo &file); diff --git a/src/plugins/mercurial/mercurialcontrol.cpp b/src/plugins/mercurial/mercurialcontrol.cpp index 61342dc3507b8505d16ff887b6a8c9352c248842..dc84b9919b437c6e44e7f61e6b6412930757d5e4 100644 --- a/src/plugins/mercurial/mercurialcontrol.cpp +++ b/src/plugins/mercurial/mercurialcontrol.cpp @@ -65,6 +65,8 @@ bool MercurialControl::supportsOperation(Operation operation) const case Core::IVersionControl::MoveOperation: case Core::IVersionControl::CreateRepositoryOperation: case Core::IVersionControl::AnnotateOperation: + case Core::IVersionControl::CheckoutOperation: + case Core::IVersionControl::GetRepositoryRootOperation: break; case Core::IVersionControl::OpenOperation: case Core::IVersionControl::SnapshotOperations: @@ -142,6 +144,16 @@ bool MercurialControl::sccManaged(const QString &filename) return mercurialClient->manifestSync(topLevel, topLevelDir.relativeFilePath(filename)); } +bool MercurialControl::vcsCheckout(const QString &directory, const QByteArray &url) +{ + return mercurialClient->clone(directory,url); +} + +QString MercurialControl::vcsGetRepositoryURL(const QString &directory) +{ + return mercurialClient->vcsGetRepositoryURL(directory); +} + void MercurialControl::changed(const QVariant &v) { switch (v.type()) { diff --git a/src/plugins/mercurial/mercurialcontrol.h b/src/plugins/mercurial/mercurialcontrol.h index b74fce99ff8fa4a1e53a7c74d0178d8dd5dacfa9..3f0465d380cb7ff8d4d5498f7dcd40efba7043ea 100644 --- a/src/plugins/mercurial/mercurialcontrol.h +++ b/src/plugins/mercurial/mercurialcontrol.h @@ -57,6 +57,8 @@ public: bool vcsDelete(const QString &filename); bool vcsMove(const QString &from, const QString &to); bool vcsCreateRepository(const QString &directory); + bool vcsCheckout(const QString &directory, const QByteArray &url); + QString vcsGetRepositoryURL(const QString &directory); QString vcsCreateSnapshot(const QString &topLevel); QStringList vcsSnapshots(const QString &topLevel); bool vcsRestoreSnapshot(const QString &topLevel, const QString &name); diff --git a/src/plugins/perforce/Perforce.pluginspec b/src/plugins/perforce/Perforce.pluginspec index 7914a3835f36555a5f9ddf41e185781bef66ee6b..7229d18ce9a84d3fe3a4c44891f1849426724d22 100644 --- a/src/plugins/perforce/Perforce.pluginspec +++ b/src/plugins/perforce/Perforce.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Perforce" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Perforce" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,9 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Perforce integration.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Core" version="2.0.91"/> - <dependency name="VCSBase" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="VCSBase" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/perforce/perforceversioncontrol.cpp b/src/plugins/perforce/perforceversioncontrol.cpp index 0f0a5e81905b24bd18b217dd8658a239840dbe0f..8e755a960aff9b3ce0cca1a3d4d18297821b538a 100644 --- a/src/plugins/perforce/perforceversioncontrol.cpp +++ b/src/plugins/perforce/perforceversioncontrol.cpp @@ -59,6 +59,8 @@ bool PerforceVersionControl::supportsOperation(Operation operation) const return true; case CreateRepositoryOperation: case SnapshotOperations: + case CheckoutOperation: + case GetRepositoryRootOperation: break; } return false; @@ -128,6 +130,16 @@ bool PerforceVersionControl::vcsAnnotate(const QString &file, int line) return true; } +bool PerforceVersionControl::vcsCheckout(const QString &,const QByteArray &) +{ + return false; +} + +QString PerforceVersionControl::vcsGetRepositoryURL(const QString &) +{ + return QString(); +} + bool PerforceVersionControl::managesDirectory(const QString &directory, QString *topLevel) const { const bool rc = m_plugin->managesDirectory(directory, topLevel); diff --git a/src/plugins/perforce/perforceversioncontrol.h b/src/plugins/perforce/perforceversioncontrol.h index b3a01f7a6c0fbcffa4065c2ebacbb35e2610566c..ed688d68503ce34cb799986d6e3afe6a01904966 100644 --- a/src/plugins/perforce/perforceversioncontrol.h +++ b/src/plugins/perforce/perforceversioncontrol.h @@ -55,6 +55,8 @@ public: virtual bool vcsDelete(const QString &filename); virtual bool vcsMove(const QString &from, const QString &to); virtual bool vcsCreateRepository(const QString &directory); + virtual bool vcsCheckout(const QString &directory, const QByteArray &url); + virtual QString vcsGetRepositoryURL(const QString &directory); virtual QString vcsCreateSnapshot(const QString &topLevel); virtual QStringList vcsSnapshots(const QString &topLevel); virtual bool vcsRestoreSnapshot(const QString &topLevel, const QString &name); diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index 9702fb785d510a7e69a601189702ddc2af6f8249..67490abf3b8af313598dbc9acb5905938a6e57c8 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -19,7 +19,6 @@ SUBDIRS = plugin_coreplugin \ plugin_cvs \ plugin_cpptools \ plugin_qt4projectmanager \ -# plugin_snippets \ # buggy and annoying plugin_locator \ plugin_debugger \ # plugin_qtestlib \ # this seems to be dead @@ -38,20 +37,22 @@ SUBDIRS = plugin_coreplugin \ plugin_tasklist \ debugger/dumper.pro -contains(QT_CONFIG, declarative) { +include(../../qtcreator.pri) +contains(QT_CONFIG, declarative) { SUBDIRS += \ plugin_qmlprojectmanager \ plugin_qmljsinspector include(../private_headers.pri) exists($${QT_PRIVATE_HEADERS}/QtDeclarative/private/qdeclarativecontext_p.h) { - isEqual(QT_MINOR_VERSION, 7):greaterThan(QT_PATCH_VERSION, 0) { + + minQtVersion(4, 7, 1) { SUBDIRS += plugin_qmldesigner } else { warning() warning("QmlDesigner plugin has been disabled.") - warning("Qt Version has to be 4.7.x with x > 0") + warning("QmlDesigner requires Qt 4.7.1 or later.") } } else { warning() @@ -87,7 +88,7 @@ plugin_imageviewer.subdir = imageviewer plugin_imageviewer.depends = plugin_coreplugin plugin_designer.subdir = designer -plugin_designer.depends = plugin_coreplugin plugin_cppeditor plugin_projectexplorer +plugin_designer.depends = plugin_coreplugin plugin_cpptools plugin_projectexplorer plugin_texteditor plugin_vcsbase.subdir = vcsbase plugin_vcsbase.depends = plugin_find @@ -125,8 +126,6 @@ plugin_qt4projectmanager.subdir = qt4projectmanager plugin_qt4projectmanager.depends = plugin_texteditor plugin_qt4projectmanager.depends += plugin_projectexplorer plugin_qt4projectmanager.depends += plugin_cpptools -plugin_qt4projectmanager.depends += plugin_cppeditor -plugin_qt4projectmanager.depends += plugin_qmljseditor plugin_qt4projectmanager.depends += plugin_designer plugin_qt4projectmanager.depends += plugin_debugger plugin_qt4projectmanager.depends += plugin_qmljseditor @@ -145,11 +144,6 @@ plugin_bookmarks.depends = plugin_projectexplorer plugin_bookmarks.depends += plugin_coreplugin plugin_bookmarks.depends += plugin_texteditor -plugin_snippets.subdir = snippets -plugin_snippets.depends = plugin_projectexplorer -plugin_snippets.depends += plugin_coreplugin -plugin_snippets.depends += plugin_texteditor - plugin_debugger.subdir = debugger plugin_debugger.depends = plugin_projectexplorer plugin_debugger.depends += plugin_coreplugin @@ -181,19 +175,17 @@ plugin_regexp.depends = plugin_coreplugin plugin_cpaster.subdir = cpaster plugin_cpaster.depends = plugin_texteditor plugin_cpaster.depends += plugin_coreplugin -plugin_cpaster.depends += plugin_projectexplorer plugin_cmakeprojectmanager.subdir = cmakeprojectmanager plugin_cmakeprojectmanager.depends = plugin_texteditor plugin_cmakeprojectmanager.depends += plugin_projectexplorer plugin_cmakeprojectmanager.depends += plugin_cpptools -plugin_cmakeprojectmanager.depends += plugin_cppeditor +plugin_cmakeprojectmanager.depends += plugin_designer plugin_genericprojectmanager.subdir = genericprojectmanager plugin_genericprojectmanager.depends = plugin_texteditor plugin_genericprojectmanager.depends += plugin_projectexplorer plugin_genericprojectmanager.depends += plugin_cpptools -plugin_genericprojectmanager.depends += plugin_cppeditor plugin_qmljseditor.subdir = qmljseditor plugin_qmljseditor.depends = plugin_texteditor diff --git a/src/plugins/projectexplorer/ProjectExplorer.pluginspec b/src/plugins/projectexplorer/ProjectExplorer.pluginspec index 0d520466f9d673808ae8a38a7901fbd4461c0001..dceb775372411364fb56d7547b807e6b89eeea3b 100644 --- a/src/plugins/projectexplorer/ProjectExplorer.pluginspec +++ b/src/plugins/projectexplorer/ProjectExplorer.pluginspec @@ -1,4 +1,4 @@ -<plugin name="ProjectExplorer" version="2.0.91" compatVersion="2.0.91"> +<plugin name="ProjectExplorer" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,10 +14,10 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>ProjectExplorer framework that can be extended with different kind of project types.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="Find" version="2.0.91"/> - <dependency name="Locator" version="2.0.91"/> - <dependency name="TextEditor" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="Find" version="2.1.81"/> + <dependency name="Locator" version="2.1.81"/> + <dependency name="TextEditor" version="2.1.81"/> </dependencyList> <argumentList> <argument name="-customwizard-verbose">Verbose loading of custom wizards</argument> diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp index 5442b0a890476dacecb2cb014f835be5be350d6f..56803bdeb84aa07555744a4057a44258616ccf7a 100644 --- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp +++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp @@ -550,7 +550,7 @@ QStringList CustomExecutableRunConfiguration::dumperLibraryLocations() const { QString qmakePath = ProjectExplorer::DebuggingHelperLibrary::findSystemQt(environment()); QString qtInstallData = ProjectExplorer::DebuggingHelperLibrary::qtInstallDataDir(qmakePath); - return ProjectExplorer::DebuggingHelperLibrary::debuggingHelperLibraryLocationsByInstallData(qtInstallData); + return ProjectExplorer::DebuggingHelperLibrary::locationsByInstallData(qtInstallData); } ProjectExplorer::ToolChain::ToolChainType CustomExecutableRunConfiguration::toolChainType() const diff --git a/src/plugins/projectexplorer/customwizard/customwizard.cpp b/src/plugins/projectexplorer/customwizard/customwizard.cpp index b3feff908bf27ac7f067a517f582457a55e63e58..dbc6878f5206d1abd0848b203c913a983f562ea8 100644 --- a/src/plugins/projectexplorer/customwizard/customwizard.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizard.cpp @@ -148,7 +148,7 @@ static inline bool createFile(Internal::CustomWizardFile cwFile, const QString sourcePath = sourceDirectory + slash + cwFile.source; // Field replacement on target path Internal::CustomWizardContext::replaceFields(fm, &cwFile.target); - const QString targetPath = QDir::toNativeSeparators(targetDirectory + slash + cwFile.target); + const QString targetPath = targetDirectory + slash + cwFile.target; if (CustomWizardPrivate::verbose) qDebug() << "generating " << targetPath << sourcePath << fm; @@ -533,7 +533,8 @@ bool CustomProjectWizard::postGenerateOpen(const Core::GeneratedFiles &l, QStrin if (file.attributes() & Core::GeneratedFile::OpenProjectAttribute) { if (!ProjectExplorer::ProjectExplorerPlugin::instance()->openProject(file.path())) { if (errorMessage) - *errorMessage = tr("The project %1 could not be opened.").arg(file.path()); + *errorMessage = tr("The project %1 could not be opened."). + arg(QDir::toNativeSeparators(file.path())); return false; } } diff --git a/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.cpp b/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.cpp index 72f91696429b32ef2fbf0f09ee06e0ca2c3811e5..f650f832bdca99f79731fe4f1de4bd66710719d2 100644 --- a/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizardscriptgenerator.cpp @@ -184,7 +184,7 @@ Core::GeneratedFiles fileInfo.isAbsolute() ? token : (targetPath + QLatin1Char('/') + token); - file.setPath(QDir::toNativeSeparators(fullPath)); + file.setPath(fullPath); } } file.setAttributes(attributes); diff --git a/src/plugins/projectexplorer/debugginghelper.cpp b/src/plugins/projectexplorer/debugginghelper.cpp index 8320771dbf69c630b7b965386f5e828d998cbe68..b006691cae0df922a7db396cd3f1d24a3c3d93a7 100644 --- a/src/plugins/projectexplorer/debugginghelper.cpp +++ b/src/plugins/projectexplorer/debugginghelper.cpp @@ -43,20 +43,12 @@ using namespace ProjectExplorer; -QString DebuggingHelperLibrary::findSystemQt(const Utils::Environment &env) +static inline QStringList validBinaryFilenames() { - QStringList paths = env.path(); - foreach (const QString &path, paths) { - foreach (const QString &possibleCommand, possibleQMakeCommands()) { - const QFileInfo qmake(path + QLatin1Char('/') + possibleCommand); - if (qmake.exists()) { - if (!qtVersionForQMake(qmake.absoluteFilePath()).isNull()) { - return qmake.absoluteFilePath(); - } - } - } - } - return QString(); + return QStringList() + << QLatin1String("debug/gdbmacros.dll") + << QLatin1String("libgdbmacros.dylib") + << QLatin1String("libgdbmacros.so"); } QStringList DebuggingHelperLibrary::debuggingHelperLibraryDirectories(const QString &qtInstallData) @@ -71,43 +63,13 @@ QStringList DebuggingHelperLibrary::debuggingHelperLibraryDirectories(const QStr return directories; } -QString DebuggingHelperLibrary::qtInstallDataDir(const QString &qmakePath) -{ - QProcess proc; - proc.start(qmakePath, QStringList() << QLatin1String("-query") << QLatin1String("QT_INSTALL_DATA")); - if (proc.waitForFinished()) - return QString(proc.readAll().trimmed()); - return QString(); -} - -// Debugging Helper Library - -static inline bool getHelperFileInfoFor(const QString &directory, QFileInfo* info) -{ - if (!info) - return false; - - info->setFile(directory + QLatin1String("debug/gdbmacros.dll")); - if (info->exists()) - return true; - - info->setFile(directory + QLatin1String("libgdbmacros.dylib")); - if (info->exists()) - return true; - - info->setFile(directory + QLatin1String("libgdbmacros.so")); - if (info->exists()) - return true; - - return false; -} - -QStringList DebuggingHelperLibrary::debuggingHelperLibraryLocationsByInstallData(const QString &qtInstallData) +QStringList DebuggingHelperLibrary::locationsByInstallData(const QString &qtInstallData) { QStringList result; QFileInfo fileInfo; + const QStringList binFilenames = validBinaryFilenames(); foreach(const QString &directory, debuggingHelperLibraryDirectories(qtInstallData)) { - if (getHelperFileInfoFor(directory, &fileInfo)) + if (getHelperFileInfoFor(binFilenames, directory, &fileInfo)) result << fileInfo.filePath(); } return result; @@ -117,60 +79,17 @@ QString DebuggingHelperLibrary::debuggingHelperLibraryByInstallData(const QStrin { if (!Core::ICore::instance()) return QString(); - const QString dumperSourcePath = Core::ICore::instance()->resourcePath() + QLatin1String("/gdbmacros/"); - QDateTime sourcesModified = QFileInfo(dumperSourcePath + "gdbmacros.cpp").lastModified(); - // We pretend that the lastmodified of gdbmacros.cpp is 5 minutes before what the file system says - // Because afer a installation from the package the modified dates of gdbmacros.cpp - // and the actual library are close to each other, but not deterministic in one direction - sourcesModified = sourcesModified.addSecs(-300); - // look for the newest helper library in the different locations - QString newestHelper; - QDateTime newestHelperModified = sourcesModified; // prevent using one that's older than the sources - QFileInfo fileInfo; - foreach(const QString &directory, debuggingHelperLibraryDirectories(qtInstallData)) { - if (getHelperFileInfoFor(directory, &fileInfo)) { - if (fileInfo.lastModified() > newestHelperModified) { - newestHelper = fileInfo.filePath(); - newestHelperModified = fileInfo.lastModified(); - } - } - } - return newestHelper; -} + const QString mainFilename = Core::ICore::instance()->resourcePath() + + QLatin1String("/gdbmacros/gdbmacros.cpp"); + const QStringList directories = DebuggingHelperLibrary::debuggingHelperLibraryDirectories(qtInstallData); + const QStringList binFilenames = validBinaryFilenames(); -// Copy helper source files to a target directory, replacing older files. -static bool copyDebuggingHelperFiles(const QStringList &files, - const QString &targetDirectory, - QString *errorMessage) -{ - const QString dumperSourcePath = Core::ICore::instance()->resourcePath() + QLatin1String("/gdbmacros/"); - if (!QDir().mkpath(targetDirectory)) { - *errorMessage = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "The target directory %1 could not be created.").arg(targetDirectory); - return false; - } - foreach (const QString &file, files) { - const QString source = dumperSourcePath + file; - const QString dest = targetDirectory + file; - const QFileInfo destInfo(dest); - if (destInfo.exists()) { - if (destInfo.lastModified() >= QFileInfo(source).lastModified()) - continue; - if (!QFile::remove(dest)) { - *errorMessage = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "The existing file %1 could not be removed.").arg(destInfo.absoluteFilePath()); - return false; - } - } - if (!QFile::copy(source, dest)) { - *errorMessage = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "The file %1 could not be copied to %2.").arg(source, dest); - return false; - } - } - return true; + return byInstallDataHelper(mainFilename, directories, binFilenames); } -QString DebuggingHelperLibrary::copyDebuggingHelperLibrary(const QString &qtInstallData, - QString *errorMessage) +QString DebuggingHelperLibrary::copy(const QString &qtInstallData, + QString *errorMessage) { // Locations to try: // $QTDIR/qtc-debugging-helper @@ -179,110 +98,28 @@ QString DebuggingHelperLibrary::copyDebuggingHelperLibrary(const QString &qtInst const QStringList directories = DebuggingHelperLibrary::debuggingHelperLibraryDirectories(qtInstallData); QStringList files; - files << QLatin1String("gdbmacros.cpp") << QLatin1String("gdbmacros_p.h") << QLatin1String("gdbmacros.h") << QLatin1String("gdbmacros.pro") + files << QLatin1String("gdbmacros.cpp") << QLatin1String("gdbmacros_p.h") + << QLatin1String("gdbmacros.h") << QLatin1String("gdbmacros.pro") << QLatin1String("LICENSE.LGPL") << QLatin1String("LGPL_EXCEPTION.TXT"); + + QString sourcePath = Core::ICore::instance()->resourcePath() + QLatin1String("/gdbmacros/"); + // Try to find a writeable directory. foreach(const QString &directory, directories) - if (copyDebuggingHelperFiles(files, directory, errorMessage)) { + if (copyFiles(sourcePath, files, directory, errorMessage)) { errorMessage->clear(); return directory; } - *errorMessage = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "The debugger helpers could not be built in any of the directories:\n- %1\n\nReason: %2") + *errorMessage = QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", + "The debugger helpers could not be built in any of the directories:\n- %1\n\nReason: %2") .arg(directories.join(QLatin1String("\n- ")), *errorMessage); return QString(); } -QString DebuggingHelperLibrary::buildDebuggingHelperLibrary(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, - const Utils::Environment &env, const QString &targetMode) -{ - QString output; - const QChar newline = QLatin1Char('\n'); - // Setup process - QProcess proc; - proc.setEnvironment(env.toStringList()); - proc.setWorkingDirectory(directory); - proc.setProcessChannelMode(QProcess::MergedChannels); - - output += QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "Building debugging helper library in %1\n").arg(directory); - output += newline; - - const QString makeFullPath = env.searchInPath(makeCommand); - if (QFileInfo(directory + QLatin1String("/Makefile")).exists()) { - if (!makeFullPath.isEmpty()) { - const QString cleanTarget = QLatin1String("distclean"); - output += QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "Running %1 %2...\n").arg(makeFullPath, cleanTarget); - proc.start(makeFullPath, QStringList(cleanTarget)); - proc.waitForFinished(); - output += QString::fromLocal8Bit(proc.readAll()); - } else { - output += QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "%1 not found in PATH\n").arg(makeCommand); - return output; - } - } - output += newline; - output += QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "Running %1 ...\n").arg(qmakeCommand); - - QStringList makeArgs; - makeArgs << targetMode << QLatin1String("-spec") << (mkspec.isEmpty() ? QString(QLatin1String("default")) : mkspec) << QLatin1String("gdbmacros.pro"); - proc.start(qmakeCommand, makeArgs); - proc.waitForFinished(); - - output += proc.readAll(); - - output += newline;; - if (!makeFullPath.isEmpty()) { - output += QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "Running %1 ...\n").arg(makeFullPath); - proc.start(makeFullPath, QStringList()); - proc.waitForFinished(); - output += proc.readAll(); - } else { - output += QCoreApplication::translate("ProjectExplorer::DebuggingHelperLibrary", "%1 not found in PATH\n").arg(makeCommand); - } - return output; -} - -QString DebuggingHelperLibrary::qtVersionForQMake(const QString &qmakePath) -{ - if (qmakePath.isEmpty()) - return QString(); - - QProcess qmake; - qmake.start(qmakePath, QStringList(QLatin1String("--version"))); - if (!qmake.waitForStarted()) { - qWarning("Cannot start '%s': %s", qPrintable(qmakePath), qPrintable(qmake.errorString())); - return QString(); - } - if (!qmake.waitForFinished()) { - Utils::SynchronousProcess::stopProcess(qmake); - qWarning("Timeout running '%s'.", qPrintable(qmakePath)); - return QString(); - } - if (qmake.exitStatus() != QProcess::NormalExit) { - qWarning("'%s' crashed.", qPrintable(qmakePath)); - return QString(); - } - const QString output = QString::fromLocal8Bit(qmake.readAllStandardOutput()); - QRegExp regexp(QLatin1String("(QMake version|QMake version:)[\\s]*([\\d.]*)"), Qt::CaseInsensitive); - regexp.indexIn(output); - if (regexp.cap(2).startsWith(QLatin1String("2."))) { - QRegExp regexp2(QLatin1String("Using Qt version[\\s]*([\\d\\.]*)"), Qt::CaseInsensitive); - regexp2.indexIn(output); - const QString version = regexp2.cap(1); - return version; - } - return QString(); -} - -QStringList DebuggingHelperLibrary::possibleQMakeCommands() +QString DebuggingHelperLibrary::build(const QString &directory, const QString &makeCommand, + const QString &qmakeCommand, const QString &mkspec, + const Utils::Environment &env, const QString &targetMode) { - // On windows no one has renamed qmake, right? -#ifdef Q_OS_WIN - return QStringList(QLatin1String("qmake.exe")); -#else - // On unix some distributions renamed qmake to avoid clashes - QStringList result; - result << QLatin1String("qmake-qt4") << QLatin1String("qmake4") << QLatin1String("qmake"); - return result; -#endif + return buildHelper(QCoreApplication::tr("GDB helper"), QLatin1String("gdbmacros.pro"), directory, + makeCommand, qmakeCommand, mkspec, env, targetMode); } diff --git a/src/plugins/projectexplorer/debugginghelper.h b/src/plugins/projectexplorer/debugginghelper.h index 3121b66eea70b844043f06d1a95ce6963e02d71f..4185935d63f116d48269f767d8f4bde8278a16bf 100644 --- a/src/plugins/projectexplorer/debugginghelper.h +++ b/src/plugins/projectexplorer/debugginghelper.h @@ -33,35 +33,30 @@ #include "projectexplorer_export.h" #include <utils/environment.h> +#include <utils/buildablehelperlibrary.h> #include <QtCore/QString> #include <QtCore/QStringList> namespace ProjectExplorer { -class PROJECTEXPLORER_EXPORT DebuggingHelperLibrary + +class PROJECTEXPLORER_EXPORT DebuggingHelperLibrary : public Utils::BuildableHelperLibrary { public: - // returns the full path to the first qmake, qmake-qt4, qmake4 that has - // at least version 2.0.0 and thus is a qt4 qmake - static QString findSystemQt(const Utils::Environment &env); - // returns something like qmake4, qmake, qmake-qt4 or whatever distributions have chosen (used by QtVersion) - static QStringList possibleQMakeCommands(); - // return true if the qmake at qmakePath is qt4 (used by QtVersion) - static QString qtVersionForQMake(const QString &qmakePath); - static QString debuggingHelperLibraryByInstallData(const QString &qtInstallData); - static QStringList debuggingHelperLibraryLocationsByInstallData(const QString &qtInstallData); + static QStringList locationsByInstallData(const QString &qtInstallData); // Build the helpers and return the output log/errormessage. - static QString buildDebuggingHelperLibrary(const QString &directory, const QString &makeCommand, - const QString &qmakeCommand, const QString &mkspec, const Utils::Environment &env, const QString &targetMode); + static QString build(const QString &directory, const QString &makeCommand, + const QString &qmakeCommand, const QString &mkspec, + const Utils::Environment &env, const QString &targetMode); // Copy the source files to a target location and return the chosen target location. - static QString copyDebuggingHelperLibrary(const QString &qtInstallData, QString *errorMessage); - static QString qtInstallDataDir(const QString &qmakePath); + static QString copy(const QString &qtInstallData, QString *errorMessage); + private: static QStringList debuggingHelperLibraryDirectories(const QString &qtInstallData); }; -} +} // namespace ProjectExplorer #endif // DEBUGGINGHELPER_H diff --git a/src/plugins/projectexplorer/outputformatter.cpp b/src/plugins/projectexplorer/outputformatter.cpp index 9fa6ab1bb5c460a43ea69d714722bd8ee9afd017..6c7ab905e4a5438577ed624f24cd4b1bd1ebf87f 100644 --- a/src/plugins/projectexplorer/outputformatter.cpp +++ b/src/plugins/projectexplorer/outputformatter.cpp @@ -94,7 +94,6 @@ static QColor mix_colors(QColor a, QColor b) (a.blue() + 2* b.blue()) / 3, (a.alpha() + 2 * b.alpha()) / 3); } - void OutputFormatter::initFormats() { QPalette p = plainTextEdit()->palette(); diff --git a/src/plugins/projectexplorer/projectfilewizardextension.cpp b/src/plugins/projectexplorer/projectfilewizardextension.cpp index 083e629863fb3e3af224a63d879f2fc086f1f6d1..62339ae0f7111fe615d1191780cc70aba475540d 100644 --- a/src/plugins/projectexplorer/projectfilewizardextension.cpp +++ b/src/plugins/projectexplorer/projectfilewizardextension.cpp @@ -101,7 +101,7 @@ struct ProjectEntry { int compare(const ProjectEntry &rhs) const; ProjectNode *node; - QString nativeDirectory; // For matching against wizards' files, which are native. + QString directory; // For matching against wizards' files, which are native. QString fileName; QString baseName; Type type; @@ -116,13 +116,13 @@ ProjectEntry::ProjectEntry(ProjectNode *n) : baseName = fi.baseName(); if (fi.suffix() != QLatin1String("pro")) type = PriFile; - nativeDirectory = QDir::toNativeSeparators(fi.absolutePath()); + directory = fi.absolutePath(); } // Sort helper that sorts by base name and puts '*.pro' before '*.pri' int ProjectEntry::compare(const ProjectEntry &rhs) const { - if (const int drc = nativeDirectory.compare(rhs.nativeDirectory)) + if (const int drc = directory.compare(rhs.directory)) return drc; if (const int brc = baseName.compare(rhs.baseName)) return brc; @@ -140,7 +140,7 @@ inline bool operator<(const ProjectEntry &pe1, const ProjectEntry &pe2) QDebug operator<<(QDebug d, const ProjectEntry &e) { - d.nospace() << e.nativeDirectory << ' ' << e.fileName << ' ' << e.type; + d.nospace() << e.directory << ' ' << e.fileName << ' ' << e.type; return d; } @@ -212,7 +212,7 @@ static int findMatchingProject(const QList<ProjectEntry> &projects, const int count = projects.size(); for (int p = 0; p < count; p++) { // Direct match or better match? (note that the wizards' files are native). - const QString &projectDirectory = projects.at(p).nativeDirectory; + const QString &projectDirectory = projects.at(p).directory; if (projectDirectory == commonPath) return p; if (projectDirectory.size() > bestMatchLength @@ -357,7 +357,7 @@ void ProjectFileWizardExtension::initProjectChoices(const QString &generatedProj for (ProjectEntryMap::const_iterator it = entryMap.constBegin(); it != cend; ++it) { m_context->projects.push_back(it.key()); projectChoices.push_back(it.key().fileName); - projectToolTips.push_back(it.key().nativeDirectory); + projectToolTips.push_back(QDir::toNativeSeparators(it.key().directory)); } m_context->page->setProjects(projectChoices); diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index 85109a4cd1af04c87e73b4a957328b61e2bbd1f8..9a2e6815dbf8686fc19a24eb50b9fdca336a93fb 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -106,12 +106,12 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent) layout->setContentsMargins(0, 0, 0, 0); setLayout(layout); - m_filterProjectsAction = new QAction(tr("Simplify tree"), this); + m_filterProjectsAction = new QAction(tr("Simplify Tree"), this); m_filterProjectsAction->setCheckable(true); m_filterProjectsAction->setChecked(false); // default is the traditional complex tree connect(m_filterProjectsAction, SIGNAL(toggled(bool)), this, SLOT(setProjectFilter(bool))); - m_filterGeneratedFilesAction = new QAction(tr("Hide generated files"), this); + m_filterGeneratedFilesAction = new QAction(tr("Hide Generated Files"), this); m_filterGeneratedFilesAction->setCheckable(true); m_filterGeneratedFilesAction->setChecked(true); connect(m_filterGeneratedFilesAction, SIGNAL(toggled(bool)), this, SLOT(setGeneratedFilesFilter(bool))); @@ -363,7 +363,7 @@ Core::NavigationView ProjectTreeWidgetFactory::createWidget() QToolButton *filter = new QToolButton; filter->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER))); - filter->setToolTip(tr("Filter tree")); + filter->setToolTip(tr("Filter Tree")); filter->setPopupMode(QToolButton::InstantPopup); QMenu *filterMenu = new QMenu(filter); filterMenu->addAction(ptw->m_filterProjectsAction); diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index d4fbada62e87aaa29826476010244fda28abbd96..7cffc0f26835d5955eb4c0b79015e90c00582aab 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -229,7 +229,8 @@ void PanelsWidget::addPanelWidget(IPropertiesPanel *panel, int row) ProjectWindow::ProjectWindow(QWidget *parent) : QWidget(parent), - m_currentWidget(0) + m_currentWidget(0), + m_previousTargetSubIndex(-1) { ProjectExplorer::SessionManager *session = ProjectExplorerPlugin::instance()->session(); @@ -375,11 +376,19 @@ void ProjectWindow::showProperties(int index, int subIndex) // Set up custom panels again: int pos = 0; IPanelFactory *fac = 0; + // remember previous sub index state of target settings page + if (TargetSettingsPanelWidget *previousPanelWidget + = qobject_cast<TargetSettingsPanelWidget*>(m_currentWidget)) { + m_previousTargetSubIndex = previousPanelWidget->currentSubIndex(); + } if (project->supportedTargetIds().count() > 1) { if (subIndex == 0) { // Targets page removeCurrentWidget(); - m_currentWidget = new TargetSettingsPanelWidget(project); + TargetSettingsPanelWidget *panelWidget = new TargetSettingsPanelWidget(project); + if (m_previousTargetSubIndex >= 0) + panelWidget->setCurrentSubIndex(m_previousTargetSubIndex); + m_currentWidget = panelWidget; m_centralWidget->addWidget(m_currentWidget); m_centralWidget->setCurrentWidget(m_currentWidget); } diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index b4bf4fc948bc366eebf0e1b488683e63b6eb3c9a..512e7cafe6d1599318321b942f400596640779d2 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -94,6 +94,7 @@ private: QStackedWidget *m_centralWidget; QWidget *m_currentWidget; QList<ProjectExplorer::Project *> m_tabIndexToProject; + int m_previousTargetSubIndex; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/sessiondialog.cpp b/src/plugins/projectexplorer/sessiondialog.cpp index fa5405cec19d306ba4f2bfe79b717c5bcf1742e5..b0978edb2ef0a3ed51312a6f9bbd9ccece7fdecc 100644 --- a/src/plugins/projectexplorer/sessiondialog.cpp +++ b/src/plugins/projectexplorer/sessiondialog.cpp @@ -189,16 +189,17 @@ void SessionDialog::markItems() void SessionDialog::updateActions() { - bool isDefault = false; - bool isActive = false; - if (m_ui.sessionList->currentItem()) { - isDefault = (m_ui.sessionList->currentItem()->text() == QLatin1String("default")); - isActive = (m_ui.sessionList->currentItem()->text() == m_sessionManager->activeSession()); + bool isDefault = (m_ui.sessionList->currentItem()->text() == QLatin1String("default")); + bool isActive = (m_ui.sessionList->currentItem()->text() == m_sessionManager->activeSession()); + m_ui.btDelete->setEnabled(!isActive && !isDefault); + m_ui.btRename->setEnabled(!isDefault); + } else { + m_ui.btDelete->setEnabled(false); + m_ui.btRename->setEnabled(false); + m_ui.btClone->setEnabled(false); + m_ui.btSwitch->setEnabled(false); } - - m_ui.btDelete->setDisabled(isActive || isDefault); - m_ui.btRename->setDisabled(isDefault); } void SessionDialog::createNew() @@ -262,11 +263,9 @@ void SessionDialog::rename() void SessionDialog::switchToSession() { - if (m_ui.sessionList->currentItem()) { - QString session = m_ui.sessionList->currentItem()->text(); - m_sessionManager->loadSession(session); - markItems(); - } + QString session = m_ui.sessionList->currentItem()->text(); + m_sessionManager->loadSession(session); + markItems(); updateActions(); } diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index b40c86f2c23e9a4ad116dc0968252d4d31608640..6de64ac273015ba8d58c9b68aee0724937f0d97e 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -285,3 +285,13 @@ void TargetSettingsPanelWidget::updateTargetAddAndRemoveButtons() m_selector->setAddButtonEnabled(!m_addMenu->actions().isEmpty()); m_selector->setRemoveButtonEnabled(m_project->targets().count() > 1); } + +int TargetSettingsPanelWidget::currentSubIndex() const +{ + return m_selector->currentSubIndex(); +} + +void TargetSettingsPanelWidget::setCurrentSubIndex(int subIndex) +{ + m_selector->setCurrentSubIndex(subIndex); +} diff --git a/src/plugins/projectexplorer/targetsettingspanel.h b/src/plugins/projectexplorer/targetsettingspanel.h index 874263b936dea4e22a5382d4484fc0c7c2fab139..8e01f5c99e2a785161457f0a6c9d43893782c945 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.h +++ b/src/plugins/projectexplorer/targetsettingspanel.h @@ -57,6 +57,9 @@ public: void setupUi(); + int currentSubIndex() const; + void setCurrentSubIndex(int subIndex); + private slots: void currentTargetChanged(int targetIndex, int subIndex); void removeTarget(); diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index 9ecf0f18c6daa34b43907de5125b5bdce1bbcc8f..b203df0f98d1d6a87228c5c98fada3038a7c182a 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -161,7 +161,7 @@ public: QString displayUserFileVersion() const { - return QLatin1String("2.2pre1"); + return QLatin1String("2.1pre1"); } QVariantMap update(Project *project, const QVariantMap &map); @@ -178,13 +178,13 @@ public: QString displayUserFileVersion() const { - return QLatin1String("2.2pre2"); + return QLatin1String("2.1pre2"); } QVariantMap update(Project *project, const QVariantMap &map); }; -// Version 5 reflects the introduction of new deploy steps for Symbian/Maemo +// Version 6 reflects the introduction of new deploy steps for Symbian/Maemo class Version6Handler : public UserFileVersionHandler { public: @@ -195,13 +195,13 @@ public: QString displayUserFileVersion() const { - return QLatin1String("2.2pre3"); + return QLatin1String("2.1pre3"); } QVariantMap update(Project *project, const QVariantMap &map); }; -// Version 5 reflects the introduction of new deploy configuration for Symbian +// Version 7 reflects the introduction of new deploy configuration for Symbian class Version7Handler : public UserFileVersionHandler { public: @@ -212,7 +212,7 @@ public: QString displayUserFileVersion() const { - return QLatin1String("2.2pre4"); + return QLatin1String("2.1pre4"); } QVariantMap update(Project *project, const QVariantMap &map); @@ -1127,6 +1127,29 @@ QVariantMap Version4Handler::update(Project *, const QVariantMap &map) while (targetIt.hasNext()) { targetIt.next(); const QString &targetKey = targetIt.key(); + + if (targetKey.startsWith(QLatin1String("ProjectExplorer.Target.RunConfiguration."))) { + const QVariantMap &runConfigMap = targetIt.value().toMap(); + const QLatin1String maemoRcId("Qt4ProjectManager.MaemoRunConfiguration"); + if (runConfigMap.value(QLatin1String("ProjectExplorer.ProjectConfiguration.Id")).toString() + == maemoRcId) { + QVariantMap newRunConfigMap; + for (QVariantMap::ConstIterator rcMapIt = runConfigMap.constBegin(); + rcMapIt != runConfigMap.constEnd(); ++rcMapIt) { + const QLatin1String oldProFileKey(".ProFile"); + if (rcMapIt.key() == oldProFileKey) { + newRunConfigMap.insert(maemoRcId + oldProFileKey, + rcMapIt.value()); + } else { + newRunConfigMap.insert(rcMapIt.key(), + rcMapIt.value()); + } + } + newTarget.insert(targetKey, newRunConfigMap); + continue; + } + } + if (!targetKey.startsWith(QLatin1String("ProjectExplorer.Target.BuildConfiguration."))) { newTarget.insert(targetKey, targetIt.value()); continue; diff --git a/src/plugins/qmldesigner/QmlDesigner.pluginspec b/src/plugins/qmldesigner/QmlDesigner.pluginspec index 4dc9992c0f1a3a5df5c7bd9bc2a95b061c42ef32..b6a2cca6b73d7390640b08cc858a1486d4cd070c 100644 --- a/src/plugins/qmldesigner/QmlDesigner.pluginspec +++ b/src/plugins/qmldesigner/QmlDesigner.pluginspec @@ -1,4 +1,4 @@ -<plugin name="QmlDesigner" version="2.0.91" compatVersion="2.0.91"> +<plugin name="QmlDesigner" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -20,8 +20,8 @@ will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.</license> <description>Visual Designer for QML files.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="QmlJSEditor" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="QmlJSEditor" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp index efd1eab8a18b31c48a6321ecaba48b3254427d1f..917f7ebf5fe1efcd257e2775dca3b14570ab64e5 100644 --- a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.cpp @@ -93,7 +93,8 @@ bool AbstractFormEditorTool::topSelectedItemIsMovable(const QList<QGraphicsItem* FormEditorItem *formEditorItem = FormEditorItem::fromQGraphicsItem(item); if (formEditorItem && selectedNodes.contains(formEditorItem->qmlItemNode()) - && !formEditorItem->qmlItemNode().isRootNode() + && formEditorItem->qmlItemNode().instanceIsMovable() + && !formEditorItem->qmlItemNode().instanceIsInPositioner() && (formEditorItem->qmlItemNode().hasShowContent())) return true; } @@ -101,7 +102,8 @@ bool AbstractFormEditorTool::topSelectedItemIsMovable(const QList<QGraphicsItem* foreach (QGraphicsItem *item, itemList) { FormEditorItem *formEditorItem = FormEditorItem::fromQGraphicsItem(item); if (formEditorItem - && !formEditorItem->qmlItemNode().isRootNode() + && formEditorItem->qmlItemNode().instanceIsMovable() + && !formEditorItem->qmlItemNode().instanceIsInPositioner() && selectedNodes.contains(formEditorItem->qmlItemNode())) return true; } diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp index cbe41a4ace52973127f585bd72dbd3ee6bbceffd..6e0d7b8b24bb623c6719c5980df2ad6e093bce66 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp @@ -200,8 +200,8 @@ FormEditorItem *FormEditorScene::addFormEditorItem(const QmlItemNode &qmlItemNod QRectF sceneRect(qmlItemNode.instanceBoundingRect()); setSceneRect(sceneRect); - formLayerItem()->update(); - manipulatorLayerItem()->update(); + formLayerItem()->update(); + manipulatorLayerItem()->update(); } diff --git a/src/plugins/qmldesigner/components/formeditor/movetool.cpp b/src/plugins/qmldesigner/components/formeditor/movetool.cpp index ae76d6455f969fcdc6442a589871f7d7a1673cc8..38da0a124b0c47d8bb97b3cea45cd21235b6259b 100644 --- a/src/plugins/qmldesigner/components/formeditor/movetool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/movetool.cpp @@ -322,10 +322,25 @@ FormEditorItem* MoveTool::containerFormEditorItem(const QList<QGraphicsItem*> &i return 0; } +QList<FormEditorItem*> movalbeItems(const QList<FormEditorItem*> &itemList) +{ + QList<FormEditorItem*> filteredItemList(itemList); + + QMutableListIterator<FormEditorItem*> listIterator(filteredItemList); + while (listIterator.hasNext()) { + FormEditorItem *item = listIterator.next(); + if (!item->qmlItemNode().isValid() || !item->qmlItemNode().instanceIsMovable() || item->qmlItemNode().instanceIsInPositioner()) + listIterator.remove(); + } + + return filteredItemList; +} QList<FormEditorItem*> MoveTool::movingItems(const QList<FormEditorItem*> &selectedItemList) { - FormEditorItem* ancestorItem = ancestorIfOtherItemsAreChild(selectedItemList); + QList<FormEditorItem*> filteredItemList = movalbeItems(selectedItemList); + + FormEditorItem* ancestorItem = ancestorIfOtherItemsAreChild(filteredItemList); if (ancestorItem != 0 && ancestorItem->qmlItemNode().isRootNode()) { // view()->changeToSelectionTool(); @@ -339,12 +354,12 @@ QList<FormEditorItem*> MoveTool::movingItems(const QList<FormEditorItem*> &selec return ancestorItemList; } - if (!haveSameParent(selectedItemList)) { + if (!haveSameParent(filteredItemList)) { // view()->changeToSelectionTool(); return QList<FormEditorItem*>(); } - return selectedItemList; + return filteredItemList; } void MoveTool::formEditorItemsChanged(const QList<FormEditorItem*> &itemList) diff --git a/src/plugins/qmldesigner/components/formeditor/resizeindicator.cpp b/src/plugins/qmldesigner/components/formeditor/resizeindicator.cpp index a1b5b56fcbadefd13889cb332f78a55b1d3fbb0e..473618a664ab428004b8fb1bb58c579c38334b1e 100644 --- a/src/plugins/qmldesigner/components/formeditor/resizeindicator.cpp +++ b/src/plugins/qmldesigner/components/formeditor/resizeindicator.cpp @@ -72,11 +72,12 @@ void ResizeIndicator::setItems(const QList<FormEditorItem*> &itemList) foreach (FormEditorItem* item, itemList) { if (item - && item->qmlItemNode().isValid() - && item->qmlItemNode().isRootNode()) - continue; - ResizeController controller(m_layerItem, item); - m_itemControllerHash.insert(item, controller); + && item->qmlItemNode().isValid() + && item->qmlItemNode().instanceIsResizable() + && !item->qmlItemNode().instanceIsInPositioner()) { + ResizeController controller(m_layerItem, item); + m_itemControllerHash.insert(item, controller); + } } } diff --git a/src/plugins/qmldesigner/components/formeditor/rubberbandselectionmanipulator.cpp b/src/plugins/qmldesigner/components/formeditor/rubberbandselectionmanipulator.cpp index 18804d88e44aac543cdbcb38b8e7dd09f169f598..1872d66fc05ba7a3ac01b33967b7cc24590d378a 100644 --- a/src/plugins/qmldesigner/components/formeditor/rubberbandselectionmanipulator.cpp +++ b/src/plugins/qmldesigner/components/formeditor/rubberbandselectionmanipulator.cpp @@ -101,18 +101,20 @@ void RubberBandSelectionManipulator::select(SelectionType selectionType) FormEditorItem *formEditorItem = FormEditorItem::fromQGraphicsItem(item); if (formEditorItem - && formEditorItem->qmlItemNode().isValid() - && m_beginFormEditorItem->childItems().contains(formEditorItem) - && !formEditorItem->qmlItemNode().isRootNode()) + && formEditorItem->qmlItemNode().isValid() + && m_beginFormEditorItem->childItems().contains(formEditorItem) + && formEditorItem->qmlItemNode().instanceIsMovable() + && !formEditorItem->qmlItemNode().instanceIsInPositioner()) { newNodeList.append(formEditorItem->qmlItemNode()); } } if (newNodeList.isEmpty() - && m_beginFormEditorItem->qmlItemNode().isValid() - && !m_beginFormEditorItem->qmlItemNode().isRootNode()) - newNodeList.append(m_beginFormEditorItem->qmlItemNode()); + && m_beginFormEditorItem->qmlItemNode().isValid() + && m_beginFormEditorItem->qmlItemNode().instanceIsMovable() + && !m_beginFormEditorItem->qmlItemNode().instanceIsInPositioner()) + newNodeList.append(m_beginFormEditorItem->qmlItemNode()); QList<QmlItemNode> nodeList; diff --git a/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp b/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp index e5c12648f9592676e3eaa6f5e5ed062082e4661b..2dcda48f20ee9ddcfb4e5b2e553dc821ae351638 100644 --- a/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp +++ b/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp @@ -85,7 +85,7 @@ void SelectionIndicator::setItems(const QList<FormEditorItem*> &itemList) clear(); foreach (FormEditorItem *item, itemList) { - if (item->qmlItemNode().isValid()) + if (!item->qmlItemNode().isValid()) continue; QGraphicsPolygonItem *newSelectionIndicatorGraphicsItem = new QGraphicsPolygonItem(m_layerItem.data()); diff --git a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp index 787fedef094d8f3e2221fc56164a5b9e3e8b6d9e..5fc65decf03ca77ed02fdf186dedf86734a9970c 100644 --- a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp +++ b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp @@ -145,7 +145,8 @@ void SelectionTool::hoverMoveEvent(const QList<QGraphicsItem*> &itemList, if (formEditorItem && formEditorItem->qmlItemNode().isValid() - && !formEditorItem->qmlItemNode().isRootNode() + && !formEditorItem->qmlItemNode().instanceIsInPositioner() + && formEditorItem->qmlItemNode().instanceIsMovable() && (formEditorItem->qmlItemNode().hasShowContent() || !m_selectOnlyContentItems)) { topSelectableItem = formEditorItem; diff --git a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp index cc38edb07ea149c291ffa09514ff1db6a52db5d6..3fc09240b8002c1b978d1b72163b035ef8d1286f 100644 --- a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp +++ b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp @@ -81,7 +81,8 @@ void SingleSelectionManipulator::select(SelectionType selectionType, bool select if (formEditorItem && formEditorItem->qmlItemNode().isValid() - && !formEditorItem->qmlItemNode().isRootNode() + && formEditorItem->qmlItemNode().instanceIsMovable() + && !formEditorItem->qmlItemNode().instanceIsInPositioner() && (formEditorItem->qmlItemNode().hasShowContent() || !selectOnlyContentItems)) { selectedNode = formEditorItem->qmlItemNode(); diff --git a/src/plugins/qmldesigner/components/integration/componentview.cpp b/src/plugins/qmldesigner/components/integration/componentview.cpp index 4967fe8b3d4d5b8ffeb5fb41c6b1f1fb8952a4a9..f3e99da2da25752ce5c9d3a9751f0a469c7bb0a8 100644 --- a/src/plugins/qmldesigner/components/integration/componentview.cpp +++ b/src/plugins/qmldesigner/components/integration/componentview.cpp @@ -109,7 +109,7 @@ void ComponentView::searchForComponentAndAddToList(const ModelNode &node) foreach (const ModelNode &childNode, nodeList) { - if (childNode.type() == "Qt/Component") { + if (childNode.type() == "QtQuick/Component") { if (!childNode.id().isEmpty()) { QStandardItem *item = new QStandardItem(childNode.id()); item->setData(QVariant::fromValue(childNode), ModelNodeRole); diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp index 67daf39827ee6725cb465be6e2bc3c36b60c13d0..facc5814839503671456deaa8eaa6c144e952faf 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp @@ -269,7 +269,7 @@ QList<RewriterView::Error> DesignDocumentController::loadMaster(QPlainTextEdit * //m_d->masterModel = Model::create(m_d->textModifier, m_d->searchPath, errors); - m_d->masterModel = Model::create("Qt/Rectangle", 4, 7); + m_d->masterModel = Model::create("QtQick/Rectangle", 4, 7); #if defined(VIEWLOGGER) m_d->viewLogger = new Internal::ViewLogger(m_d->model.data()); @@ -278,7 +278,7 @@ QList<RewriterView::Error> DesignDocumentController::loadMaster(QPlainTextEdit * m_d->masterModel->setFileUrl(m_d->searchPath); - m_d->subComponentModel = Model::create("Qt/Rectangle", 4, 7); + m_d->subComponentModel = Model::create("QtQuick/Rectangle", 4, 7); m_d->subComponentModel->setFileUrl(m_d->searchPath); m_d->subComponentManager = new SubComponentManager(m_d->masterModel->metaInfo(), this); @@ -468,7 +468,7 @@ void DesignDocumentController::deleteSelected() void DesignDocumentController::copySelected() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle")); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle")); model->setMetaInfo(m_d->model->metaInfo()); model->setFileUrl(m_d->model->fileUrl()); foreach (const Import &import, m_d->model->imports()) @@ -514,7 +514,7 @@ void DesignDocumentController::copySelected() foreach (ModelNode node, view.rootModelNode().allDirectSubModelNodes()) { node.destroy(); } - view.changeRootNodeType("Qt/Rectangle", 4, 7); + view.changeRootNodeType("QtQuick/Rectangle", 4, 7); view.rootModelNode().setId("designer__Selection"); foreach (const ModelNode &selectedNode, selectedNodes) { @@ -766,7 +766,7 @@ QString DesignDocumentController::contextHelpId() const QString helpId; if (!nodes.isEmpty()) { helpId = nodes.first().type(); - helpId.replace("Qt/", "QML."); + helpId.replace("QtQuick/", "QML."); } return helpId; diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.cpp index 6e63157a2b75bf0f43cc2f725b2b213a9f402a18..c9d91523169d0f42f89f740bd326d2ef9497ec28 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontrollerview.cpp @@ -107,7 +107,7 @@ void DesignDocumentControllerView::fromClipboard() QString DesignDocumentControllerView::toText() const { - QScopedPointer<Model> outputModel(Model::create("Qt/Rectangle")); + QScopedPointer<Model> outputModel(Model::create("QtQuick/Rectangle")); outputModel->setMetaInfo(model()->metaInfo()); QPlainTextEdit textEdit; textEdit.setPlainText("import Qt 4.7; Item {}"); @@ -129,7 +129,7 @@ QString DesignDocumentControllerView::toText() const void DesignDocumentControllerView::fromText(QString text) { - QScopedPointer<Model> inputModel(Model::create("Qt/Rectangle")); + QScopedPointer<Model> inputModel(Model::create("QtQuick/Rectangle")); inputModel->setMetaInfo(model()->metaInfo()); inputModel->setFileUrl(model()->fileUrl()); QPlainTextEdit textEdit; diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index df08b21bda8bf502359fde29790a786510bec4a4..99a995e3b1d2cfb07389895b783f0d4958306e25 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -36,6 +36,7 @@ #include <propertymetainfo.h> #include <qgraphicswidget.h> #include <abstractview.h> +#include <rewriterview.h> #include <invalididexception.h> #include <rewritingexception.h> @@ -297,10 +298,11 @@ void NavigatorTreeModel::handleChangedItem(QStandardItem *item) ItemRow itemRow = itemRowForNode(node); if (item == itemRow.idItem) { - try { - node.setId(item->text()); - } catch (InvalidIdException &e) { - QMessageBox::warning(0, tr("Invalid Id"), e.description()); + if (node.isValidId(item->text())) { + if (node.view()->rewriterView()) + node.view()->rewriterView()->renameId(node.id(), item->text()); + } else { + QMessageBox::warning(0, tr("Invalid Id"), item->text() + tr(" is an invalid id")); item->setText(node.id()); } } else if (item == itemRow.visibilityItem) { @@ -349,7 +351,7 @@ void NavigatorTreeModel::setView(AbstractView *view) m_view = view; m_hiddenProperties.clear(); if (view) { - ModelNode sampleItemNode(m_view->createModelNode("Qt/Item", 4, 7)); + ModelNode sampleItemNode(m_view->createModelNode("QtQuick/Item", 4, 7)); m_hiddenProperties << visibleProperties(sampleItemNode); addSubTree(view->rootModelNode()); } diff --git a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp index 3bd5ca8023c6f2d804c910d63d2c4ead5fd567db..64e03b0dc2bcbde02d6b2c69aa6e019dbe46ea50 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp @@ -806,13 +806,13 @@ void GradientLine::updateGradient() modelNode.removeProperty(m_gradientName); } - ModelNode gradientNode = modelNode.view()->createModelNode("Qt/Gradient", 4, 7); + ModelNode gradientNode = modelNode.view()->createModelNode("QtQuick/Gradient", 4, 7); if (!oldId.isNull()) gradientNode.setId(oldId); for (int i = 0;i < m_stops.size(); i++) { - ModelNode gradientStopNode = modelNode.view()->createModelNode("Qt/GradientStop", 4, 7); + ModelNode gradientStopNode = modelNode.view()->createModelNode("QtQuick/GradientStop", 4, 7); gradientStopNode.variantProperty("position") = roundReal(m_stops.at(i)); gradientStopNode.variantProperty("color") = normalizeColor(m_colorList.at(i)); gradientNode.nodeListProperty("stops").reparentHere(gradientStopNode); diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp index 47a2aae2c559c91630e24fc8fb974ecb8e064e5f..24832155730f62c3edaf2c3387940faca4ee0dfa 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp @@ -43,6 +43,7 @@ #include <bindingproperty.h> #include <nodeabstractproperty.h> +#include <rewriterview.h> #include "propertyeditorvalue.h" #include "basiclayouts.h" @@ -309,7 +310,7 @@ PropertyEditor::~PropertyEditor() void PropertyEditor::setupPane(const QString &typeName) { - QUrl qmlFile = fileToUrl(locateQmlFile(QLatin1String("Qt/ItemPane.qml"))); + QUrl qmlFile = fileToUrl(locateQmlFile(QLatin1String("QtQuick/ItemPane.qml"))); QUrl qmlSpecificsFile; qmlSpecificsFile = fileToUrl(locateQmlFile(typeName + "Specifics.qml")); @@ -354,13 +355,13 @@ void PropertyEditor::changeValue(const QString &propertyName) PropertyEditorValue *value = qobject_cast<PropertyEditorValue*>(QDeclarativeMetaType::toQObject(m_currentType->m_backendValuesPropertyMap.value(propertyName))); const QString newId = value->value().toString(); - try { - m_selectedNode.setId(newId); - } catch (InvalidIdException &e) { + if (m_selectedNode.isValidId(newId)) { + if (rewriterView()) + rewriterView()->renameId(m_selectedNode.id(), newId); + } else { value->setValue(m_selectedNode.id()); - QMessageBox::warning(0, tr("Invalid Id"), e.description()); + QMessageBox::warning(0, tr("Invalid Id"), newId + tr(" is an invalid id")); } - return; } @@ -576,7 +577,7 @@ QString templateGeneration(NodeMetaInfo type, NodeMetaInfo superType, const QmlO "DoubleSpinBoxAlternate {\ntext: \"%1\"\nbackendValue: backendValues.%2\nbaseStateFlag: isBaseState\n}\n" )).arg(name).arg(properName); } - if (typeName == "string") { + if (typeName == "string" || typeName == "QString" || typeName =="url" || typeName =="QUrl") { qmlTemplate += QString(QLatin1String( "QWidget {\nlayout: HorizontalLayout {\nLabel {\ntext: \"%1\"\ntoolTip: \"%1\"\n}\nLineEdit {\nbackendValue: backendValues.%2\nbaseStateFlag: isBaseState\n}\n}\n}\n" )).arg(name).arg(properName); @@ -715,10 +716,10 @@ void PropertyEditor::modelAttached(Model *model) m_locked = true; - setupPane("Qt/Rectangle"); - setupPane("Qt/Text"); - setupPane("Qt/TextInput"); - setupPane("Qt/TextEdit"); + setupPane("QtQuick/Rectangle"); + setupPane("QtQuick/Text"); + setupPane("QtQuick/TextInput"); + setupPane("QtQuick/TextEdit"); resetView(); m_locked = false; @@ -894,7 +895,7 @@ QUrl PropertyEditor::qmlForNode(const ModelNode &modelNode, QString &className) } } } - return fileToUrl(QDir(m_qmlDir).filePath("Qt/emptyPane.qml")); + return fileToUrl(QDir(m_qmlDir).filePath("QtQuick/emptyPane.qml")); } QString PropertyEditor::locateQmlFile(const QString &relativePath) const diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp index 2206ba8fa6885516d9ab82000f953d33769f1e46..8c20d615734a5b034c8ff73963d7a728290a1dce 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp @@ -30,9 +30,11 @@ #include "stateseditorview.h" #include "stateseditormodel.h" #include <customnotifications.h> +#include <rewritingexception.h> #include <QPainter> #include <QTimerEvent> +#include <QMessageBox> #include <QDebug> #include <math.h> @@ -78,8 +80,13 @@ void StatesEditorView::setCurrentStateSilent(int index) m_settingSilentState = false; return; } + + nodeInstanceView()->setBlockStatePropertyChanges(true); + QmlModelView::activateState(state); + nodeInstanceView()->setBlockStatePropertyChanges(false); + m_settingSilentState = false; } @@ -109,7 +116,12 @@ void StatesEditorView::createState(const QString &name) if (debug) qDebug() << __FUNCTION__ << name; - stateRootNode().states().addState(name); + try { + model()->addImport(Import::createLibraryImport("QtQuick", "1.0")); + stateRootNode().states().addState(name); + } catch (RewritingException &e) { + QMessageBox::warning(0, "Error", e.description()); + } } void StatesEditorView::removeState(int index) @@ -123,14 +135,18 @@ void StatesEditorView::removeState(int index) setCurrentState(0); - m_thumbnailsToUpdate.removeAt(index); - m_modelStates.removeAll(state); - state.destroy(); + try { + m_modelStates.removeAll(state); + state.destroy(); + m_thumbnailsToUpdate.removeAt(index); - m_editorModel->removeState(index); + m_editorModel->removeState(index); - int newIndex = (index < m_modelStates.count()) ? index : m_modelStates.count() - 1; - setCurrentState(newIndex); + int newIndex = (index < m_modelStates.count()) ? index : m_modelStates.count() - 1; + setCurrentState(newIndex); + } catch (RewritingException &e) { + QMessageBox::warning(0, "Error", e.description()); + } } void StatesEditorView::renameState(int index, const QString &newName) @@ -141,12 +157,17 @@ void StatesEditorView::renameState(int index, const QString &newName) Q_ASSERT(index > 0 && index < m_modelStates.size()); QmlModelState state = m_modelStates.at(index); Q_ASSERT(state.isValid()); - if (state.name() != newName) { - // Jump to base state for the change - QmlModelState oldState = currentState(); - setCurrentStateSilent(0); - state.setName(newName); - setCurrentState(m_modelStates.indexOf(oldState)); + + try { + if (state.name() != newName) { + // Jump to base state for the change + QmlModelState oldState = currentState(); + setCurrentStateSilent(0); + state.setName(newName); + setCurrentState(m_modelStates.indexOf(oldState)); + } + } catch (RewritingException &e) { + QMessageBox::warning(0, "Error", e.description()); } } diff --git a/src/plugins/qmldesigner/designercore/designercore.pri b/src/plugins/qmldesigner/designercore/designercore.pri index 81674e0eb050e5cfebfcfe72384a446877200d77..885e6cb2ea06f0b3d7057252fcddb5172c8df1ec 100644 --- a/src/plugins/qmldesigner/designercore/designercore.pri +++ b/src/plugins/qmldesigner/designercore/designercore.pri @@ -94,7 +94,8 @@ SOURCES += $$PWD/model/abstractview.cpp \ $$PWD/exceptions/rewritingexception.cpp \ $$PWD/instances/nodeinstancemetaobject.cpp \ $$PWD/instances/behaviornodeinstance.cpp \ - $$PWD/instances/nodeinstancesignalspy.cpp + $$PWD/instances/nodeinstancesignalspy.cpp \ + $$PWD/instances/positionernodeinstance.cpp HEADERS += $$PWD/include/corelib_global.h \ $$PWD/include/abstractview.h \ @@ -187,7 +188,8 @@ HEADERS += $$PWD/include/corelib_global.h \ $$PWD/include/rewritingexception.h \ $$PWD/instances/nodeinstancemetaobject.h \ $$PWD/instances/behaviornodeinstance.h \ - $$PWD/instances/nodeinstancesignalspy.h + $$PWD/instances/nodeinstancesignalspy.h \ + $$PWD/instances/positionernodeinstance.h contains(CONFIG, plugin) { # If core.pri has been included in the qmldesigner plugin diff --git a/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.h b/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.h index 435ad6d7e92e6d640b94a1fc6881fb7063f65349..6ff913eb73a2a93b023015e33313909c16306f40 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.h +++ b/src/plugins/qmldesigner/designercore/filemanager/qmlrewriter.h @@ -77,7 +77,7 @@ protected: { return m_textModifier; } bool includeSurroundingWhitespace(int &start, int &end) const; - void includeLeadingEmptyLine(int &start) const; + void includeLeadingEmptyLine(int &start) const; static QmlJS::AST::UiObjectMemberList *searchMemberToInsertAfter(QmlJS::AST::UiObjectMemberList *members, const QStringList &propertyOrder); static QmlJS::AST::UiObjectMemberList *searchMemberToInsertAfter(QmlJS::AST::UiObjectMemberList *members, const QString &propertyName, const QStringList &propertyOrder); diff --git a/src/plugins/qmldesigner/designercore/include/abstractview.h b/src/plugins/qmldesigner/designercore/include/abstractview.h index 118ae560ac984f7a65632c2ec9ef04a111cf0d7f..09016ea663c73e4059f8acd1435d30b085f9a0c4 100644 --- a/src/plugins/qmldesigner/designercore/include/abstractview.h +++ b/src/plugins/qmldesigner/designercore/include/abstractview.h @@ -55,6 +55,7 @@ namespace QmlDesigner { class QmlModelView; class NodeInstanceView; +class RewriterView; class CORESHARED_EXPORT AbstractView : public QObject { @@ -141,6 +142,7 @@ public: void changeRootNodeType(const QString &type, int majorVersion, int minorVersion); NodeInstanceView *nodeInstanceView() const; + RewriterView *rewriterView() const; protected: void setModel(Model * model); diff --git a/src/plugins/qmldesigner/designercore/include/basetexteditmodifier.h b/src/plugins/qmldesigner/designercore/include/basetexteditmodifier.h index 7c0f05de4c592f14925cd975829e799b4a3cc04f..cf2f540581d435a8174b4106bba2bc0f861cc904 100644 --- a/src/plugins/qmldesigner/designercore/include/basetexteditmodifier.h +++ b/src/plugins/qmldesigner/designercore/include/basetexteditmodifier.h @@ -53,6 +53,8 @@ public: virtual int indentDepth() const; + virtual bool renameId(const QString &oldId, const QString &newId); + virtual QmlJS::Snapshot getSnapshot() const; virtual QStringList importPaths() const; }; diff --git a/src/plugins/qmldesigner/designercore/include/componenttextmodifier.h b/src/plugins/qmldesigner/designercore/include/componenttextmodifier.h index 4188007a6d669781183a2a22bdc6d45017aa80b9..f60219acfd1611f1ee8a71aee7a634b4037e262c 100644 --- a/src/plugins/qmldesigner/designercore/include/componenttextmodifier.h +++ b/src/plugins/qmldesigner/designercore/include/componenttextmodifier.h @@ -61,6 +61,8 @@ public: virtual QmlJS::Snapshot getSnapshot() const; virtual QStringList importPaths() const; + virtual bool renameId(const QString & /* oldId */, const QString & /* newId */) { return false; } + public slots: void contentsChange(int position, int charsRemoved, int charsAdded); diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstance.h b/src/plugins/qmldesigner/designercore/include/nodeinstance.h index 20c13cab39f57db8740a8186376a07ab4f2c4119..0b5a223d38dd20ed6ceb795b11af43db91e3f828 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstance.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstance.h @@ -102,6 +102,7 @@ public: bool isQDeclarativeView() const; bool isGraphicsObject() const; bool isTransition() const; + bool isPositioner() const; bool equalGraphicsItem(QGraphicsItem *item) const; @@ -127,6 +128,9 @@ public: bool isValid() const; void makeInvalid(); bool hasContent() const; + bool isResizable() const; + bool isMovable() const; + bool isInPositioner() const; bool isWrappingThisObject(QObject *object) const; diff --git a/src/plugins/qmldesigner/designercore/include/plaintexteditmodifier.h b/src/plugins/qmldesigner/designercore/include/plaintexteditmodifier.h index 2d64599c15173397b9815374d45d93823663643d..e2e28c1a97122984ca2beb2df87c2b5a41dfda3d 100644 --- a/src/plugins/qmldesigner/designercore/include/plaintexteditmodifier.h +++ b/src/plugins/qmldesigner/designercore/include/plaintexteditmodifier.h @@ -78,6 +78,8 @@ public: virtual QmlJS::Snapshot getSnapshot() const = 0; virtual QStringList importPaths() const = 0; + virtual bool renameId(const QString & /* oldId */, const QString & /* newId */) { return false; } + protected: QPlainTextEdit *plainTextEdit() const { return m_textEdit; } diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index e197067c07cd782cd9dabcab7f5269797e5f125a..5500f5eeb05e757c25fd2fa5868a6c8c9516bf6e 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -68,6 +68,9 @@ public: bool canReparent() const; bool instanceIsAnchoredBySibling() const; bool instanceIsAnchoredByChildren() const; + bool instanceIsMovable() const; + bool instanceIsResizable() const; + bool instanceIsInPositioner() const; QRectF instanceBoundingRect() const; QTransform instanceTransform() const; diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index 3b40ba0fcb9ee74b95aed631d0cfd6e771a1fd80..dc488fa647aecff0251cad2e5532f91f32ddf47c 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -78,6 +78,7 @@ public: public: Error(); Error(const QDeclarativeError &qmlError); + Error(const QString &shortDescription); Error(Exception *exception); Type type() const @@ -159,6 +160,8 @@ public: int firstDefinitionInsideLength(const ModelNode &node) const; bool modificationGroupActive(); + bool renameId(const QString& oldId, const QString& newId); + signals: void errorsChanged(const QList<RewriterView::Error> &errors); diff --git a/src/plugins/qmldesigner/designercore/include/textmodifier.h b/src/plugins/qmldesigner/designercore/include/textmodifier.h index affbaa4b29838dba3930eaf00bdf2ac10cf3befa..241f0890c8f0b6466f1bf5b0c53b0ccf2c3fbf85 100644 --- a/src/plugins/qmldesigner/designercore/include/textmodifier.h +++ b/src/plugins/qmldesigner/designercore/include/textmodifier.h @@ -87,6 +87,8 @@ public: virtual QmlJS::Snapshot getSnapshot() const = 0; virtual QStringList importPaths() const = 0; + virtual bool renameId(const QString &oldId, const QString &newId) = 0; + signals: void textChanged(); diff --git a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp index f654f198d10841a5722bf4e6e8074154c6e793f1..65b15d4d130dc458b01ad818122c5fb5c48d037d 100644 --- a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp @@ -40,7 +40,8 @@ namespace Internal { GraphicsObjectNodeInstance::GraphicsObjectNodeInstance(QGraphicsObject *graphicsObject, bool hasContent) : ObjectNodeInstance(graphicsObject), - m_hasContent(hasContent) + m_hasContent(hasContent), + m_isMovable(true) { } @@ -232,5 +233,16 @@ void GraphicsObjectNodeInstance::paintUpdate() { graphicsObject()->update(); } + +bool GraphicsObjectNodeInstance::isMovable() const +{ + return m_isMovable && graphicsObject() && graphicsObject()->parentItem(); +} + +void GraphicsObjectNodeInstance::setMovable(bool movable) +{ + m_isMovable = movable; +} + } // namespace Internal } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h index ab718a2c455e4abf5934927ae454148f5bf45b73..45200acd2735ceb102f650be7b325497f38669c3 100644 --- a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h +++ b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h @@ -74,12 +74,16 @@ public: void paintUpdate(); + bool isMovable() const; + void setMovable(bool movable); + protected: QGraphicsObject *graphicsObject() const; void paintRecursively(QGraphicsItem *graphicsItem, QPainter *painter) const; static QPair<QGraphicsObject*, bool> createGraphicsObject(const NodeMetaInfo &metaInfo, QDeclarativeContext *context); private: // variables bool m_hasContent; + bool m_isMovable; }; } // namespace Internal diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp index a1c97686facd231822ce196f24648ba18be7403b..2cc7c2fc4d5ddedd4509a4c33f341ebe2fe6a503 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp @@ -42,6 +42,7 @@ #include "componentnodeinstance.h" #include "qmltransitionnodeinstance.h" #include "qmlpropertychangesnodeinstance.h" +#include "positionernodeinstance.h" #include "behaviornodeinstance.h" #include "qmlstatenodeinstance.h" #include "nodeabstractproperty.h" @@ -136,29 +137,31 @@ Internal::ObjectNodeInstance::Pointer NodeInstance::createInstance(const NodeMet instance = Internal::DummyNodeInstance::create(); else if (metaInfo.isSubclassOf("QtWebKit/WebView", 1, 0)) instance = Internal::DummyNodeInstance::create(); - else if (metaInfo.isSubclassOf("Qt/QWidget", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/QWidget", 1, 0)) instance = Internal::DummyNodeInstance::create(); - else if (metaInfo.isSubclassOf("Qt/QGraphicsView", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/QGraphicsView", 1, 0)) instance = Internal::GraphicsViewNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/QDeclarativeView", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/QDeclarativeView", 1, 0)) instance = Internal::QDeclarativeViewNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/QGraphicsWidget", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/QGraphicsWidget", 1, 0)) instance = Internal::GraphicsWidgetNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/Item", 4, 7)) + else if (metaInfo.isSubclassOf("QDeclarativeBasePositioner", 1, 0)) + instance = Internal::PositionerNodeInstance::create(metaInfo, context, objectToBeWrapped); + else if (metaInfo.isSubclassOf("QtQuick/Item", 1, 0)) instance = Internal::QmlGraphicsItemNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/QGraphicsScene", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/QGraphicsScene", 1, 0)) instance = Internal::GraphicsSceneNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/Component", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/Component", 1, 0)) instance = Internal::ComponentNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/PropertyChanges", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/PropertyChanges", 1, 0)) instance = Internal::QmlPropertyChangesNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/State", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/State", 1, 0)) instance = Internal::QmlStateNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/Transition", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/Transition", 1, 0)) instance = Internal::QmlTransitionNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/Behavior", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/Behavior", 1, 0)) instance = Internal::BehaviorNodeInstance::create(metaInfo, context, objectToBeWrapped); - else if (metaInfo.isSubclassOf("Qt/QtObject", 4, 7)) + else if (metaInfo.isSubclassOf("QtQuick/QtObject", 1, 0)) instance = Internal::ObjectNodeInstance::create(metaInfo, context, objectToBeWrapped); else instance = Internal::DummyNodeInstance::create(); @@ -341,6 +344,11 @@ bool NodeInstance::isTransition() const return m_nodeInstance->isTransition(); } +bool NodeInstance::isPositioner() const +{ + return m_nodeInstance->isPositioner(); +} + /*! \brief Returns if the NodeInstance is a QGraphicsItem. \returns true if this NodeInstance is a QGraphicsItem @@ -460,6 +468,21 @@ bool NodeInstance::hasContent() const return m_nodeInstance->hasContent(); } +bool NodeInstance::isResizable() const +{ + return m_nodeInstance->isResizable(); +} + +bool NodeInstance::isMovable() const +{ + return m_nodeInstance->isMovable(); +} + +bool NodeInstance::isInPositioner() const +{ + return m_nodeInstance->isInPositioner(); +} + bool NodeInstance::hasAnchor(const QString &name) const { return m_nodeInstance->hasAnchor(name); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index ae86167545829fe48246b6eb9b9a3b90ac0d4a60..6f98f505363a3cd9af5b6520316168268a8d6ca3 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -189,7 +189,7 @@ void NodeInstanceView::resetInstanceProperty(const AbstractProperty &property) NodeInstance instance = instanceForNode(property.parentModelNode()); Q_ASSERT(instance.isValid()); const QString name = property.name(); - if (activeStateInstance().isValid() && !property.parentModelNode().metaInfo().isSubclassOf("PropertyChange", 4, 7)) { + if (activeStateInstance().isValid() && !property.parentModelNode().metaInfo().isSubclassOf("PropertyChange", 1, 0)) { bool statePropertyWasReseted = activeStateInstance().resetStateProperty(instance, name, instance.resetVariant(name)); if (!statePropertyWasReseted) instance.resetProperty(name); @@ -207,7 +207,7 @@ void NodeInstanceView::setInstancePropertyBinding(const BindingProperty &propert const QString expression = property.expression(); - if (activeStateInstance().isValid() && !property.parentModelNode().metaInfo().isSubclassOf("PropertyChange", 4, 7)) { + if (activeStateInstance().isValid() && !property.parentModelNode().metaInfo().isSubclassOf("PropertyChange", 1, 0)) { bool stateBindingWasUpdated = activeStateInstance().updateStateBinding(instance, name, expression); if (!stateBindingWasUpdated) { if (property.isDynamic()) @@ -243,7 +243,7 @@ void NodeInstanceView::setInstancePropertyVariant(const VariantProperty &propert const QVariant value = property.value(); - if (activeStateInstance().isValid() && !property.parentModelNode().metaInfo().isSubclassOf("PropertyChange", 4, 7)) { + if (activeStateInstance().isValid() && !property.parentModelNode().metaInfo().isSubclassOf("PropertyChange", 1, 0)) { bool stateValueWasUpdated = activeStateInstance().updateStateVariant(instance, name, value); if (!stateValueWasUpdated) { if (property.isDynamic()) @@ -390,6 +390,7 @@ void NodeInstanceView::instancePropertyChange(const QList<QPair<ModelNode, QStri //\} + void NodeInstanceView::loadNodes(const QList<ModelNode> &nodeList) { foreach (const ModelNode &node, nodeList) @@ -405,8 +406,11 @@ void NodeInstanceView::loadNodes(const QList<ModelNode> &nodeList) instanceForNode(node).setPropertyBinding(property.name(), property.expression()); } - foreach(NodeInstance instance, m_objectInstanceHash.values()) - instance.doComponentComplete(); + QListIterator<ModelNode> listIterator(nodeList); + listIterator.toBack(); + + while (listIterator.hasPrevious()) + instanceForNode(listIterator.previous()).doComponentComplete(); } // TODO: Set base state as current model state diff --git a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp index 61701feb4b883f47d8285cc372ddb2de2f3fe90a..3937759fa258f104c14373fcbf77b2a8fa4d48f4 100644 --- a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp @@ -98,7 +98,8 @@ bool ChildrenChangeEventFilter::eventFilter(QObject * /*object*/, QEvent *event) ObjectNodeInstance::ObjectNodeInstance(QObject *object) : m_deleteHeldInstance(true), m_object(object), - m_metaObject(0) + m_metaObject(0), + m_isInPositioner(false) { } @@ -249,6 +250,11 @@ bool ObjectNodeInstance::isTransition() const return false; } +bool ObjectNodeInstance::isPositioner() const +{ + return false; +} + bool ObjectNodeInstance::equalGraphicsItem(QGraphicsItem * /*item*/) const { return false; @@ -795,6 +801,26 @@ bool ObjectNodeInstance::hasContent() const return false; } +bool ObjectNodeInstance::isResizable() const +{ + return false; +} + +bool ObjectNodeInstance::isMovable() const +{ + return false; +} + +bool ObjectNodeInstance::isInPositioner() const +{ + return m_isInPositioner; +} + +void ObjectNodeInstance::setInPositioner(bool isInPositioner) +{ + m_isInPositioner = isInPositioner; +} + void ObjectNodeInstance::updateAnchors() { } diff --git a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h index 20718b3a9a1841307ecfcd74211f9a5deaef2022..f62963cf44933a636817fdf9604f3fcc51bc741c 100644 --- a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h +++ b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.h @@ -117,6 +117,8 @@ public: virtual bool isQDeclarativeView() const; virtual bool isGraphicsObject() const; virtual bool isTransition() const; + virtual bool isPositioner() const; + virtual bool equalGraphicsItem(QGraphicsItem *item) const; @@ -165,6 +167,10 @@ public: QObject *object() const; virtual bool hasContent() const; + virtual bool isResizable() const; + virtual bool isMovable() const; + bool isInPositioner() const; + void setInPositioner(bool isInPositioner); bool hasBindingForProperty(const QString &name) const; @@ -207,6 +213,7 @@ private: QWeakPointer<QObject> m_object; NodeInstanceMetaObject *m_metaObject; NodeInstanceSignalSpy m_signalSpy; + bool m_isInPositioner; }; diff --git a/src/plugins/qmldesigner/designercore/instances/positionernodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/positionernodeinstance.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ecc8ee3e8f4defcb4681de60891313856d7fe1cc --- /dev/null +++ b/src/plugins/qmldesigner/designercore/instances/positionernodeinstance.cpp @@ -0,0 +1,65 @@ +#include "positionernodeinstance.h" +#include <private/qdeclarativepositioners_p.h> +#include <invalidnodeinstanceexception.h> + +namespace QmlDesigner { +namespace Internal { + +PositionerNodeInstance::PositionerNodeInstance(QDeclarativeBasePositioner *item, bool hasContent) + : QmlGraphicsItemNodeInstance(item, hasContent) +{ +} + +bool PositionerNodeInstance::isPositioner() const +{ + return true; +} + +bool PositionerNodeInstance::isResizable() const +{ + return false; +} + +void PositionerNodeInstance::setPropertyVariant(const QString &name, const QVariant &value) +{ + if (name == "move" || name == "add") + return; + + QmlGraphicsItemNodeInstance::setPropertyVariant(name, value); +} + +void PositionerNodeInstance::setPropertyBinding(const QString &name, const QString &expression) +{ + if (name == "move" || name == "add") + return; + + QmlGraphicsItemNodeInstance::setPropertyBinding(name, expression); +} + +PositionerNodeInstance::Pointer PositionerNodeInstance::create(const NodeMetaInfo &metaInfo, QDeclarativeContext *context, QObject *objectToBeWrapped) +{ + QPair<QGraphicsObject*, bool> objectPair; + + if (objectToBeWrapped) + objectPair = qMakePair(qobject_cast<QGraphicsObject*>(objectToBeWrapped), false); + else + objectPair = GraphicsObjectNodeInstance::createGraphicsObject(metaInfo, context); + + QDeclarativeBasePositioner *positioner = dynamic_cast<QDeclarativeBasePositioner*>(objectPair.first); + + if (positioner == 0) + throw InvalidNodeInstanceException(__LINE__, __FUNCTION__, __FILE__); + + Pointer instance(new PositionerNodeInstance(positioner, objectPair.second)); + + static_cast<QDeclarativeParserStatus*>(positioner)->classBegin(); + + if (objectToBeWrapped) + instance->setDeleteHeldInstance(false); // the object isn't owned + + instance->populateResetValueHash(); + + return instance; +} +} +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/instances/positionernodeinstance.h b/src/plugins/qmldesigner/designercore/instances/positionernodeinstance.h new file mode 100644 index 0000000000000000000000000000000000000000..628b0d160749647244671a559c7056aeae9f453c --- /dev/null +++ b/src/plugins/qmldesigner/designercore/instances/positionernodeinstance.h @@ -0,0 +1,36 @@ +#ifndef POSITIONERNODEINSTANCE_H +#define POSITIONERNODEINSTANCE_H + +#include "qmlgraphicsitemnodeinstance.h" + +QT_BEGIN_NAMESPACE +class QDeclarativeBasePositioner; +QT_END_NAMESPACE + +namespace QmlDesigner { +namespace Internal { + +class PositionerNodeInstance : public QmlGraphicsItemNodeInstance +{ +public: + typedef QSharedPointer<PositionerNodeInstance> Pointer; + typedef QWeakPointer<PositionerNodeInstance> WeakPointer; + + static Pointer create(const NodeMetaInfo &metaInfo, QDeclarativeContext *context, QObject *objectToBeWrapped); + + void setPropertyVariant(const QString &name, const QVariant &value); + void setPropertyBinding(const QString &name, const QString &expression); + + bool isPositioner() const; + + bool isResizable() const; + + +protected: + PositionerNodeInstance(QDeclarativeBasePositioner *item, bool hasContent); +}; + +} // namespace Internal +} // namespace QmlDesigner + +#endif // POSITIONERNODEINSTANCE_H diff --git a/src/plugins/qmldesigner/designercore/instances/proxywidgetnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/proxywidgetnodeinstance.cpp index ecb5ec5ae122637448e824aa3b98037ad4da375f..732502e7a995e6db1db4f23cbe398f5676d1adac 100644 --- a/src/plugins/qmldesigner/designercore/instances/proxywidgetnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/proxywidgetnodeinstance.cpp @@ -44,7 +44,7 @@ ProxyWidgetNodeInstance::ProxyWidgetNodeInstance(QGraphicsProxyWidget *widget) ProxyWidgetNodeInstance::Pointer ProxyWidgetNodeInstance::create(const QString &typeName) { - QObject *object = QDeclarativeMetaType::qmlType(typeName.toLatin1(), 4, 7)->create(); + QObject *object = QDeclarativeMetaType::qmlType(typeName.toLatin1(), 1, 0)->create(); Q_ASSERT(object); if (object == 0) return Pointer(); diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp index 671e5b7c949fc13736c3b8b7cf8d55c6967474d0..524da7551a4e0f72969930a3013ba7f2e0bf49c3 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp @@ -45,6 +45,8 @@ #include <private/qdeclarativeitem_p.h> #include <private/qdeclarativeproperty_p.h> #include <private/qdeclarativerectangle_p.h> +#include <private/qdeclarativepositioners_p.h> + #include <cmath> @@ -56,7 +58,8 @@ namespace Internal { QmlGraphicsItemNodeInstance::QmlGraphicsItemNodeInstance(QDeclarativeItem *item, bool hasContent) : GraphicsObjectNodeInstance(item, hasContent), m_hasHeight(false), - m_hasWidth(false) + m_hasWidth(false), + m_isResizable(true) { } @@ -80,6 +83,9 @@ QmlGraphicsItemNodeInstance::Pointer QmlGraphicsItemNodeInstance::create(const N Pointer instance(new QmlGraphicsItemNodeInstance(qmlGraphicsItem, objectPair.second)); + if (qmlGraphicsItem->inherits("QDeclarativeText")) + instance->setResizable(false); + static_cast<QDeclarativeParserStatus*>(qmlGraphicsItem)->classBegin(); if (objectToBeWrapped) @@ -223,6 +229,8 @@ void QmlGraphicsItemNodeInstance::setPropertyVariant(const QString &name, const } GraphicsObjectNodeInstance::setPropertyVariant(name, value); + + refresh(); } void QmlGraphicsItemNodeInstance::setPropertyBinding(const QString &name, const QString &expression) @@ -288,6 +296,24 @@ void QmlGraphicsItemNodeInstance::resetVertical() setPropertyVariant("height", qmlGraphicsItem()->implicitHeight()); } +static void repositioning(QDeclarativeItem *item) +{ + if (!item) + return; + +// QDeclarativeBasePositioner *positioner = qobject_cast<QDeclarativeBasePositioner*>(item); +// if (positioner) +// positioner->rePositioning(); + + if (item->parentObject()) + repositioning(qobject_cast<QDeclarativeItem*>(item->parentObject())); +} + +void QmlGraphicsItemNodeInstance::refresh() +{ + repositioning(qmlGraphicsItem()); +} + void QmlGraphicsItemNodeInstance::doComponentComplete() { if (qmlGraphicsItem()) { @@ -297,6 +323,16 @@ void QmlGraphicsItemNodeInstance::doComponentComplete() } } +bool QmlGraphicsItemNodeInstance::isResizable() const +{ + return m_isResizable && qmlGraphicsItem() && qmlGraphicsItem()->parentItem(); +} + +void QmlGraphicsItemNodeInstance::setResizable(bool resizeable) +{ + m_isResizable = resizeable; +} + int QmlGraphicsItemNodeInstance::penWidth() const { QDeclarativeRectangle *rectangle = qobject_cast<QDeclarativeRectangle*>(object()); @@ -350,7 +386,19 @@ void QmlGraphicsItemNodeInstance::resetProperty(const QString &name) void QmlGraphicsItemNodeInstance::reparent(const NodeInstance &oldParentInstance, const QString &oldParentProperty, const NodeInstance &newParentInstance, const QString &newParentProperty) { + if (oldParentInstance.isValid() && oldParentInstance.isPositioner()) { + setInPositioner(false); + setMovable(true); + } + GraphicsObjectNodeInstance::reparent(oldParentInstance, oldParentProperty, newParentInstance, newParentProperty); + + if (newParentInstance.isValid() && newParentInstance.isPositioner()) { + setInPositioner(true); + setMovable(false); + } + + refresh(); } //void QmlGraphicsItemNodeInstance::updateAnchors() diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h index 96db456ab9809db9f5f5cfb35f6160ce1abf7b9f..9aa68547e993fcbe4fecf4c50c946f936e0afc98 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h +++ b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.h @@ -70,16 +70,22 @@ public: bool isAnchoredByChildren() const; void doComponentComplete(); + bool isResizable() const; + void setResizable(bool resizeable); + protected: QmlGraphicsItemNodeInstance(QDeclarativeItem *item, bool hasContent); QDeclarativeItem *qmlGraphicsItem() const; QDeclarativeAnchors *anchors() const; void resetHorizontal(); void resetVertical(); + void refresh(); private: //variables bool m_hasHeight; bool m_hasWidth; + bool m_isResizable; + }; } diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp index f350af0c6d521105baba4f69f6a6e5e0789c044f..61f8bf7b27b592d28229810d648b324143262f6a 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/metainfo.cpp @@ -129,7 +129,7 @@ void MetaInfoPrivate::loadPlugins(QDeclarativeEngine *engine) QDeclarativeComponent pluginComponent(engine, 0); QStringList pluginList; - pluginList += "import Qt 4.7"; + pluginList += "import QtQuick 1.0"; pluginList += "import QtWebKit 1.0"; // load maybe useful plugins @@ -144,6 +144,14 @@ void MetaInfoPrivate::loadPlugins(QDeclarativeEngine *engine) pluginComponent.setData(componentString.toLatin1(), QUrl()); } +QString static inline stripPrefix(const QString &typeName) +{ + QStringList list = typeName.split('/'); + if (list.count() == 2) + return list.last(); + return typeName; +} + void MetaInfoPrivate::parseProperties(NodeMetaInfo &nodeMetaInfo, const QMetaObject *qMetaObject) const { Q_ASSERT_X(qMetaObject, Q_FUNC_INFO, "invalid QMetaObject"); @@ -181,7 +189,11 @@ void MetaInfoPrivate::parseProperties(NodeMetaInfo &nodeMetaInfo, const QMetaObj enumerator.setValid(qEnumerator.isValid()); enumerator.setIsFlagType(qEnumerator.isFlag()); - enumerator.setScope(qEnumerator.scope()); + QString scope = qEnumerator.scope(); + if (m_QtTypesToQmlTypes.contains(scope)) + scope = stripPrefix(m_QtTypesToQmlTypes.value(scope)); + + enumerator.setScope(scope); enumerator.setName(qEnumerator.name()); for (int i = 0 ;i < qEnumerator.keyCount(); i++) { @@ -264,6 +276,15 @@ QList<QDeclarativeType*> MetaInfoPrivate::qmlTypes() return list; } + +static inline bool isDepricatedQtType(const QString &typeName) +{ + if (typeName.length() < 3) + return false; + + return (typeName.at(0) == 'Q' && typeName.at(1) == 't' && typeName.at(2) == '/'); +} + void MetaInfoPrivate::typeInfo(const QMetaObject *qMetaObject, QString *typeName, int *majorVersion, int *minorVersion) const { Q_ASSERT(typeName); @@ -281,6 +302,13 @@ void MetaInfoPrivate::typeInfo(const QMetaObject *qMetaObject, QString *typeName majVersion = qmlType->majorVersion(); minVersion = qmlType->minorVersion(); } + if (isDepricatedQtType(qmlType->qmlTypeName())) { //### todo there has to be an alternative + QString properTypeName = qmlType->qmlTypeName(); + properTypeName.replace("Qt/", "QtQuick/"); + *typeName = properTypeName; + majVersion = 1; + minVersion = 0; + } } if (majorVersion) *majorVersion = majVersion; @@ -351,7 +379,9 @@ void MetaInfoPrivate::parseQmlTypes() foreach (QDeclarativeType *qmlType, qmlTypes()) { const QString qtTypeName(qmlType->typeName()); const QString qmlTypeName(qmlType->qmlTypeName()); - m_QtTypesToQmlTypes.insert(qtTypeName, qmlTypeName); + + if (!isDepricatedQtType(qmlType->qmlTypeName())) + m_QtTypesToQmlTypes.insert(qtTypeName, qmlTypeName); } foreach (QDeclarativeType *qmlType, qmlTypes()) { const QMetaObject *qMetaObject = qmlType->metaObject(); @@ -360,6 +390,10 @@ void MetaInfoPrivate::parseQmlTypes() if (m_q->hasNodeMetaInfo(qmlType->qmlTypeName(), qmlType->majorVersion(), qmlType->minorVersion())) continue; + // we ignore the depricated Qt/ namespace + if (isDepricatedQtType(qmlType->qmlTypeName())) + continue; + NodeMetaInfo nodeMetaInfo(*m_q); nodeMetaInfo.setType(qmlType->qmlTypeName(), qmlType->majorVersion(), qmlType->minorVersion()); diff --git a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp index f381e77df13964cd75a727df421b4861bf99aa2c..dbd6c973d13dec8242a695e3382f41619cd3e16a 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp @@ -326,6 +326,15 @@ void SubComponentManagerPrivate::unregisterQmlFile(const QFileInfo &fileInfo, co } } +static inline bool isDepricatedQtType(const QString &typeName) +{ + if (typeName.length() < 3) + return false; + + return (typeName.at(0) == 'Q' && typeName.at(1) == 't' && typeName.at(2) == '/'); +} + + void SubComponentManagerPrivate::registerQmlFile(const QFileInfo &fileInfo, const QString &qualifier, const QDeclarativeDomDocument &document, bool addToLibrary) { @@ -351,9 +360,17 @@ void SubComponentManagerPrivate::registerQmlFile(const QFileInfo &fileInfo, cons NodeMetaInfo nodeInfo(m_metaInfo); nodeInfo.setType(componentName, -1, -1); nodeInfo.setQmlFile(fileInfo.filePath()); - nodeInfo.setSuperClass(rootObject.objectType(), - rootObject.objectTypeMajorVersion(), - rootObject.objectTypeMinorVersion()); + if (!isDepricatedQtType(rootObject.objectType())) { + nodeInfo.setSuperClass(rootObject.objectType(), + rootObject.objectTypeMajorVersion(), + rootObject.objectTypeMinorVersion()); + } else { + QString properClassName = rootObject.objectType(); + properClassName.replace("Qt/", "QtQuick/"); + nodeInfo.setSuperClass(properClassName, + 1, + 0); + } if (addToLibrary) { // Add file components to the library diff --git a/src/plugins/qmldesigner/designercore/model/abstractview.cpp b/src/plugins/qmldesigner/designercore/model/abstractview.cpp index 9fc221a0df149762fc866253e60463ec8b3ac8f7..2c8a58bb49dd704c2226a921090be23ab3b69a40 100644 --- a/src/plugins/qmldesigner/designercore/model/abstractview.cpp +++ b/src/plugins/qmldesigner/designercore/model/abstractview.cpp @@ -348,6 +348,15 @@ NodeInstanceView *AbstractView::nodeInstanceView() const } } +RewriterView *AbstractView::rewriterView() const +{ + if (model()) { + return model()->m_d->rewriterView(); + } else { + return 0; + } +} + QList<ModelNode> AbstractView::allModelNodes() { return toModelNodeList(model()->m_d->allNodes()); @@ -370,7 +379,7 @@ void AbstractView::emitCustomNotification(const QString &identifier, const QList void AbstractView::emitInstancePropertyChange(const QList<QPair<ModelNode, QString> > &propertyList) { - if (model()) + if (model() && nodeInstanceView() == this) model()->m_d->notifyInstancePropertyChange(propertyList); } diff --git a/src/plugins/qmldesigner/designercore/model/basetexteditmodifier.cpp b/src/plugins/qmldesigner/designercore/model/basetexteditmodifier.cpp index 3127be6ead8c9d12d3c0b801494770d538027daf..113ee3b471e8964113639a2f3bf48b60e6578ab8 100644 --- a/src/plugins/qmldesigner/designercore/model/basetexteditmodifier.cpp +++ b/src/plugins/qmldesigner/designercore/model/basetexteditmodifier.cpp @@ -32,6 +32,7 @@ #include <extensionsystem/pluginmanager.h> #include <qmljs/qmljsdocument.h> #include <qmljs/qmljsmodelmanagerinterface.h> +#include <qmljseditor/qmljseditor.h> #include <texteditor/tabsettings.h> using namespace QmlDesigner; @@ -46,7 +47,7 @@ void BaseTextEditModifier::indent(int offset, int length) if (length == 0 || offset < 0 || offset + length >= text().length()) return; - if (TextEditor::BaseTextEditor *bte = dynamic_cast<TextEditor::BaseTextEditor*>(plainTextEdit())) { + if (TextEditor::BaseTextEditor *bte = qobject_cast<TextEditor::BaseTextEditor*>(plainTextEdit())) { // find the applicable block: QTextDocument *doc = bte->document(); QTextCursor tc(doc); @@ -60,13 +61,23 @@ void BaseTextEditModifier::indent(int offset, int length) int BaseTextEditModifier::indentDepth() const { - if (TextEditor::BaseTextEditor *bte = dynamic_cast<TextEditor::BaseTextEditor*>(plainTextEdit())) { + if (TextEditor::BaseTextEditor *bte = qobject_cast<TextEditor::BaseTextEditor*>(plainTextEdit())) { return bte->tabSettings().m_indentSize; } else { return 0; } } +bool BaseTextEditModifier::renameId(const QString &oldId, const QString &newId) +{ + if (QmlJSEditor::Internal::QmlJSTextEditor *qmljse = qobject_cast<QmlJSEditor::Internal::QmlJSTextEditor*>(plainTextEdit())) { + qmljse->renameId(oldId, newId); + return true; + } else { + return false; + } +} + namespace { static inline QmlJS::ModelManagerInterface *getModelManager() { diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index 8f93153cb6f372228bb63c66387212e4f4d5bdd5..56035fb53ff25dcf8a318d81d322bfa089dff432 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -90,7 +90,7 @@ ModelPrivate::ModelPrivate(Model *model) : m_q(model), m_writeLock(false) { - m_rootInternalNode = createNode("Qt/Item", 4, 7, PropertyListType()); + m_rootInternalNode = createNode("QtQuick/Item", 1, 0, PropertyListType()); } ModelPrivate::~ModelPrivate() @@ -1218,7 +1218,18 @@ bool ModelPrivate::hasId(const QString &id) const QList<InternalNodePointer> ModelPrivate::allNodes() const { - return m_nodeSet.toList(); + // the item must be ordered! + + QList<InternalNodePointer> nodeList; + + if (m_rootInternalNode.isNull() || !m_rootInternalNode->isValid()) + return nodeList; + + nodeList.append(m_rootInternalNode); + nodeList.append(m_rootInternalNode->allSubNodes()); + nodeList.append((m_nodeSet - nodeList.toSet()).toList()); + + return nodeList; } bool ModelPrivate::isWriteLocked() const diff --git a/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp b/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp index 111d98091ceabfbe1f9803bebf03a86c4e73b8c4..ad5b5ab829478159350c740d5b71195ab98576af 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp @@ -51,12 +51,12 @@ void QmlModelStateOperation::setTarget(const ModelNode &target) bool QmlPropertyChanges::isValid() const { - return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isSubclassOf("Qt/PropertyChanges", 4, 7); + return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isSubclassOf("QtQuick/PropertyChanges", 1, 0); } bool QmlModelStateOperation::isValid() const { - return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isSubclassOf("QDeclarativeStateOperation", 4, 7); + return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isSubclassOf("QDeclarativeStateOperation", 1, 0); } void QmlPropertyChanges::removeProperty(const QString &name) diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index cafa7754ce6d299e25b6bfd963e2e0bcf9d736da..dd3426c53a91487341977a52f4efce007e3f8f55 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -46,7 +46,7 @@ namespace QmlDesigner { bool QmlItemNode::isValid() const { - return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isValid() && modelNode().metaInfo().isSubclassOf("Qt/Item", 4, 7); + return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isValid() && modelNode().metaInfo().isSubclassOf("QtQuick/Item", 1, 0); } bool QmlItemNode::isRootNode() const @@ -201,6 +201,21 @@ bool QmlItemNode::instanceIsAnchoredByChildren() const return nodeInstance().isAnchoredByChildren(); } +bool QmlItemNode::instanceIsMovable() const +{ + return nodeInstance().isMovable(); +} + +bool QmlItemNode::instanceIsResizable() const +{ + return nodeInstance().isResizable(); +} + +bool QmlItemNode::instanceIsInPositioner() const +{ + return nodeInstance().isInPositioner(); +} + QRectF QmlItemNode::instanceBoundingRect() const { return nodeInstance().boundingRect(); @@ -287,7 +302,7 @@ QmlModelState QmlModelStateGroup::addState(const QString &name) PropertyListType propertyList; propertyList.append(qMakePair(QString("name"), QVariant(name))); - ModelNode newState = modelNode().view()->createModelNode("Qt/State", 4, 7, propertyList); + ModelNode newState = modelNode().view()->createModelNode("QtQuick/State", 1, 0, propertyList); modelNode().nodeListProperty("states").reparentHere(newState); return newState; diff --git a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp index c1d710467e44bc6028d41aa2568f48b15168e95c..e9dfbad5399969588f65d128499fcdd78282c557 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlmodelview.cpp @@ -98,8 +98,8 @@ QmlItemNode QmlModelView::createQmlItemNodeFromImage(const QString &imageName, c QmlItemNode newNode; RewriterTransaction transaction = beginRewriterTransaction(); { - const QString newImportUrl = QLatin1String("Qt"); - const QString newImportVersion = QLatin1String("4.7"); + const QString newImportUrl = QLatin1String("QtQuick"); + const QString newImportVersion = QLatin1String("1.0"); Import newImport = Import::createLibraryImport(newImportUrl, newImportVersion); foreach (const Import &import, model()->imports()) { @@ -129,7 +129,7 @@ QmlItemNode QmlModelView::createQmlItemNodeFromImage(const QString &imageName, c } propertyPairList.append(qMakePair(QString("source"), QVariant(relativeImageName))); - newNode = createQmlItemNode("Qt/Image", 4, 7, propertyPairList); + newNode = createQmlItemNode("QtQuick/Image", 1, 0, propertyPairList); parentNode.nodeAbstractProperty("data").reparentHere(newNode); Q_ASSERT(newNode.isValid()); @@ -325,7 +325,9 @@ static bool isTransformProperty(const QString &name) << "z" << "rotation" << "scale" - << "transformOrigin"); + << "transformOrigin" + << "paintedWidth" + << "paintedHeight"); return transformProperties.contains(name); } @@ -385,9 +387,12 @@ void QmlModelView::activateState(const QmlModelState &state) return; if (m_state == state) - return; + return; + + m_state = state; //This is hacky. m_state should be controlled by the instances + //### todo: If the state thumbnail code gets refactored. + // this is not neccessary anymore. - QmlModelState oldState = m_state; NodeInstance newStateInstance = instanceForModelNode(state.modelNode()); diff --git a/src/plugins/qmldesigner/designercore/model/qmlstate.cpp b/src/plugins/qmldesigner/designercore/model/qmlstate.cpp index bd17f083f17c5861ceced091925fe7ad30d91cc1..934f32d528f1ff220c737149b17095180f67e05d 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlstate.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlstate.cpp @@ -179,7 +179,7 @@ void QmlModelState::addChangeSetIfNotExists(const ModelNode &node) return; //changeSet already there } - ModelNode newChangeSet = modelNode().view()->createModelNode("Qt/PropertyChanges", 4, 7); + ModelNode newChangeSet = modelNode().view()->createModelNode("QtQuick/PropertyChanges", 1, 0); modelNode().nodeListProperty("changes").reparentHere(newChangeSet); QmlPropertyChanges(newChangeSet).setTarget(node); @@ -246,7 +246,7 @@ bool QmlModelState::isValid() const { return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isValid() && - (modelNode().metaInfo().isSubclassOf("Qt/State", 4, 7) || isBaseState()); + (modelNode().metaInfo().isSubclassOf("QtQuick/State", 1, 0) || isBaseState()); } /** @@ -280,7 +280,7 @@ QmlModelState QmlModelState::duplicate(const QString &name) const // QmlModelState newState(stateGroup().addState(name)); PropertyListType propertyList; propertyList.append(qMakePair(QString("name"), QVariant(name))); - QmlModelState newState ( qmlModelView()->createModelNode("Qt/State", 4, 7, propertyList) ); + QmlModelState newState ( qmlModelView()->createModelNode("QtQuick/State", 1, 0, propertyList) ); foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) { ModelNode newModelNode(qmlModelView()->createModelNode(childNode.type(), childNode.majorVersion(), childNode.minorVersion())); diff --git a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp index f912214db8fd9ba1fb3cf96104ad5fba659f3653..0ddece841d3651ea2326e414d2426400ccda9f09 100644 --- a/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmltextgenerator.cpp @@ -35,6 +35,7 @@ #include "nodelistproperty.h" #include "qmltextgenerator.h" #include "variantproperty.h" +#include <propertymetainfo.h> #include "model.h" using namespace QmlDesigner; @@ -94,25 +95,30 @@ QString QmlTextGenerator::toQml(const AbstractProperty &property, int indentDept if (property.name() == QLatin1String("id")) return stringValue; - switch (value.type()) { - case QVariant::Bool: - if (value.value<bool>()) - return QLatin1String("true"); - else - return QLatin1String("false"); + if (variantProperty.metaInfo().isValid() && variantProperty.metaInfo().isEnumType()) { + return variantProperty.metaInfo().enumerator().scope() + '.' + stringValue; + } else { + + switch (value.type()) { + case QVariant::Bool: + if (value.value<bool>()) + return QLatin1String("true"); + else + return QLatin1String("false"); - case QVariant::Color: - return QString(QLatin1String("\"%1\"")).arg(properColorName(value.value<QColor>())); + case QVariant::Color: + return QString(QLatin1String("\"%1\"")).arg(properColorName(value.value<QColor>())); - case QVariant::Double: - case QVariant::Int: - case QVariant::LongLong: - case QVariant::UInt: - case QVariant::ULongLong: - return stringValue; + case QVariant::Double: + case QVariant::Int: + case QVariant::LongLong: + case QVariant::UInt: + case QVariant::ULongLong: + return stringValue; - default: - return QString(QLatin1String("\"%1\"")).arg(escape(stringValue)); + default: + return QString(QLatin1String("\"%1\"")).arg(escape(stringValue)); + } } } else { Q_ASSERT("Unknown property type"); diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index f610f3f6b307eda2d570a700ba0a3ae95861b6dc..19837bee51f621441240017508eea2bc410a1cfb 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -71,6 +71,16 @@ RewriterView::Error::Error(const QDeclarativeError &qmlError): { } +RewriterView::Error::Error(const QString &shortDescription) : + m_type(ParseError), + m_line(1), + m_column(0), + m_description(shortDescription), + m_url() +{ +} + + QString RewriterView::Error::toString() const { QString str; @@ -539,6 +549,14 @@ bool RewriterView::modificationGroupActive() return m_modificationGroupActive; } +bool RewriterView::renameId(const QString& oldId, const QString& newId) +{ + if (textModifier()) + return textModifier()->renameId(oldId, newId); + + return false; +} + void RewriterView::qmlTextChanged() { if (inErrorState()) diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 0627e0e6e88766f0239b2a62a28212d83b582bba..4b4d9d6bd5f340e0648e3640647a90cc34f5e3f8 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -31,6 +31,8 @@ #include "bindingproperty.h" #include "filemanager/firstdefinitionfinder.h" #include "filemanager/objectlengthcalculator.h" +#include "filemanager/qmlrefactoring.h" +#include "rewriteaction.h" #include "nodeproperty.h" #include "propertyparser.h" #include "textmodifier.h" @@ -47,6 +49,7 @@ #include <QtDeclarative/QDeclarativeComponent> #include <QtDeclarative/QDeclarativeEngine> #include <QtCore/QSet> +#include <QtGui/QMessageBox> using namespace QmlJS; using namespace QmlJS::AST; @@ -587,6 +590,40 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH setupImports(doc, differenceHandler); + foreach (const Import &import, m_rewriterView->model()->imports()) { + if (import.url() == "Qt") { + if (QMessageBox::question (0, QObject::tr("Deprecated import: import Qt 4.7", "QmlDesigner::TextToModelMerger"), + QObject::tr("Deprecated import: import Qt 4.7\nuse import QtQuick 1.0 instead.\n\nDo you want to automatically fix the import?", + "QmlDesigner::TextToModelMerger"), + QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok) == QMessageBox::Ok) { + QmlDesigner::QmlRefactoring refactoring(doc, *m_rewriterView->textModifier(), QStringList()); + RemoveImportRewriteAction removeImportRewriteAction(import); + + m_rewriterView->textModifier()->startGroup(); + + Import qtQuickImport = Import::createLibraryImport("QtQuick", "1.0"); + AddImportRewriteAction addImportRewriteAction(qtQuickImport); + bool success = addImportRewriteAction.execute(refactoring, *m_rewriterView->positionStorage()); + + if (success) { + success = refactoring.reparseDocument(); + } + success = removeImportRewriteAction.execute(refactoring, *m_rewriterView->positionStorage()); + + m_rewriterView->textModifier()->commitGroup(); + + return false; + } else { + QList<RewriterView::Error> errors; + RewriterView::Error error(QObject::tr("Deprecated import: import Qt 4.7 use import QtQuick 1.0 instead", + "QmlDesigner::TextToModelMerger")); + errors.append(error); + m_rewriterView->setErrors(errors); + return false; + } + } + } + UiObjectMember *astRootNode = 0; if (UiProgram *program = doc->qmlProgram()) if (program->members) @@ -667,7 +704,7 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, if (UiArrayBinding *array = cast<UiArrayBinding *>(member)) { const QString astPropertyName = flatten(array->qualifiedId); - if (typeName == QLatin1String("Qt/PropertyChanges") || context->lookupProperty(QString(), array->qualifiedId)) { + if (typeName == QLatin1String("QtQuick/PropertyChanges") || context->lookupProperty(QString(), array->qualifiedId)) { AbstractProperty modelProperty = modelNode.property(astPropertyName); QList<UiObjectMember *> arrayMembers; for (UiArrayMemberList *iter = array->members; iter; iter = iter->next) @@ -701,7 +738,7 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, const Interpreter::Value *propertyType = 0; const Interpreter::ObjectValue *containingObject = 0; QString name; - if (context->lookupProperty(QString(), binding->qualifiedId, &propertyType, &containingObject, &name) || typeName == QLatin1String("Qt/PropertyChanges")) { + if (context->lookupProperty(QString(), binding->qualifiedId, &propertyType, &containingObject, &name) || typeName == QLatin1String("QtQuick/PropertyChanges")) { AbstractProperty modelProperty = modelNode.property(astPropertyName); if (context->isArrayProperty(propertyType, containingObject, name)) { syncArrayProperty(modelProperty, QList<QmlJS::AST::UiObjectMember*>() << member, context, differenceHandler); @@ -745,7 +782,7 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, if (!defaultPropertyItems.isEmpty()) { if (defaultPropertyName.isEmpty()) { - if (modelNode.type() != QLatin1String("Qt/Component")) + if (modelNode.type() != QLatin1String("QtQuick/Component")) qWarning() << "No default property for node type" << modelNode.type() << ", ignoring child items."; } else { AbstractProperty modelProperty = modelNode.property(defaultPropertyName); @@ -805,7 +842,7 @@ QString TextToModelMerger::syncScriptBinding(ModelNode &modelNode, return QString(); if (isLiteralValue(script)) { - if (modelNode.type() == QLatin1String("Qt/PropertyChanges")) { + if (modelNode.type() == QLatin1String("QtQuick/PropertyChanges")) { AbstractProperty modelProperty = modelNode.property(astPropertyName); const QVariant variantValue(deEscape(stripQuotes(astValue))); syncVariantProperty(modelProperty, variantValue, QString(), differenceHandler); @@ -830,7 +867,7 @@ QString TextToModelMerger::syncScriptBinding(ModelNode &modelNode, syncVariantProperty(modelProperty, enumValue, QString(), differenceHandler); return astPropertyName; } else { // Not an enum, so: - if (modelNode.type() == QLatin1String("Qt/PropertyChanges") || context->lookupProperty(prefix, script->qualifiedId)) { + if (modelNode.type() == QLatin1String("QtQuick/PropertyChanges") || context->lookupProperty(prefix, script->qualifiedId)) { AbstractProperty modelProperty = modelNode.property(astPropertyName); syncExpressionProperty(modelProperty, astValue, differenceHandler); return astPropertyName; @@ -959,7 +996,7 @@ void TextToModelMerger::syncNodeListProperty(NodeListProperty &modelListProperty QString name; if (UiObjectDefinition *definition = cast<UiObjectDefinition *>(arrayMember)) name = flatten(definition->qualifiedTypeNameId); - if (name == QLatin1String("Qt/Component")) + if (name == QLatin1String("QtQuick/Component")) setupComponent(newNode); } @@ -1273,7 +1310,7 @@ void ModelAmender::idsDiffer(ModelNode &modelNode, const QString &qmlId) void TextToModelMerger::setupComponent(const ModelNode &node) { - Q_ASSERT(node.type() == QLatin1String("Qt/Component")); + Q_ASSERT(node.type() == QLatin1String("QtQuick/Component")); QString componentText = m_rewriterView->extractText(QList<ModelNode>() << node).value(node); diff --git a/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.cpp b/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.cpp index f4e419ad09e1920963f6f9fa8b1297c776db4728..1480471785db97b5cc149c97ca416080e195f480 100644 --- a/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.cpp +++ b/src/plugins/qmldesigner/qtquickplugin/qtquickplugin.cpp @@ -38,8 +38,8 @@ namespace QmlDesigner { QtQuickPlugin::QtQuickPlugin() { - qmlRegisterType<QDeclarativePen>("Qt", 4, 7, "Pen"); - qmlRegisterType<QDeclarativeScaleGrid>("Qt", 4, 7, "ScaleGrid"); + qmlRegisterType<QDeclarativePen>("QtQuick", 1, 0, "Pen"); + qmlRegisterType<QDeclarativeScaleGrid>("QtQuick", 1, 0, "ScaleGrid"); } QString QtQuickPlugin::pluginName() diff --git a/src/plugins/qmldesigner/qtquickplugin/quick.metainfo b/src/plugins/qmldesigner/qtquickplugin/quick.metainfo index 139a82bc056dbb7f80ebb1400392938b8c93f2ae..4c828305a62fc57eaaa35fe853f20bff47594ea5 100644 --- a/src/plugins/qmldesigner/qtquickplugin/quick.metainfo +++ b/src/plugins/qmldesigner/qtquickplugin/quick.metainfo @@ -1,5 +1,5 @@ <metainfo> - <node name="Qt/Item" isContainer="true" icon=":/qtquickplugin/images/item-icon16.png"> + <node name="QtQuick/Item" isContainer="true" icon=":/qtquickplugin/images/item-icon16.png"> <propertyDefaultValue name="width" type="int" defaultValue="600"/> <propertyDefaultValue name="height" type="int" defaultValue="400"/> <itemlibraryentry name="Item" category="Qt - Basic" icon=":/qtquickplugin/images/item-icon.png"> @@ -7,14 +7,14 @@ <property name="height" type="int" value="200"/> </itemlibraryentry> </node> - <node name="Qt/Rectangle" category="Qt - Basic" isContainer="true" icon=":/qtquickplugin/images/rect-icon16.png"> + <node name="QtQuick/Rectangle" category="Qt - Basic" isContainer="true" icon=":/qtquickplugin/images/rect-icon16.png"> <itemlibraryentry name="Rectangle" category="Qt - Basic" icon=":/qtquickplugin/images/rect-icon.png"> <property name="width" type="int" value="100"/> <property name="height" type="int" value="100"/> <property name="color" type="QColor" value="#ffffff"/> </itemlibraryentry> </node> - <node name="Qt/Text" icon=":/qtquickplugin/images/text-icon16.png"> + <node name="QtQuick/Text" icon=":/qtquickplugin/images/text-icon16.png"> <propertyDefaultValue name="width" type="int" defaultValue="80"/> <propertyDefaultValue name="height" type="int" defaultValue="20"/> <itemlibraryentry name="Text" category="Qt - Basic" icon=":/qtquickplugin/images/text-icon.png"> @@ -23,7 +23,7 @@ <property name="text" type="QString" value="text"/> </itemlibraryentry> </node> - <node name="Qt/TextEdit" isContainer="false" icon=":/qtquickplugin/images/text-edit-icon16.png"> + <node name="QtQuick/TextEdit" isContainer="false" icon=":/qtquickplugin/images/text-edit-icon16.png"> <propertyDefaultValue name="width" type="int" defaultValue="80"/> <propertyDefaultValue name="height" type="int" defaultValue="20"/> <itemlibraryentry name="Text Edit" category="Qt - Basic" icon=":/qtquickplugin/images/text-edit-icon.png"> @@ -32,7 +32,7 @@ <property name="text" type="QString" value="textEdit"/> </itemlibraryentry> </node> - <node name="Qt/TextInput" isContainer="false" icon=":/qtquickplugin/images/text-input-icon16.png"> + <node name="QtQuick/TextInput" isContainer="false" icon=":/qtquickplugin/images/text-input-icon16.png"> <propertyDefaultValue name="width" type="int" defaultValue="80"/> <propertyDefaultValue name="height" type="int" defaultValue="20"/> <itemlibraryentry name="Text Input" category="Qt - Basic" icon=":/qtquickplugin/images/text-input-icon.png"> @@ -41,13 +41,13 @@ <property name="text" type="QString" value="textInput"/> </itemlibraryentry> </node> - <node name="Qt/MouseArea" icon=":/qtquickplugin/images/mouse-area-icon16.png"> + <node name="QtQuick/MouseArea" icon=":/qtquickplugin/images/mouse-area-icon16.png"> <itemlibraryentry name="Mouse Area" category="Qt - Interaction" icon=":/qtquickplugin/images/mouse-area-icon.png"> <property name="width" type="int" value="100"/> <property name="height" type="int" value="100"/> </itemlibraryentry> </node> - <node name="Qt/Image" isContainer="true" icon=":/qtquickplugin/images/image-icon16.png"> + <node name="QtQuick/Image" isContainer="true" icon=":/qtquickplugin/images/image-icon16.png"> <propertyDefaultValue name="width" type="int" defaultValue="200"/> <propertyDefaultValue name="height" type="int" defaultValue="200"/> <itemlibraryentry name="Image" category="Qt - Basic" icon=":/qtquickplugin/images/image-icon.png"> @@ -56,7 +56,7 @@ <property name="source" type="QUrl" value="qrc:/qtquickplugin/images/template_image.png"/> </itemlibraryentry> </node> - <node name="Qt/BorderImage" icon=":/qtquickplugin/images/border-image-icon16.png"> + <node name="QtQuick/BorderImage" icon=":/qtquickplugin/images/border-image-icon16.png"> <propertyDefaultValue name="width" type="int" defaultValue="200"/> <propertyDefaultValue name="height" type="int" defaultValue="200"/> <itemlibraryentry name="Border Image" category="Qt - Basic" icon=":/qtquickplugin/images/border-image-icon.png"> @@ -65,7 +65,7 @@ <property name="source" type="QUrl" value="qrc:/qtquickplugin/images/template_image.png"/> </itemlibraryentry> </node> - <node name="Qt/Flickable" icon=":/qtquickplugin/images/flickable-icon16.png"> + <node name="QtQuick/Flickable" icon=":/qtquickplugin/images/flickable-icon16.png"> <propertyDefaultValue name="width" type="int" defaultValue="300"/> <propertyDefaultValue name="height" type="int" defaultValue="300"/> <itemlibraryentry name="Flickable" category="Qt - Widgets" icon=":/qtquickplugin/images/flickable-icon.png"> @@ -73,7 +73,7 @@ <property name="height" type="int" value="300"/> </itemlibraryentry> </node> - <node name="Qt/Flipable" icon=":/qtquickplugin/images/flipable-icon16.png"> + <node name="QtQuick/Flipable" icon=":/qtquickplugin/images/flipable-icon16.png"> <propertyDefaultValue name="width" type="int" defaultValue="300"/> <propertyDefaultValue name="height" type="int" defaultValue="300"/> <itemlibraryentry name="Flipable" category="Qt - Widgets" icon=":/qtquickplugin/images/flipable-icon.png"> @@ -81,28 +81,28 @@ <property name="height" type="int" value="300"/> </itemlibraryentry> </node> - <node name="Qt/GridView" icon=":/qtquickplugin/images/gridview-icon16.png"> + <node name="QtQuick/GridView" icon=":/qtquickplugin/images/gridview-icon16.png"> <itemlibraryentry name="Grid View" category="Qt - Views" icon=":/qtquickplugin/images/gridview-icon.png"> <property name="width" type="int" value="300"/> <property name="height" type="int" value="300"/> </itemlibraryentry> </node> - <node name="Qt/ListView" icon=":/qtquickplugin/images/listview-icon16.png"> + <node name="QtQuick/ListView" icon=":/qtquickplugin/images/listview-icon16.png"> <itemlibraryentry name="List View" category="Qt - Views" icon=":/qtquickplugin/images/listview-icon.png"> <property name="width" type="int" value="300"/> <property name="height" type="int" value="300"/> </itemlibraryentry> </node> - <node name="Qt/PathView" icon=":/qtquickplugin/images/pathview-icon16.png"> + <node name="QtQuick/PathView" icon=":/qtquickplugin/images/pathview-icon16.png"> <itemlibraryentry name="Path View" category="Qt - Views" icon=":/qtquickplugin/images/pathview-icon.png"> <property name="width" type="int" value="300"/> <property name="height" type="int" value="300"/> </itemlibraryentry> </node> - <node name="Qt/FocusScope" icon=":/qtquickplugin/images/focusscope-icon16.png"> + <node name="QtQuick/FocusScope" icon=":/qtquickplugin/images/focusscope-icon16.png"> <propertyDefaultValue name="width" type="int" defaultValue="100"/> <propertyDefaultValue name="height" type="int" defaultValue="100"/> <itemlibraryentry name="Focus Scope" category="Qt - Interaction" icon=":/qtquickplugin/images/focusscope-icon.png"> diff --git a/src/plugins/qmljseditor/QmlJSEditor.pluginspec b/src/plugins/qmljseditor/QmlJSEditor.pluginspec index 42f5dd2cd856d4db22c0ce72c040b07d1e0b46ef..adc6a03345b9cf7a79586fecba15b151c421f202 100644 --- a/src/plugins/qmljseditor/QmlJSEditor.pluginspec +++ b/src/plugins/qmljseditor/QmlJSEditor.pluginspec @@ -1,4 +1,4 @@ -<plugin name="QmlJSEditor" version="2.0.91" compatVersion="2.0.91"> +<plugin name="QmlJSEditor" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,8 +14,8 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Editor for QML and JavaScript.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp index 0d21a6101a5c78040b4df2c78cee72c5d4fd9dcb..0fcfd8108ac62e0465d18641ec28daba67f522b7 100644 --- a/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp +++ b/src/plugins/qmljseditor/qmljscomponentfromobjectdef.cpp @@ -149,20 +149,20 @@ public: QList<QmlJSQuickFixOperation::Ptr> ComponentFromObjectDef::match(const QmlJSQuickFixState &state) { - QList<QmlJSQuickFixOperation::Ptr> result; const int pos = state.currentFile().cursor().position(); QList<Node *> path = state.semanticInfo().astPath(pos); for (int i = path.size() - 1; i >= 0; --i) { Node *node = path.at(i); if (UiObjectDefinition *objDef = cast<UiObjectDefinition *>(node)) { + if (!state.currentFile().isCursorOn(objDef->qualifiedTypeNameId)) + return noResult(); // check that the node is not the root node if (i > 0 && !cast<UiProgram*>(path.at(i - 1))) { - result.append(QmlJSQuickFixOperation::Ptr(new Operation(state, objDef))); - return result; + return singleResult(new Operation(state, objDef)); } } } - return result; + return noResult(); } diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index c983f50ec8d43930b9c45b82c677cf063a0a73df..c3a465b27b5db0f975019b57f4e24935ccc93042 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -63,6 +63,7 @@ #include <texteditor/texteditorsettings.h> #include <texteditor/syntaxhighlighter.h> #include <texteditor/refactoroverlay.h> +#include <texteditor/tooltip/tooltip.h> #include <qmldesigner/qmldesignerconstants.h> #include <utils/changeset.h> #include <utils/uncommentselection.h> @@ -82,7 +83,8 @@ enum { UPDATE_DOCUMENT_DEFAULT_INTERVAL = 100, UPDATE_USES_DEFAULT_INTERVAL = 150, - UPDATE_OUTLINE_INTERVAL = 500 // msecs after new semantic info has been arrived / cursor has moved + UPDATE_OUTLINE_INTERVAL = 500, // msecs after new semantic info has been arrived / cursor has moved + TOOLTIP_TIMER_INTERVAL = 1000 // delay after we show the Quick ToolBar after a tooltip }; using namespace QmlJS; @@ -678,6 +680,7 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) : m_modelManager(0), m_contextPane(0), m_updateSelectedElements(false), + m_toolTipPosition(0), m_findReferences(new FindReferences(this)) { qRegisterMetaType<QmlJSEditor::Internal::SemanticInfo>("QmlJSEditor::Internal::SemanticInfo"); @@ -725,6 +728,11 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) : m_cursorPositionTimer->setSingleShot(true); connect(m_cursorPositionTimer, SIGNAL(timeout()), this, SLOT(updateCursorPositionNow())); + m_toolTipTimer = new QTimer(this); + m_toolTipTimer->setInterval(TOOLTIP_TIMER_INTERVAL); + m_toolTipTimer->setSingleShot(true); + connect(m_toolTipTimer, SIGNAL(timeout()), this, SLOT(updateToolTipNow())); + baseTextDocument()->setSyntaxHighlighter(new Highlighter(document())); m_modelManager = ExtensionSystem::PluginManager::instance()->getObject<ModelManagerInterface>(); @@ -750,6 +758,9 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) : connect(this, SIGNAL(refactorMarkerClicked(TextEditor::Internal::RefactorMarker)), SLOT(onRefactorMarkerClicked(TextEditor::Internal::RefactorMarker))); + connect(editableInterface(), SIGNAL(tooltipRequested(TextEditor::ITextEditor*, QPoint, int)), + SLOT(onTooltipRequested(TextEditor::ITextEditor*, QPoint, int))); + setRequestMarkEnabled(true); } @@ -973,8 +984,8 @@ static UiQualifiedId *qualifiedTypeNameId(UiObjectMember *m) void QmlJSTextEditor::updateCursorPositionNow() { - if (m_contextPane && document() && !semanticInfo().document.isNull() && - document()->revision() == semanticInfo().document->editorRevision()) + if (m_contextPane && document() && semanticInfo().isValid() + && document()->revision() == semanticInfo().document->editorRevision()) { Node *oldNode = m_semanticInfo.declaringMemberNoProperties(m_oldCursorPosition); Node *newNode = m_semanticInfo.declaringMemberNoProperties(position()); @@ -1034,6 +1045,18 @@ void QmlJSTextEditor::setUpdateSelectedElements(bool value) m_updateSelectedElements = value; } +void QmlJSTextEditor::renameId(const QString &oldId, const QString &newId) +{ + Utils::ChangeSet changeSet; + + foreach (const AST::SourceLocation &loc, m_semanticInfo.idLocations.value(oldId)) { + changeSet.replace(loc.begin(), loc.end(), newId); + } + + QTextCursor tc = textCursor(); + changeSet.apply(&tc); +} + void QmlJSTextEditor::updateUsesNow() { if (document()->revision() != m_semanticInfo.revision()) { @@ -1202,7 +1225,7 @@ void QmlJSTextEditor::setSelectedElements() endPos = textCursor().position(); } - if (m_semanticInfo.document) { + if (m_semanticInfo.isValid()) { SelectedElement selectedMembers; QList<UiObjectMember *> members = selectedMembers(m_semanticInfo.lookupContext(), startPos, endPos); @@ -1231,14 +1254,7 @@ void QmlJSTextEditor::renameIdUnderCursor() QLineEdit::Normal, id, &ok); if (ok) { - Utils::ChangeSet changeSet; - - foreach (const AST::SourceLocation &loc, m_semanticInfo.idLocations.value(id)) { - changeSet.replace(loc.begin(), loc.end(), newId); - } - - QTextCursor tc = textCursor(); - changeSet.apply(&tc); + renameId(id, newId); } } @@ -1443,7 +1459,7 @@ void QmlJSTextEditor::findUsages() void QmlJSTextEditor::showContextPane() { - if (m_contextPane) { + if (m_contextPane && m_semanticInfo.isValid()) { Node *newNode = m_semanticInfo.declaringMemberNoProperties(position()); m_contextPane->apply(editableInterface(), m_semanticInfo.lookupContext(), newNode, false, true); m_oldCursorPosition = position(); @@ -1458,6 +1474,28 @@ void QmlJSTextEditor::performQuickFix(int index) op->perform(); } +void QmlJSTextEditor::onTooltipRequested(TextEditor::ITextEditor* /* editor */, QPoint /* point */, int position) +{ + m_toolTipPosition = position; + if (m_contextPane) { + m_toolTipTimer->start(); + } +} + +void QmlJSTextEditor::updateToolTipNow() +{ + if (!TextEditor::ToolTip::instance()->isVisible()) + return; + + if (m_contextPane && m_semanticInfo.isValid()) { + Node *newNode = m_semanticInfo.declaringMemberNoProperties(m_toolTipPosition); + m_contextPane->apply(editableInterface(), m_semanticInfo.lookupContext(), newNode, false, true); + m_oldCursorPosition = m_toolTipPosition; + QList<TextEditor::Internal::RefactorMarker> markers; + setRefactorMarkers(markers); + } +} + void QmlJSTextEditor::contextMenuEvent(QContextMenuEvent *e) { QMenu *menu = new QMenu(); @@ -1536,8 +1574,12 @@ void QmlJSTextEditor::wheelEvent(QWheelEvent *event) BaseTextEditor::wheelEvent(event); - if (visible) - m_contextPane->apply(editableInterface(), m_semanticInfo.lookupContext(), m_semanticInfo.declaringMemberNoProperties(position()), false, true); + if (visible) { + LookupContext::Ptr lookupContext; + if (m_semanticInfo.isValid()) + lookupContext = m_semanticInfo.lookupContext(); + m_contextPane->apply(editableInterface(), lookupContext, m_semanticInfo.declaringMemberNoProperties(position()), false, true); + } } void QmlJSTextEditor::resizeEvent(QResizeEvent *event) @@ -1838,8 +1880,12 @@ QModelIndex QmlJSTextEditor::indexForPosition(unsigned cursorPosition, const QMo bool QmlJSTextEditor::hideContextPane() { bool b = (m_contextPane) && m_contextPane->widget()->isVisible(); - if (b) - m_contextPane->apply(editableInterface(), m_semanticInfo.lookupContext(), 0, false); + if (b) { + LookupContext::Ptr lookupContext; + if (m_semanticInfo.isValid()) + lookupContext = m_semanticInfo.lookupContext(); + m_contextPane->apply(editableInterface(), lookupContext, 0, false); + } return b; } diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h index 8071dd03d803e99fe23a637d275c0c8a945085b3..6f5930d7410e0222648bf448082ee0d4dfd8e8eb 100644 --- a/src/plugins/qmljseditor/qmljseditor.h +++ b/src/plugins/qmljseditor/qmljseditor.h @@ -243,6 +243,8 @@ public: bool updateSelectedElements() const; void setUpdateSelectedElements(bool value); + void renameId(const QString &oldId, const QString &newId); + public slots: void followSymbolUnderCursor(); void findUsages(); @@ -279,6 +281,8 @@ private slots: void onRefactorMarkerClicked(const TextEditor::Internal::RefactorMarker &marker); void performQuickFix(int index); + void onTooltipRequested(TextEditor::ITextEditor* editor, QPoint point, int position); + void updateToolTipNow(); protected: void contextMenuEvent(QContextMenuEvent *e); @@ -316,6 +320,7 @@ private: QTimer *m_semanticRehighlightTimer; QTimer *m_updateOutlineTimer; QTimer *m_updateOutlineIndexTimer; + QTimer *m_toolTipTimer; QTimer *m_cursorPositionTimer; QComboBox *m_outlineCombo; QmlOutlineModel *m_outlineModel; @@ -333,6 +338,7 @@ private: QmlJS::IContextPane *m_contextPane; int m_oldCursorPosition; bool m_updateSelectedElements; + int m_toolTipPosition; FindReferences *m_findReferences; }; diff --git a/src/plugins/qmljseditor/qmljseditorconstants.h b/src/plugins/qmljseditor/qmljseditorconstants.h index 342f6e94acf7e03e34e1fb730130048705e71320..753a143bc2818e6554286f056edd7ae767135be2 100644 --- a/src/plugins/qmljseditor/qmljseditorconstants.h +++ b/src/plugins/qmljseditor/qmljseditorconstants.h @@ -58,6 +58,10 @@ const char * const JS_MIMETYPE = "application/javascript"; const char *const TASK_CATEGORY_QML = "Task.Category.Qml"; +const char * const WIZARD_CATEGORY_QML = "S.Qml"; +const char * const WIZARD_TR_CATEGORY_QML = QT_TRANSLATE_NOOP("QmlJsEditor", "QML"); + + } // namespace Constants } // namespace QmlJSEditor diff --git a/src/plugins/qmljseditor/qmljseditorplugin.cpp b/src/plugins/qmljseditor/qmljseditorplugin.cpp index e7cbfde813177674576369e52f7e5615d47ba3d1..7e3e74b3ab7e5b44e64ae711681845aba1c93276 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.cpp +++ b/src/plugins/qmljseditor/qmljseditorplugin.cpp @@ -134,10 +134,10 @@ bool QmlJSEditorPlugin::initialize(const QStringList & /*arguments*/, QString *e addObject(m_editor); Core::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard); - wizardParameters.setCategory(QLatin1String(Core::Constants::WIZARD_CATEGORY_QT)); - wizardParameters.setDisplayCategory(QCoreApplication::translate("Core", Core::Constants::WIZARD_TR_CATEGORY_QT)); - wizardParameters.setDescription(tr("Creates a Qt QML file.")); - wizardParameters.setDisplayName(tr("Qt QML File")); + wizardParameters.setCategory(QLatin1String(Constants::WIZARD_CATEGORY_QML)); + wizardParameters.setDisplayCategory(QCoreApplication::translate("QmlJsEditor", Constants::WIZARD_TR_CATEGORY_QML)); + wizardParameters.setDescription(tr("Creates a QML file.")); + wizardParameters.setDisplayName(tr("QML File")); wizardParameters.setId(QLatin1String("Q.Qml")); addAutoReleasedObject(new QmlFileWizard(wizardParameters, core)); diff --git a/src/plugins/qmljseditor/qmljsmodelmanager.cpp b/src/plugins/qmljseditor/qmljsmodelmanager.cpp index 8a832bccfe358b3010d67915cec11c07d508e9e4..f30357ff64ce8bad4c4db034a250811cffb3d54a 100644 --- a/src/plugins/qmljseditor/qmljsmodelmanager.cpp +++ b/src/plugins/qmljseditor/qmljsmodelmanager.cpp @@ -41,6 +41,7 @@ #include <qmljs/parser/qmldirparser_p.h> #include <texteditor/itexteditor.h> #include <projectexplorer/project.h> +#include <projectexplorer/projectexplorer.h> #include <QDir> #include <QFile> @@ -472,29 +473,13 @@ void ModelManager::onLoadPluginTypes(const QString &libraryPath, const QString & if (m_runningQmldumps.values().contains(canonicalLibraryPath)) return; - static QString qmldumpPath; - if (qmldumpPath.isNull()) { - QDir qmldumpExecutable(QCoreApplication::applicationDirPath()); -#ifdef Q_OS_WIN - qmldumpPath = qmldumpExecutable.absoluteFilePath(QLatin1String("qmldump.exe")); -#else // !Q_OS_WIN -# ifdef Q_OS_MAC - qmldumpPath = qmldumpExecutable.absoluteFilePath(QLatin1String("qmldump.app/Contents/MacOS/qmldump")); -# else // !Q_OS_MAC - qmldumpPath = qmldumpExecutable.absoluteFilePath(QLatin1String("qmldump")); -# endif // Q_OS_MAC -#endif // Q_OS_WIN - QFileInfo qmldumpFileInfo(qmldumpPath); - if (!qmldumpFileInfo.exists()) { - qWarning() << "ModelManager::loadQmlPluginTypes: qmldump executable does not exist at" << qmldumpPath; - qmldumpPath.clear(); - } else if (!qmldumpFileInfo.isFile()) { - qWarning() << "ModelManager::loadQmlPluginTypes: " << qmldumpPath << " is not a file"; - qmldumpPath.clear(); - } + ProjectExplorer::Project *activeProject = ProjectExplorer::ProjectExplorerPlugin::instance()->startupProject(); + if (!activeProject) + return; - } - if (qmldumpPath.isEmpty()) + ProjectInfo info = projectInfo(activeProject); + + if (info.qmlDumpPath.isEmpty()) return; QProcess *process = new QProcess(this); @@ -503,7 +488,7 @@ void ModelManager::onLoadPluginTypes(const QString &libraryPath, const QString & QStringList args; args << importPath; args << importUri; - process->start(qmldumpPath, args); + process->start(info.qmlDumpPath, args); m_runningQmldumps.insert(process, canonicalLibraryPath); } diff --git a/src/plugins/qmljseditor/qmljsoutline.cpp b/src/plugins/qmljseditor/qmljsoutline.cpp index 8d37863d6ef9e58b9dac7d361222af8c9333a795..b1465819dee035146e6fad825e419fa154549797 100644 --- a/src/plugins/qmljseditor/qmljsoutline.cpp +++ b/src/plugins/qmljseditor/qmljsoutline.cpp @@ -83,7 +83,7 @@ QmlJSOutlineWidget::QmlJSOutlineWidget(QWidget *parent) : layout->addWidget(m_treeView); m_showBindingsAction = new QAction(this); - m_showBindingsAction->setText(tr("Show all bindings")); + m_showBindingsAction->setText(tr("Show All Bindings")); m_showBindingsAction->setCheckable(true); m_showBindingsAction->setChecked(true); connect(m_showBindingsAction, SIGNAL(toggled(bool)), this, SLOT(setShowBindings(bool))); diff --git a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp index 1e47392f70da1364e1164e79de674f2215cb4f50..e0828ab840e789e0406588ecb2c4535d39e75d59 100644 --- a/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp +++ b/src/plugins/qmljseditor/qmljsoutlinetreeview.cpp @@ -1,71 +1,11 @@ #include "qmljsoutlinetreeview.h" #include "qmloutlinemodel.h" -#include <QtCore/QDebug> -#include <QtGui/QApplication> -#include <QtGui/QPainter> +#include <utils/annotateditemdelegate.h> namespace QmlJSEditor { namespace Internal { -QmlJSOutlineItemDelegate::QmlJSOutlineItemDelegate(QObject *parent) : - QStyledItemDelegate(parent) -{ -} - -QSize QmlJSOutlineItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - QStyleOptionViewItemV4 opt = option; - initStyleOption(&opt, index); - - const QString annotation = index.data(QmlOutlineModel::AnnotationRole).toString(); - if (!annotation.isEmpty()) - opt.text += " " + annotation; - - QStyle *style = QApplication::style(); - return style->sizeFromContents(QStyle::CT_ItemViewItem, &opt, QSize(), 0); -} - -void QmlJSOutlineItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - QStyleOptionViewItemV4 opt = option; - initStyleOption(&opt, index); - - if (opt.state & QStyle::State_Selected) - painter->fillRect(opt.rect, option.palette.highlight()); - - const QString typeString = index.data(Qt::DisplayRole).toString(); - const QString annotationString = index.data(QmlOutlineModel::AnnotationRole).toString(); - - QStyle *style = QApplication::style(); - - style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, 0); - - if (!annotationString.isEmpty()) { - QPalette::ColorRole textColorRole = QPalette::Text; - if (option.state & QStyle::State_Selected) { - textColorRole = QPalette::HighlightedText; - } - - // calculate sizes of icon, type. - QPixmap iconPixmap = opt.icon.pixmap(opt.rect.size()); - QRect iconRect = style->itemPixmapRect(opt.rect, Qt::AlignLeft, iconPixmap); - QRect typeRect = style->itemTextRect(opt.fontMetrics, opt.rect, Qt::AlignLeft, true, typeString); - QRect annotationRect = style->itemTextRect(opt.fontMetrics, opt.rect, Qt::AlignLeft | Qt::AlignBottom, true, - annotationString); - - static int space = opt.fontMetrics.width(" "); - annotationRect.adjust(iconRect.width() + typeRect.width() + space, 0, - iconRect.width() + typeRect.width() + space, 0); - - QPalette disabledPalette(opt.palette); - disabledPalette.setCurrentColorGroup(QPalette::Disabled); - style->drawItemText(painter, annotationRect, Qt::AlignLeft, disabledPalette, true, - annotationString, textColorRole); - } -} - QmlJSOutlineTreeView::QmlJSOutlineTreeView(QWidget *parent) : Utils::NavigationTreeView(parent) { @@ -80,7 +20,9 @@ QmlJSOutlineTreeView::QmlJSOutlineTreeView(QWidget *parent) : setRootIsDecorated(false); - QmlJSOutlineItemDelegate *itemDelegate = new QmlJSOutlineItemDelegate(this); + Utils::AnnotatedItemDelegate *itemDelegate = new Utils::AnnotatedItemDelegate(this); + itemDelegate->setDelimiter(QLatin1String(" ")); + itemDelegate->setAnnotationRole(QmlOutlineModel::AnnotationRole); setItemDelegateForColumn(0, itemDelegate); } diff --git a/src/plugins/qmljseditor/qmljsoutlinetreeview.h b/src/plugins/qmljseditor/qmljsoutlinetreeview.h index 23fb29ca375abb04e96071a2b5a9eeddef81639a..a16afad081c713e8016831fc532986630a38633e 100644 --- a/src/plugins/qmljseditor/qmljsoutlinetreeview.h +++ b/src/plugins/qmljseditor/qmljsoutlinetreeview.h @@ -2,21 +2,10 @@ #define QMLJSOUTLINETREEVIEW_H #include <utils/navigationtreeview.h> -#include <QtGui/QStyledItemDelegate> namespace QmlJSEditor { namespace Internal { -class QmlJSOutlineItemDelegate : public QStyledItemDelegate -{ -public: - explicit QmlJSOutlineItemDelegate(QObject *parent = 0); - - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; - void paint(QPainter *painter, const QStyleOptionViewItem &option, - const QModelIndex &index) const; -}; - class QmlJSOutlineTreeView : public Utils::NavigationTreeView { Q_OBJECT diff --git a/src/plugins/qmljseditor/qmljsquickfix.cpp b/src/plugins/qmljseditor/qmljsquickfix.cpp index 3b5ce360f98b7de8fd9a0cb343977c04ab746c5b..018442cd8bc1b93235b22d2fb8e04489b9a4a8f7 100644 --- a/src/plugins/qmljseditor/qmljsquickfix.cpp +++ b/src/plugins/qmljseditor/qmljsquickfix.cpp @@ -117,6 +117,17 @@ QList<QuickFixOperation::Ptr> QmlJSQuickFixFactory::matchingOperations(QuickFixS return QList<TextEditor::QuickFixOperation::Ptr>(); } +QList<QmlJSQuickFixOperation::Ptr> QmlJSQuickFixFactory::noResult() +{ + return QList<QmlJSQuickFixOperation::Ptr>(); +} + +QList<QmlJSQuickFixOperation::Ptr> QmlJSQuickFixFactory::singleResult(QmlJSQuickFixOperation *operation) +{ + QList<QmlJSQuickFixOperation::Ptr> result; + result.append(QmlJSQuickFixOperation::Ptr(operation)); + return result; +} QmlJSQuickFixCollector::QmlJSQuickFixCollector() { diff --git a/src/plugins/qmljseditor/qmljsquickfix.h b/src/plugins/qmljseditor/qmljsquickfix.h index 419cc73b9020124135e35ae0ff1ad4b0c602fb88..57e6b2521f6868ed357d1551267520fd440d62f6 100644 --- a/src/plugins/qmljseditor/qmljsquickfix.h +++ b/src/plugins/qmljseditor/qmljsquickfix.h @@ -132,6 +132,9 @@ public: QmlJSQuickFixOperation objects. */ virtual QList<QmlJSQuickFixOperation::Ptr> match(const QmlJSQuickFixState &state) = 0; + + static QList<QmlJSQuickFixOperation::Ptr> noResult(); + static QList<QmlJSQuickFixOperation::Ptr> singleResult(QmlJSQuickFixOperation *operation); }; namespace Internal { diff --git a/src/plugins/qmljseditor/qmljsquickfixes.cpp b/src/plugins/qmljseditor/qmljsquickfixes.cpp index 145bcee52275e627fa60c16d062d628ed0b7719b..006ce4b457ecd7dc6fb7f1539a0eb994ea5f55ea 100644 --- a/src/plugins/qmljseditor/qmljsquickfixes.cpp +++ b/src/plugins/qmljseditor/qmljsquickfixes.cpp @@ -52,8 +52,6 @@ class SplitInitializerOp: public QmlJSQuickFixFactory public: virtual QList<QmlJSQuickFixOperation::Ptr> match(const QmlJSQuickFixState &state) { - QList<QmlJSQuickFixOperation::Ptr> result; - UiObjectInitializer *objectInitializer = 0; const int pos = state.currentFile().cursor().position(); @@ -70,8 +68,9 @@ public: } if (objectInitializer) - result.append(QSharedPointer<QmlJSQuickFixOperation>(new Operation(state, objectInitializer))); - return result; + return singleResult(new Operation(state, objectInitializer)); + else + return noResult(); } private: diff --git a/src/plugins/qmljseditor/qmljsrefactoringchanges.cpp b/src/plugins/qmljseditor/qmljsrefactoringchanges.cpp index a612b070cdfdbd442e786f92e834c9f52cb698b2..bf7ed2018c0b5d895e48d7c1eb89641a87e0a267 100644 --- a/src/plugins/qmljseditor/qmljsrefactoringchanges.cpp +++ b/src/plugins/qmljseditor/qmljsrefactoringchanges.cpp @@ -30,6 +30,7 @@ #include "qmljsrefactoringchanges.h" #include "qmljseditorcodeformatter.h" +#include <qmljs/parser/qmljsast_p.h> #include <qmljs/qmljsmodelmanagerinterface.h> #include <texteditor/texteditorsettings.h> #include <texteditor/tabsettings.h> @@ -109,11 +110,33 @@ Document::Ptr QmlJSRefactoringFile::qmljsDocument() const return m_qmljsDocument; } -unsigned QmlJSRefactoringFile::startOf(const QmlJS::AST::SourceLocation &loc) const +unsigned QmlJSRefactoringFile::startOf(const AST::SourceLocation &loc) const { return position(loc.startLine, loc.startColumn); } +bool QmlJSRefactoringFile::isCursorOn(AST::UiObjectMember *ast) const +{ + const unsigned pos = cursor().position(); + + return ast->firstSourceLocation().begin() <= pos + && pos <= ast->lastSourceLocation().end(); +} + +bool QmlJSRefactoringFile::isCursorOn(AST::UiQualifiedId *ast) const +{ + const unsigned pos = cursor().position(); + + if (ast->identifierToken.begin() > pos) + return false; + + AST::UiQualifiedId *last = ast; + while (last->next) + last = last->next; + + return pos <= ast->identifierToken.end(); +} + QmlJSRefactoringChanges *QmlJSRefactoringFile::refactoringChanges() const { return static_cast<QmlJSRefactoringChanges *>(m_refactoringChanges); diff --git a/src/plugins/qmljseditor/qmljsrefactoringchanges.h b/src/plugins/qmljseditor/qmljsrefactoringchanges.h index 993012e9c8cb1332696ff6ae142f6441d9751317..b1ba3d4e466557192212363c714c9a4015e4a04a 100644 --- a/src/plugins/qmljseditor/qmljsrefactoringchanges.h +++ b/src/plugins/qmljseditor/qmljsrefactoringchanges.h @@ -57,6 +57,9 @@ public: */ unsigned startOf(const QmlJS::AST::SourceLocation &loc) const; + bool isCursorOn(QmlJS::AST::UiObjectMember *ast) const; + bool isCursorOn(QmlJS::AST::UiQualifiedId *ast) const; + private: QmlJSRefactoringChanges *refactoringChanges() const; diff --git a/src/plugins/qmljseditor/qmloutlinemodel.cpp b/src/plugins/qmljseditor/qmloutlinemodel.cpp index 595cf7afe7aacd3af05de55133c8f1344a7e393d..b2a44a93666ebf8366d3be43af4ad20495a8ad9c 100644 --- a/src/plugins/qmljseditor/qmloutlinemodel.cpp +++ b/src/plugins/qmljseditor/qmloutlinemodel.cpp @@ -38,7 +38,7 @@ QVariant QmlOutlineItem::data(int role) const if (role == Qt::ToolTipRole) { AST::SourceLocation location = m_outlineModel->sourceLocation(index()); AST::UiQualifiedId *uiQualifiedId = m_outlineModel->idNode(index()); - if (!uiQualifiedId || !location.isValid()) + if (!uiQualifiedId || !location.isValid() || !m_outlineModel->m_semanticInfo.isValid()) return QVariant(); QList<AST::Node *> astPath = m_outlineModel->m_semanticInfo.astPath(location.begin()); diff --git a/src/plugins/qmljsinspector/QmlJSInspector.pluginspec b/src/plugins/qmljsinspector/QmlJSInspector.pluginspec index f5fa841291bc36b24edd40826789676847e57939..712c90be5d191581522d281b9db9610830aa89f2 100644 --- a/src/plugins/qmljsinspector/QmlJSInspector.pluginspec +++ b/src/plugins/qmljsinspector/QmlJSInspector.pluginspec @@ -1,4 +1,4 @@ -<plugin name="QmlJSInspector" version="2.0.91" compatVersion="2.0.91" experimental="true"> +<plugin name="QmlJSInspector" version="2.1.81" compatVersion="2.1.81" experimental="true"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -20,11 +20,11 @@ will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.</license> <description>Debugger for QML files</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="QmlProjectManager" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="CppTools" version="2.0.91"/> - <dependency name="CppEditor" version="2.0.91"/> - <dependency name="Debugger" version="2.0.91"/> - <dependency name="QmlJSEditor" version="2.0.91"/> + <dependency name="QmlProjectManager" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="CppTools" version="2.1.81"/> + <dependency name="CppEditor" version="2.1.81"/> + <dependency name="Debugger" version="2.1.81"/> + <dependency name="QmlJSEditor" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.cpp b/src/plugins/qmljsinspector/qmljsclientproxy.cpp index fca7bb4fe0c76e1d3fac60636ab1ff3222df3290..42f15c14d8786d01c1a6439892c2e4477e6869d0 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.cpp +++ b/src/plugins/qmljsinspector/qmljsclientproxy.cpp @@ -53,10 +53,10 @@ ClientProxy::ClientProxy(Debugger::QmlAdapter *adapter, QObject *parent) , m_designClient(0) , m_engineQuery(0) , m_contextQuery(0) + , m_isConnected(false) { m_requestObjectsTimer.setSingleShot(true); m_requestObjectsTimer.setInterval(3000); - connect(m_adapter, SIGNAL(aboutToDisconnect()), SLOT(disconnectFromServer())); connect(m_client, SIGNAL(newObjects()), this, SLOT(newObjects())); connect(&m_requestObjectsTimer, SIGNAL(timeout()), this, SLOT(refreshObjectTree())); connectToServer(); @@ -65,8 +65,12 @@ ClientProxy::ClientProxy(Debugger::QmlAdapter *adapter, QObject *parent) void ClientProxy::connectToServer() { m_designClient = new QmlJSObserverClient(m_adapter->connection(), this); - emit connected(); + + m_adapter->logServiceStatusChange(m_designClient->name(), m_designClient->status()); + + connect(m_designClient, SIGNAL(connectedStatusChanged(QDeclarativeDebugClient::Status)), + this, SLOT(clientStatusChanged(QDeclarativeDebugClient::Status))); connect(m_designClient, SIGNAL(currentObjectsChanged(QList<int>)), SLOT(onCurrentObjectsChanged(QList<int>))); connect(m_designClient, SIGNAL(colorPickerActivated()), @@ -87,12 +91,27 @@ void ClientProxy::connectToServer() SIGNAL(selectedColorChanged(QColor))); connect(m_designClient, SIGNAL(contextPathUpdated(QStringList)), SIGNAL(contextPathUpdated(QStringList))); - reloadEngines(); + + updateConnected(); +} + +void ClientProxy::clientStatusChanged(QDeclarativeDebugClient::Status status) +{ + QString serviceName; + if (QDeclarativeDebugClient *client = qobject_cast<QDeclarativeDebugClient*>(sender())) { + serviceName = client->name(); + } + + m_adapter->logServiceStatusChange(serviceName, status); + + updateConnected(); } void ClientProxy::disconnectFromServer() { if (m_designClient) { + disconnect(m_designClient, SIGNAL(connectedStatusChanged(QDeclarativeDebugClient::Status)), + this, SLOT(clientStatusChanged(QDeclarativeDebugClient::Status))); disconnect(m_designClient, SIGNAL(currentObjectsChanged(QList<int>)), this, SLOT(onCurrentObjectsChanged(QList<int>))); disconnect(m_designClient, SIGNAL(colorPickerActivated()), @@ -111,8 +130,6 @@ void ClientProxy::disconnectFromServer() this, SIGNAL(selectedColorChanged(QColor))); disconnect(m_designClient, SIGNAL(contextPathUpdated(QStringList)), this, SIGNAL(contextPathUpdated(QStringList))); - disconnect(m_designClient, SIGNAL(treeRefreshRequested()), - this, SLOT(refreshObjectTree())); delete m_designClient; m_designClient = 0; @@ -128,6 +145,8 @@ void ClientProxy::disconnectFromServer() qDeleteAll(m_objectTreeQuery); m_objectTreeQuery.clear(); + + updateConnected(); } void ClientProxy::refreshObjectTree() @@ -164,7 +183,7 @@ void ClientProxy::onCurrentObjectsChanged(const QList< int >& debugIds, bool req void ClientProxy::setSelectedItemsByObjectId(const QList<QDeclarativeDebugObjectReference> &objectRefs) { - if (isConnected() && m_designClient) + if (isConnected()) m_designClient->setSelectedItemsByObjectId(objectRefs); } @@ -285,7 +304,7 @@ QDeclarativeDebugExpressionQuery *ClientProxy::queryExpressionResult(int objectD void ClientProxy::clearComponentCache() { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->clearComponentCache(); } @@ -365,7 +384,7 @@ void ClientProxy::objectTreeFetched(QDeclarativeDebugQuery::State state) buildDebugIdHashRecursive(it); emit objectTreeUpdated(); - if (isDesignClientConnected()) { + if (isConnected()) { if (!m_designClient->selectedItemIds().isEmpty()) onCurrentObjectsChanged(m_designClient->selectedItemIds(), false); @@ -410,74 +429,84 @@ void ClientProxy::buildDebugIdHashRecursive(const QDeclarativeDebugObjectReferen void ClientProxy::reloadQmlViewer() { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->reloadViewer(); } void ClientProxy::setDesignModeBehavior(bool inDesignMode) { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->setDesignModeBehavior(inDesignMode); } void ClientProxy::setAnimationSpeed(qreal slowdownFactor) { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->setAnimationSpeed(slowdownFactor); } void ClientProxy::changeToColorPickerTool() { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->changeToColorPickerTool(); } void ClientProxy::changeToZoomTool() { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->changeToZoomTool(); } void ClientProxy::changeToSelectTool() { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->changeToSelectTool(); } void ClientProxy::changeToSelectMarqueeTool() { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->changeToSelectMarqueeTool(); } void ClientProxy::createQmlObject(const QString &qmlText, int parentDebugId, const QStringList &imports, const QString &filename) { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->createQmlObject(qmlText, parentDebugId, imports, filename); } void ClientProxy::destroyQmlObject(int debugId) { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->destroyQmlObject(debugId); } void ClientProxy::reparentQmlObject(int debugId, int newParent) { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->reparentQmlObject(debugId, newParent); } void ClientProxy::setContextPathIndex(int contextIndex) { - if (isDesignClientConnected()) + if (isConnected()) m_designClient->setContextPathIndex(contextIndex); } - -bool ClientProxy::isDesignClientConnected() const +void ClientProxy::updateConnected() { - return (m_designClient && m_adapter->isConnected()); + bool isConnected = m_designClient && m_designClient->status() == QDeclarativeDebugClient::Enabled + && m_client && m_client->status() == QDeclarativeEngineDebug::Enabled; + + if (isConnected != m_isConnected) { + m_isConnected = isConnected; + if (isConnected) { + emit connected(); + reloadEngines(); + } else { + emit disconnected(); + } + } } void ClientProxy::reloadEngines() @@ -518,7 +547,7 @@ Debugger::QmlAdapter *ClientProxy::qmlAdapter() const bool ClientProxy::isConnected() const { - return m_adapter->isConnected(); + return m_isConnected; } void ClientProxy::newObjects() diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.h b/src/plugins/qmljsinspector/qmljsclientproxy.h index 1c7c2162f66e57c186e58ba8c582d9740f578c61..bfd628e64f0074e76821ed87074f94c410e35341 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.h +++ b/src/plugins/qmljsinspector/qmljsclientproxy.h @@ -92,7 +92,6 @@ signals: void selectedItemsChanged(const QList<QDeclarativeDebugObjectReference> &selectedItems); void connected(); - void aboutToDisconnect(); void disconnected(); void colorPickerActivated(); @@ -125,6 +124,7 @@ public slots: private slots: void disconnectFromServer(); void connectToServer(); + void clientStatusChanged(QDeclarativeDebugClient::Status status); void contextChanged(); @@ -135,7 +135,7 @@ private slots: void newObjects(); private: - bool isDesignClientConnected() const; + void updateConnected(); void reloadEngines(); QList<QDeclarativeDebugObjectReference> objectReferences(const QDeclarativeDebugObjectReference &objectRef) const; @@ -157,6 +157,8 @@ private: QList<QDeclarativeDebugEngineReference> m_engines; QTimer m_requestObjectsTimer; DebugIdHash m_debugIdHash; + + bool m_isConnected; }; } // namespace Internal diff --git a/src/plugins/qmljsinspector/qmljsinspector.cpp b/src/plugins/qmljsinspector/qmljsinspector.cpp index 4f0c39fe0ebcb1e9fb5aa0fc5162a3f15b1daf3e..6c25985f643e16e40aba4234ea6ae3083dfc876c 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.cpp +++ b/src/plugins/qmljsinspector/qmljsinspector.cpp @@ -501,6 +501,20 @@ void InspectorUi::setSelectedItemsByObjectReference(QList<QDeclarativeDebugObjec gotoObjectReferenceDefinition(objectReferences.first()); } +void InspectorUi::enable() +{ + m_toolbar->enable(); + m_crumblePath->setEnabled(true); + m_objectTreeWidget->setEnabled(true); +} + +void InspectorUi::disable() +{ + m_toolbar->disable(); + m_crumblePath->setEnabled(false); + m_objectTreeWidget->setEnabled(false); +} + void InspectorUi::gotoObjectReferenceDefinition(const QDeclarativeDebugObjectReference &obj) { Q_UNUSED(obj); @@ -686,8 +700,8 @@ void InspectorUi::disableLivePreview() void InspectorUi::setupToolbar(bool doConnect) { if (doConnect) { - connect(m_clientProxy, SIGNAL(connected()), m_toolbar, SLOT(enable())); - connect(m_clientProxy, SIGNAL(disconnected()), m_toolbar, SLOT(disable())); + connect(m_clientProxy, SIGNAL(connected()), this, SLOT(enable())); + connect(m_clientProxy, SIGNAL(disconnected()), this, SLOT(disable())); connect(m_toolbar, SIGNAL(designModeSelected(bool)), m_clientProxy, SLOT(setDesignModeBehavior(bool))); connect(m_toolbar, SIGNAL(reloadSelected()), m_clientProxy, SLOT(reloadQmlViewer())); @@ -705,10 +719,9 @@ void InspectorUi::setupToolbar(bool doConnect) connect(m_clientProxy, SIGNAL(selectedColorChanged(QColor)), m_toolbar, SLOT(setSelectedColor(QColor))); connect(m_clientProxy, SIGNAL(animationSpeedChanged(qreal)), m_toolbar, SLOT(setAnimationSpeed(qreal))); - m_toolbar->enable(); } else { - disconnect(m_clientProxy, SIGNAL(connected()), m_toolbar, SLOT(enable())); - disconnect(m_clientProxy, SIGNAL(disconnected()), m_toolbar, SLOT(disable())); + disconnect(m_clientProxy, SIGNAL(connected()), this, SLOT(enable())); + disconnect(m_clientProxy, SIGNAL(disconnected()), this, SLOT(disable())); disconnect(m_toolbar, SIGNAL(designModeSelected(bool)), m_clientProxy, SLOT(setDesignModeBehavior(bool))); disconnect(m_toolbar, SIGNAL(reloadSelected()), m_clientProxy, SLOT(reloadQmlViewer())); @@ -726,6 +739,11 @@ void InspectorUi::setupToolbar(bool doConnect) disconnect(m_clientProxy, SIGNAL(selectedColorChanged(QColor)), m_toolbar, SLOT(setSelectedColor(QColor))); disconnect(m_clientProxy, SIGNAL(animationSpeedChanged(qreal)), m_toolbar, SLOT(setAnimationSpeed(qreal))); - m_toolbar->disable(); + } + + if (m_clientProxy && m_clientProxy->isConnected()) { + enable(); + } else { + disable(); } } diff --git a/src/plugins/qmljsinspector/qmljsinspector.h b/src/plugins/qmljsinspector/qmljsinspector.h index 494b0fde91328eb8e1268267a11a132a2be48a31..ae56e4eca1a8fd167217a2a6b853b538f16e095c 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.h +++ b/src/plugins/qmljsinspector/qmljsinspector.h @@ -119,6 +119,8 @@ public slots: void setApplyChangesToQmlObserver(bool applyChanges); private slots: + void enable(); + void disable(); void gotoObjectReferenceDefinition(const QDeclarativeDebugObjectReference &obj); void setSelectedItemsByObjectReference(QList<QDeclarativeDebugObjectReference> objectReferences); diff --git a/src/plugins/qmljsinspector/qmljsinspectorplugin.cpp b/src/plugins/qmljsinspector/qmljsinspectorplugin.cpp index a972d1ba50587201e7824afe18754faf0adc65d6..a89f00d0baaeec606350b633fd4eb95173ff2a1f 100644 --- a/src/plugins/qmljsinspector/qmljsinspectorplugin.cpp +++ b/src/plugins/qmljsinspector/qmljsinspectorplugin.cpp @@ -118,14 +118,16 @@ void InspectorPlugin::extensionsInitialized() m_inspectorUi->setupUi(); } -// The adapter object is only added to the pool with a succesful connection, -// so we can immediately init our stuff. void InspectorPlugin::objectAdded(QObject *object) { Debugger::QmlAdapter *adapter = qobject_cast<Debugger::QmlAdapter *>(object); if (adapter) { m_clientProxy = new ClientProxy(adapter); - m_inspectorUi->connected(m_clientProxy); + if (m_clientProxy->isConnected()) { + clientProxyConnected(); + } else { + connect(m_clientProxy, SIGNAL(connected()), this, SLOT(clientProxyConnected())); + } return; } @@ -148,4 +150,9 @@ void InspectorPlugin::aboutToRemoveObject(QObject *obj) } } +void InspectorPlugin::clientProxyConnected() +{ + m_inspectorUi->connected(m_clientProxy); +} + Q_EXPORT_PLUGIN(InspectorPlugin) diff --git a/src/plugins/qmljsinspector/qmljsinspectorplugin.h b/src/plugins/qmljsinspector/qmljsinspectorplugin.h index ea4a378c74e701231e940e64b4b3dcd6799a1e36..f0f9500fb744a912c8d6bb16c11efd9d94714959 100644 --- a/src/plugins/qmljsinspector/qmljsinspectorplugin.h +++ b/src/plugins/qmljsinspector/qmljsinspectorplugin.h @@ -74,6 +74,7 @@ public: private slots: void objectAdded(QObject *object); void aboutToRemoveObject(QObject *obj); + void clientProxyConnected(); private: void createActions(); diff --git a/src/plugins/qmljsinspector/qmljsobserverclient.cpp b/src/plugins/qmljsinspector/qmljsobserverclient.cpp index 2670008ad6563be71a7b8d3cd814366b053ad345..aef5b972388c1c8534dfa3b87cd0dac004f30948 100644 --- a/src/plugins/qmljsinspector/qmljsobserverclient.cpp +++ b/src/plugins/qmljsinspector/qmljsobserverclient.cpp @@ -53,7 +53,11 @@ QmlJSObserverClient::QmlJSObserverClient(QDeclarativeDebugConnection *client, : QDeclarativeDebugClient(QLatin1String("QDeclarativeObserverMode"), client) , m_connection(client) { - setEnabled(true); +} + +void QmlJSObserverClient::statusChanged(Status status) +{ + emit connectedStatusChanged(status); } void QmlJSObserverClient::messageReceived(const QByteArray &message) diff --git a/src/plugins/qmljsinspector/qmljsobserverclient.h b/src/plugins/qmljsinspector/qmljsobserverclient.h index 7928984f8981df741275b47f685658170c6c3845..2c7753a4397aa5f75d657c907ab8be78c9d0cefb 100644 --- a/src/plugins/qmljsinspector/qmljsobserverclient.h +++ b/src/plugins/qmljsinspector/qmljsobserverclient.h @@ -80,6 +80,8 @@ public: void clearComponentCache(); signals: + void connectedStatusChanged(QDeclarativeDebugClient::Status status); + void currentObjectsChanged(const QList<int> &debugIds); void selectedColorChanged(const QColor &color); void colorPickerActivated(); @@ -92,6 +94,7 @@ signals: void contextPathUpdated(const QStringList &path); protected: + virtual void statusChanged(Status); virtual void messageReceived(const QByteArray &); private: diff --git a/src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec b/src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec index 53ae57078a1bbc5453de0b46ba232ebde2ce8d7d..8e7d1a909d266095a1c0ee9777a11d070d7c65b0 100644 --- a/src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec +++ b/src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec @@ -1,4 +1,4 @@ -<plugin name="QmlProjectManager" version="2.0.91" compatVersion="2.0.91"> +<plugin name="QmlProjectManager" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,10 +14,10 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Qt Quick support</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="QmlJSEditor" version="2.0.91"/> - <dependency name="Debugger" version="2.0.91" /> - <dependency name="Qt4ProjectManager" version="2.0.91" /> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="QmlJSEditor" version="2.1.81"/> + <dependency name="Debugger" version="2.1.81" /> + <dependency name="Qt4ProjectManager" version="2.1.81" /> </dependencyList> </plugin> diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 9027950cea4829b83c548506a7e86a10e8305432..83486bbaf99d7c172d339f2bb57f4b0477068277 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -37,6 +37,7 @@ #include <coreplugin/messagemanager.h> #include <extensionsystem/pluginmanager.h> #include <projectexplorer/filewatcher.h> +#include <qt4projectmanager/qmldumptool.h> #include <qmljs/qmljsmodelmanagerinterface.h> #include <QTextStream> @@ -129,6 +130,11 @@ void QmlProject::refresh(RefreshOptions options) QmlJS::ModelManagerInterface::ProjectInfo pinfo(this); pinfo.sourceFiles = files(); pinfo.importPaths = importPaths(); + + if (pinfo.qmlDumpPath.isNull()) { + pinfo.qmlDumpPath = Qt4ProjectManager::QmlDumpTool::qmlDumpPath(this); + } + m_modelManager->updateProjectInfo(pinfo); } diff --git a/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp b/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp index 474e8bdec1c6aa61f6a147061e0aca81cdca2425..c58241c2c899f0ada9058942b4be730e8fc12ebb 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp @@ -32,6 +32,7 @@ #include "qmlprojectconstants.h" #include <projectexplorer/customwizard/customwizard.h> +#include <qt4projectmanager/qt4projectmanagerconstants.h> #include <QtGui/QIcon> @@ -47,8 +48,8 @@ namespace Internal { QmlProjectApplicationWizardDialog::QmlProjectApplicationWizardDialog(QWidget *parent) : ProjectExplorer::BaseProjectWizardDialog(parent) { - setWindowTitle(tr("New QML Project")); - setIntroDescription(tr("This wizard generates a QML application project.")); + setWindowTitle(tr("New Qt Quick UI Project")); + setIntroDescription(tr("This wizard generates a Qt Quick UI project.")); } QmlProjectApplicationWizard::QmlProjectApplicationWizard() @@ -61,15 +62,18 @@ QmlProjectApplicationWizard::~QmlProjectApplicationWizard() Core::BaseFileWizardParameters QmlProjectApplicationWizard::parameters() { Core::BaseFileWizardParameters parameters(ProjectWizard); - parameters.setIcon(QIcon(QLatin1String(Constants::QML_WIZARD_ICON))); - parameters.setDisplayName(tr("Qt QML Application")); - parameters.setDisplayName(tr("QML Application")); + parameters.setIcon(QIcon(QLatin1String(Qt4ProjectManager::Constants::QML_WIZARD_ICON))); + parameters.setDisplayName(tr("Qt Quick UI")); parameters.setId(QLatin1String("QA.QML Application")); - parameters.setDescription(tr("Creates a QML application project with a single QML file containing the main view.\n\n" - "QML application projects are executed by the Qt QML Viewer and do not need to be built.")); - parameters.setCategory(QLatin1String(Constants::QML_WIZARD_CATEGORY)); - parameters.setDisplayCategory(QCoreApplication::translate(Constants::QML_WIZARD_TR_SCOPE, - Constants::QML_WIZARD_TR_CATEGORY)); + + parameters.setDescription(tr("Creates a Qt Quick UI project with a single " + "QML file that contains the main view.\n\n" + "You can review Qt Quick UI projects in the QML Viewer and you need not build them. " + "You do not need to have the development environment installed " + "on your computer to create and run this type of projects.")); + parameters.setCategory(QLatin1String(Qt4ProjectManager::Constants::QML_WIZARD_CATEGORY)); + parameters.setDisplayCategory(QCoreApplication::translate(Qt4ProjectManager::Constants::QML_WIZARD_TR_SCOPE, + Qt4ProjectManager::Constants::QML_WIZARD_TR_CATEGORY)); return parameters; } diff --git a/src/plugins/qmlprojectmanager/qmlprojectconstants.h b/src/plugins/qmlprojectmanager/qmlprojectconstants.h index cd014f5276749ec0ce41ff242d34c86f1e323572..3a4bda66a0087df79f9428ac39e4c2d0f8b832db 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectconstants.h +++ b/src/plugins/qmlprojectmanager/qmlprojectconstants.h @@ -47,12 +47,6 @@ const char *const FILES_EDITOR_ID = "Qt4.QmlProjectEditor"; const char *const FILES_EDITOR_DISPLAY_NAME = QT_TRANSLATE_NOOP("OpenWith::Editors", ".qmlproject Editor"); const char *const FILES_MIMETYPE = QMLMIMETYPE; -// Wizard category -const char * const QML_WIZARD_CATEGORY = "F.Projects"; // (after Qt) -const char * const QML_WIZARD_TR_SCOPE = "QmlProjectManager"; -const char * const QML_WIZARD_TR_CATEGORY = QT_TRANSLATE_NOOP("QmlProjectManager", "Qt Quick Project"); -const char * const QML_WIZARD_ICON = ":/qmlproject/images/qml_wizard.png"; - } // namespace Constants } // namespace QmlProjectManager diff --git a/src/plugins/qmlprojectmanager/qmlprojectimportwizard.cpp b/src/plugins/qmlprojectmanager/qmlprojectimportwizard.cpp index 640f0175e3818ef84525f772bc6f19cc87a07951..e3537db8411e82702abfae92176d248a54a380dd 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectimportwizard.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectimportwizard.cpp @@ -34,6 +34,7 @@ #include <coreplugin/icore.h> #include <coreplugin/mimedatabase.h> #include <projectexplorer/customwizard/customwizard.h> +#include <qt4projectmanager/qt4projectmanagerconstants.h> #include <utils/filenamevalidatinglineedit.h> #include <utils/filewizardpage.h> @@ -116,9 +117,9 @@ Core::BaseFileWizardParameters QmlProjectImportWizard::parameters() parameters.setDisplayName(tr("Import Existing QML Directory")); parameters.setId(QLatin1String("QI.QML Import")); parameters.setDescription(tr("Creates a QML project from an existing directory of QML files.")); - parameters.setCategory(QLatin1String(Constants::QML_WIZARD_CATEGORY)); - parameters.setDisplayCategory(QCoreApplication::translate(Constants::QML_WIZARD_TR_SCOPE, - Constants::QML_WIZARD_TR_CATEGORY)); + parameters.setCategory(QLatin1String(Qt4ProjectManager::Constants::QML_WIZARD_CATEGORY)); + parameters.setDisplayCategory(QCoreApplication::translate(Qt4ProjectManager::Constants::QML_WIZARD_TR_SCOPE, + Qt4ProjectManager::Constants::QML_WIZARD_TR_CATEGORY)); return parameters; } diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp index 021c55d0db7b9301eb1fa1c253447841b8746502..ec16ed0e05d73da4d6acebda47edbc18217b5732 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp @@ -177,6 +177,8 @@ QList<ProjectExplorer::ProjectNode::ProjectAction> QmlProjectNode::supportedActi Q_UNUSED(node); QList<ProjectAction> actions; actions.append(AddNewFile); + actions.append(EraseFile); + actions.append(Rename); return actions; } @@ -213,14 +215,13 @@ bool QmlProjectNode::removeFiles(const ProjectExplorer::FileType /*fileType*/, bool QmlProjectNode::deleteFiles(const ProjectExplorer::FileType /*fileType*/, const QStringList & /*filePaths*/) { - return false; + return true; } - bool QmlProjectNode::renameFile(const ProjectExplorer::FileType /*fileType*/, const QString & /*filePath*/, const QString & /*newFilePath*/) { - return false; + return true; } } // namespace Internal diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index 5b63607acdb4c3d245c1a82902eab3202836f4bf..0a801a5f929a1f2366f8d38f003bd73f86f67f6d 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -32,7 +32,6 @@ #include "qmlprojectmanagerconstants.h" #include "qmlprojecttarget.h" #include "projectexplorer/projectexplorer.h" - #include <coreplugin/mimedatabase.h> #include <projectexplorer/buildconfiguration.h> #include <coreplugin/editormanager/editormanager.h> @@ -42,8 +41,10 @@ #include <utils/synchronousprocess.h> #include <utils/pathchooser.h> #include <utils/debuggerlanguagechooser.h> +#include <utils/detailswidget.h> #include <qt4projectmanager/qtversionmanager.h> #include <qt4projectmanager/qt4projectmanagerconstants.h> +#include <qt4projectmanager/qmlobservertool.h> #include <QFormLayout> #include <QComboBox> @@ -109,6 +110,11 @@ Internal::QmlProjectTarget *QmlProjectRunConfiguration::qmlTarget() const return static_cast<Internal::QmlProjectTarget *>(target()); } +bool QmlProjectRunConfiguration::qmlObserverAvailable() const +{ + return m_qmlObserverAvailable; +} + QString QmlProjectRunConfiguration::viewerPath() const { if (!m_qmlViewerCustomPath.isEmpty()) @@ -150,8 +156,13 @@ static bool caseInsensitiveLessThan(const QString &s1, const QString &s2) QWidget *QmlProjectRunConfiguration::createConfigurationWidget() { - QWidget *config = new QWidget; - QFormLayout *form = new QFormLayout(config); + Utils::DetailsWidget *detailsWidget = new Utils::DetailsWidget(); + detailsWidget->setState(Utils::DetailsWidget::NoSummary); + + QWidget *formWidget = new QWidget(detailsWidget); + detailsWidget->setWidget(formWidget); + QFormLayout *form = new QFormLayout(formWidget); + form->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); m_fileListCombo = new QComboBox; m_fileListCombo.data()->setModel(m_fileListModel); @@ -174,7 +185,7 @@ QWidget *QmlProjectRunConfiguration::createConfigurationWidget() connect(qmlViewerArgs, SIGNAL(textChanged(QString)), this, SLOT(onViewerArgsChanged())); form->addRow(tr("Custom QML Viewer:"), qmlViewer); - form->addRow(tr("QML Viewer arguments:"), qmlViewerArgs); + form->addRow(tr("Arguments:"), qmlViewerArgs); form->addRow(QString(), m_qmlViewerExecutable.data()); QWidget *debuggerLabelWidget = new QWidget; @@ -186,7 +197,7 @@ QWidget *QmlProjectRunConfiguration::createConfigurationWidget() debuggerLabelLayout->addWidget(debuggerLabel); debuggerLabelLayout->addStretch(10); - Utils::DebuggerLanguageChooser *debuggerLanguageChooser = new Utils::DebuggerLanguageChooser(config); + Utils::DebuggerLanguageChooser *debuggerLanguageChooser = new Utils::DebuggerLanguageChooser(formWidget); form->addRow(tr("Main QML file:"), m_fileListCombo.data()); form->addRow(debuggerLabelWidget, debuggerLanguageChooser); @@ -202,7 +213,7 @@ QWidget *QmlProjectRunConfiguration::createConfigurationWidget() connect(debuggerLanguageChooser, SIGNAL(qmlDebugServerPortChanged(uint)), this, SLOT(qmlDebugServerPortChanged(uint))); - return config; + return detailsWidget; } @@ -365,47 +376,19 @@ QString QmlProjectRunConfiguration::viewerDefaultPath() const { QString path; - // Search for QmlObserver -#ifdef Q_OS_MAC - const QString qmlObserverName = QLatin1String("QMLObserver.app"); -#else - const QString qmlObserverName = QLatin1String("qmlobserver"); -#endif - - QDir appDir(QCoreApplication::applicationDirPath()); - QString qmlObserverPath; -#ifdef Q_OS_WIN - qmlObserverPath = appDir.absoluteFilePath(qmlObserverName + QLatin1String(".exe")); -#else - qmlObserverPath = appDir.absoluteFilePath(qmlObserverName); -#endif - if (QFileInfo(qmlObserverPath).exists()) { - return qmlObserverPath; - } - - // Search for QmlViewer - - // prepend creator/bin dir to search path (only useful for special creator-qml package) - const QString searchPath = QCoreApplication::applicationDirPath() - + Utils::SynchronousProcess::pathSeparator() - + QString::fromLocal8Bit(qgetenv("PATH")); - -#ifdef Q_OS_MAC - const QString qmlViewerName = QLatin1String("QMLViewer"); -#else - const QString qmlViewerName = QLatin1String("qmlviewer"); -#endif - - path = Utils::SynchronousProcess::locateBinary(searchPath, qmlViewerName); - if (!path.isEmpty()) - return path; - // Try to locate default path in Qt Versions Qt4ProjectManager::QtVersionManager *qtVersions = Qt4ProjectManager::QtVersionManager::instance(); foreach (Qt4ProjectManager::QtVersion *version, qtVersions->validVersions()) { - if (!version->qmlviewerCommand().isEmpty() - && version->supportsTargetId(Qt4ProjectManager::Constants::DESKTOP_TARGET_ID)) { - return version->qmlviewerCommand(); + if (version->supportsTargetId(Qt4ProjectManager::Constants::DESKTOP_TARGET_ID)) { + // Search for QmlObserver + const QString qtInstallData = version->versionInfo().value("QT_INSTALL_DATA"); + path = Qt4ProjectManager::QmlObserverTool::toolByInstallData(qtInstallData); + m_qmlObserverAvailable = !path.isEmpty(); + + if (path.isEmpty() && !version->qmlviewerCommand().isEmpty()) { + path = version->qmlviewerCommand(); + break; + } } } diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h index c55f5a5a3a2f7c5c3eeeb7c69ff72f8da77c58c7..ebb189d63278bc81d2e078901dfcaf1cdcaf38ae 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h @@ -67,6 +67,7 @@ public: bool isEnabled(ProjectExplorer::BuildConfiguration *bc) const; + bool qmlObserverAvailable() const; QString viewerPath() const; QStringList viewerArguments() const; QString workingDirectory() const; @@ -120,6 +121,7 @@ private: bool m_usingCurrentFile; bool m_isEnabled; + mutable bool m_qmlObserverAvailable; }; diff --git a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp index 8c6d4bfb40ad981e88a90929b58640337fe000d6..d41ac9df63932be8b7f80ae9679047b192c71d11 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp @@ -46,6 +46,7 @@ #include <QDir> #include <QLabel> +#include <QMessageBox> using ProjectExplorer::RunConfiguration; using ProjectExplorer::RunControl; @@ -76,6 +77,7 @@ QmlRunControl::QmlRunControl(QmlProjectRunConfiguration *runConfiguration, QStri QmlRunControl::~QmlRunControl() { + stop(); } void QmlRunControl::start() @@ -179,6 +181,7 @@ ProjectExplorer::RunControl *QmlRunControlFactory::createDebugRunControl(QmlProj params.executable = runConfig->viewerPath(); params.qmlServerAddress = "127.0.0.1"; params.qmlServerPort = runConfig->qmlDebugServerPort(); + params.qmlObserverAvailable = runConfig->qmlObserverAvailable(); params.processArgs = runConfig->viewerArguments(); params.processArgs.append(QLatin1String("-qmljsdebugger=port:") + QString::number(runConfig->qmlDebugServerPort())); params.workingDirectory = runConfig->workingDirectory(); diff --git a/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec b/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec index b53e43c97c2f316f55f0a6e35b85379c293522a7..6b0e5427957b1418bfec7f30dc4288c1a90e7497 100644 --- a/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec +++ b/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Qt4ProjectManager" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Qt4ProjectManager" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,11 +14,10 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Provides project type for Qt 4 pro files and tools.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="CppTools" version="2.0.91"/> - <dependency name="CppEditor" version="2.0.91"/> - <dependency name="Designer" version="2.0.91"/> - <dependency name="Debugger" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="CppTools" version="2.1.81"/> + <dependency name="Designer" version="2.1.81"/> + <dependency name="Debugger" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.ui b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.ui index 226479a345ff84476ea7fcf35f96421987a4e5da..bb3ecebd4628531c79a1302fdb5ff51853428d8b 100644 --- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.ui +++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.ui @@ -269,7 +269,7 @@ <item row="1" column="0"> <widget class="QLabel" name="demoTitleLabel"> <property name="text"> - <string>Explore Qt C++ Examples</string> + <string>Explore Qt C++ examples:</string> </property> </widget> </item> @@ -291,14 +291,14 @@ </size> </property> <property name="text"> - <string>Examples not installed...</string> + <string>Examples Not Installed...</string> </property> </widget> </item> <item row="2" column="0"> <widget class="QLabel" name="demoTitleLabel_2"> <property name="text"> - <string>Explore Qt Quick Examples</string> + <string>Explore Qt Quick examples:</string> </property> </widget> </item> @@ -320,14 +320,14 @@ </size> </property> <property name="text"> - <string>Examples not installed...</string> + <string>Examples Not Installed...</string> </property> </widget> </item> <item row="3" column="0"> <widget class="QLabel" name="demoTitleLabel_3"> <property name="text"> - <string>Explore Qt C++ Mobile Examples</string> + <string>Explore Qt C++ mobile examples:</string> </property> </widget> </item> @@ -349,7 +349,7 @@ </size> </property> <property name="text"> - <string>Examples not installed...</string> + <string>Examples Not Installed...</string> </property> </widget> </item> @@ -457,14 +457,14 @@ border-bottom: 1px solid "#C9C9C9"; </size> </property> <property name="text"> - <string>Image</string> + <string notr="true">Image</string> </property> </widget> </item> <item> <widget class="QLabel" name="featuredTextLabel"> <property name="text"> - <string>Text</string> + <string notr="true">Text</string> </property> <property name="wordWrap"> <bool>true</bool> @@ -489,7 +489,7 @@ border-bottom: 1px solid "#C9C9C9"; <item> <widget class="QLabel" name="detailsLabel"> <property name="text"> - <string>Link</string> + <string notr="true">Link</string> </property> </widget> </item> diff --git a/src/plugins/qt4projectmanager/librarydetailswidget.ui b/src/plugins/qt4projectmanager/librarydetailswidget.ui index cf8da064a48df2afd2e6d6e9e2bb422baf4b6d63..af3be9bc3af2eacdbc60df32f33dc9adf513c96c 100644 --- a/src/plugins/qt4projectmanager/librarydetailswidget.ui +++ b/src/plugins/qt4projectmanager/librarydetailswidget.ui @@ -10,9 +10,6 @@ <height>306</height> </rect> </property> - <property name="windowTitle"> - <string>Form</string> - </property> <layout class="QGridLayout" name="gridLayout_2"> <item row="0" column="0" colspan="2"> <layout class="QGridLayout" name="gridLayout"> diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 4a42a65633f2718a8fd6f244c244c80c1887ea07..c3a90a53c899516462304473cdd0521e2ebecd52 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -149,7 +149,19 @@ bool MakeStep::init() // we should stop the clean queue // That is mostly so that rebuild works on a already clean project setIgnoreReturnValue(m_clean); - QStringList args = m_userArgs; + QStringList args; + + ProjectExplorer::ToolChain *toolchain = bc->toolChain(); + + if (bc->subNodeBuild()){ + if(!bc->subNodeBuild()->makefile().isEmpty()) { + args << "-f" << bc->subNodeBuild()->makefile(); + } + } else if (!bc->makefile().isEmpty()) { + args << "-f" << bc->makefile(); + } + + args.append(m_userArgs); if (!m_clean) { if (!bc->defaultMakeTarget().isEmpty()) args << bc->defaultMakeTarget(); @@ -159,7 +171,6 @@ bool MakeStep::init() // FIXME doing this without the user having a way to override this is rather bad // so we only do it for unix and if the user didn't override the make command // but for now this is the least invasive change - ProjectExplorer::ToolChain *toolchain = bc->toolChain(); if (toolchain) { if (toolchain->type() != ProjectExplorer::ToolChain::MSVC && @@ -238,7 +249,11 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) : BuildStepConfigWidget(), m_ui(new Ui::MakeStep), m_makeStep(makeStep), m_ignoreChange(false) { m_ui->setupUi(this); - connect(m_ui->makeLineEdit, SIGNAL(textEdited(QString)), + + m_ui->makePathChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); + m_ui->makePathChooser->setBaseDirectory(Utils::PathChooser::homePath()); + + connect(m_ui->makePathChooser, SIGNAL(changed(QString)), this, SLOT(makeEdited())); connect(m_ui->makeArgumentsLineEdit, SIGNAL(textEdited(QString)), this, SLOT(makeArgumentsLineEdited())); @@ -336,7 +351,7 @@ void MakeStepConfigWidget::init() updateMakeOverrideLabel(); const QString &makeCmd = m_makeStep->m_makeCmd; - m_ui->makeLineEdit->setText(makeCmd); + m_ui->makePathChooser->setPath(makeCmd); const QStringList &makeArguments = m_makeStep->userArguments(); m_ui->makeArgumentsLineEdit->setText(Utils::Environment::joinArgumentList(makeArguments)); @@ -345,7 +360,7 @@ void MakeStepConfigWidget::init() void MakeStepConfigWidget::makeEdited() { - m_makeStep->m_makeCmd = m_ui->makeLineEdit->text(); + m_makeStep->m_makeCmd = m_ui->makePathChooser->rawPath(); updateDetails(); } diff --git a/src/plugins/qt4projectmanager/makestep.ui b/src/plugins/qt4projectmanager/makestep.ui index 1dfff96f279ba078dea19c0ddcda45b41c135bf1..015936f46ce188f4f93b820a2ccf83e1b20cafc2 100644 --- a/src/plugins/qt4projectmanager/makestep.ui +++ b/src/plugins/qt4projectmanager/makestep.ui @@ -11,18 +11,14 @@ </rect> </property> <layout class="QFormLayout" name="formLayout"> + <property name="fieldGrowthPolicy"> + <enum>QFormLayout::AllNonFixedFieldsGrow</enum> + </property> <property name="margin"> <number>0</number> </property> - <item row="0" column="0"> - <widget class="QLabel" name="makeLabel"> - <property name="text"> - <string>Override %1:</string> - </property> - </widget> - </item> <item row="0" column="1"> - <widget class="QLineEdit" name="makeLineEdit"/> + <widget class="Utils::PathChooser" name="makePathChooser"/> </item> <item row="1" column="0"> <widget class="QLabel" name="makeArgumentsLabel"> @@ -34,8 +30,22 @@ <item row="1" column="1"> <widget class="QLineEdit" name="makeArgumentsLineEdit"/> </item> + <item row="0" column="0"> + <widget class="QLabel" name="makeLabel"> + <property name="text"> + <string>Override %1:</string> + </property> + </widget> + </item> </layout> </widget> + <customwidgets> + <customwidget> + <class>Utils::PathChooser</class> + <extends>QLineEdit</extends> + <header>utils/pathchooser.h</header> + </customwidget> + </customwidgets> <resources/> <connections/> </ui> diff --git a/src/plugins/qt4projectmanager/profileeditor.cpp b/src/plugins/qt4projectmanager/profileeditor.cpp index 8b79faf1836b41d65a1f2d9f084e50ae87176d53..d7cf57278afc8714762b483bb2b76a3df5183e5a 100644 --- a/src/plugins/qt4projectmanager/profileeditor.cpp +++ b/src/plugins/qt4projectmanager/profileeditor.cpp @@ -140,7 +140,8 @@ void ProFileEditor::setFontSettings(const TextEditor::FontSettings &fs) if (categories.isEmpty()) { categories << QLatin1String(TextEditor::Constants::C_TYPE) << QLatin1String(TextEditor::Constants::C_KEYWORD) - << QLatin1String(TextEditor::Constants::C_COMMENT); + << QLatin1String(TextEditor::Constants::C_COMMENT) + << QLatin1String(TextEditor::Constants::C_VISUAL_WHITESPACE); } const QVector<QTextCharFormat> formats = fs.toTextCharFormats(categories); diff --git a/src/plugins/qt4projectmanager/profilehighlighter.cpp b/src/plugins/qt4projectmanager/profilehighlighter.cpp index cf9e72d2ca06cc9cf3325c2e0c1ef6f3a22241a4..14daeee9f6338e590f59652e13d0348c00c62b60 100644 --- a/src/plugins/qt4projectmanager/profilehighlighter.cpp +++ b/src/plugins/qt4projectmanager/profilehighlighter.cpp @@ -201,5 +201,6 @@ void ProFileHighlighter::highlightBlock(const QString &text) if (i >= text.length()) break; } -} + applyFormatToSpaces(text, m_formats[ProfileVisualWhitespaceFormat]); +} diff --git a/src/plugins/qt4projectmanager/profilehighlighter.h b/src/plugins/qt4projectmanager/profilehighlighter.h index 87dadce27e147a3c2a034c52186121efc6e3b4ca..78ede9d738c07c5e9a7910a028e481bb3c6a5588 100644 --- a/src/plugins/qt4projectmanager/profilehighlighter.h +++ b/src/plugins/qt4projectmanager/profilehighlighter.h @@ -46,6 +46,7 @@ public: ProfileVariableFormat, ProfileFunctionFormat, ProfileCommentFormat, + ProfileVisualWhitespaceFormat, NumProfileFormats }; diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index df002105e1e6031f672fe5336c502f44ceab0aa7..bb8c97a36c5359f6b39d8f239521e925151e02ad 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -116,11 +116,12 @@ QStringList QMakeStep::allArguments() // Find out what flags we pass on to qmake arguments << bc->configCommandLineArguments(); - arguments << moreArguments(); if (!additonalArguments.isEmpty()) arguments << additonalArguments; + arguments << moreArguments(); + return arguments; } @@ -153,7 +154,7 @@ QStringList QMakeStep::moreArguments() } arguments << QLatin1String(Constants::QMAKEVAR_QMLJSDEBUGGER_PATH) + QLatin1Char('=') + - Core::ICore::instance()->resourcePath() + QLatin1String("/qmljsdebugger"); + Core::ICore::instance()->resourcePath() + QLatin1String("/qml/qmljsdebugger"); return arguments; } @@ -164,6 +165,7 @@ bool QMakeStep::init() QStringList args = allArguments(); QString workingDirectory; + if (qt4bc->subNodeBuild()) workingDirectory = qt4bc->subNodeBuild()->buildDir(); else @@ -173,10 +175,24 @@ bool QMakeStep::init() // Check whether we need to run qmake m_needToRunQMake = true; - if (QDir(workingDirectory).exists(QLatin1String("Makefile"))) { - QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(workingDirectory); + QString makefile = workingDirectory; + + if (qt4bc->subNodeBuild()) { + if (!qt4bc->subNodeBuild()->makefile().isEmpty()) { + makefile.append(qt4bc->subNodeBuild()->makefile()); + } else { + makefile.append("/Makefile"); + } + } else if (!qt4bc->makefile().isEmpty()) { + makefile.append(qt4bc->makefile()); + } else { + makefile.append("/Makefile"); + } + + if (QFileInfo(makefile).exists()) { + QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(makefile); if (qtVersion->qmakeCommand() == qmakePath) { - m_needToRunQMake = !qt4bc->compareToImportFrom(workingDirectory); + m_needToRunQMake = !qt4bc->compareToImportFrom(makefile); } } diff --git a/src/plugins/qt4projectmanager/qmldumptool.cpp b/src/plugins/qt4projectmanager/qmldumptool.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cc675ce6b0f20e213eade5591642b9617e11b270 --- /dev/null +++ b/src/plugins/qt4projectmanager/qmldumptool.cpp @@ -0,0 +1,286 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "qmldumptool.h" +#include "qt4project.h" +#include "qt4projectmanagerconstants.h" +#include "qtversionmanager.h" +#include <coreplugin/icore.h> +#include <coreplugin/progressmanager/progressmanager.h> + +#include <projectexplorer/project.h> +#include <projectexplorer/projectexplorer.h> +#include <qtconcurrent/runextensions.h> +#include <qmljs/qmljsmodelmanagerinterface.h> +#include <QDesktopServices> +#include <QCoreApplication> +#include <QDir> +#include <QDebug> +#include <QHash> + +namespace { +using namespace Qt4ProjectManager; + +class QmlDumpBuildTask; + +typedef QHash<int, QmlDumpBuildTask *> QmlDumpByVersion; +Q_GLOBAL_STATIC(QmlDumpByVersion, runningQmlDumpBuilds); + +// A task suitable to be run by QtConcurrent to build qmldump. +class QmlDumpBuildTask : public QObject { + Q_DISABLE_COPY(QmlDumpBuildTask) + Q_OBJECT +public: + explicit QmlDumpBuildTask(QtVersion *version) + : m_version(*version) + { + runningQmlDumpBuilds()->insert(m_version.uniqueId(), this); + } + + void run(QFutureInterface<void> &future) + { + future.setProgressRange(0, 5); + future.setProgressValue(1); + const QString output = m_version.buildDebuggingHelperLibrary(future, true); + + const QString qtInstallData = m_version.versionInfo().value("QT_INSTALL_DATA"); + QString path = QmlDumpTool::toolByInstallData(qtInstallData); + if (path.isEmpty()) { + qWarning() << "Could not build QML plugin dumping helper for " << m_version.displayName() + << "\nOutput:\n" << output; + } + + // proceed in gui thread + metaObject()->invokeMethod(this, "finish", Qt::QueuedConnection, Q_ARG(QString, path)); + } + + void updateProjectWhenDone(ProjectExplorer::Project *project) + { + m_projectsToUpdate.insert(project); + } + +public slots: + void finish(QString qmldumpPath) + { + deleteLater(); + runningQmlDumpBuilds()->remove(m_version.uniqueId()); + + if (qmldumpPath.isEmpty()) + return; + + // update qmldump path for all the project + QmlJS::ModelManagerInterface *modelManager = QmlJS::ModelManagerInterface::instance(); + if (!modelManager) + return; + + foreach (ProjectExplorer::Project *project, m_projectsToUpdate) { + QmlJS::ModelManagerInterface::ProjectInfo projectInfo = modelManager->projectInfo(project); + if (projectInfo.qmlDumpPath.isEmpty()) { + projectInfo.qmlDumpPath = qmldumpPath; + modelManager->updateProjectInfo(projectInfo); + } + } + } + +private: + QSet<ProjectExplorer::Project *> m_projectsToUpdate; + QtVersion m_version; +}; +} // end of anonymous namespace + + +namespace Qt4ProjectManager { + +static inline QStringList validBinaryFilenames() +{ + return QStringList() + << QLatin1String("debug/qmldump.exe") + << QLatin1String("qmldump.exe") + << QLatin1String("qmldump") + << QLatin1String("qmldump.app/Contents/MacOS/qmldump"); +} + +bool QmlDumpTool::canBuild(const QtVersion *qtVersion) +{ + const QString installHeaders = qtVersion->versionInfo().value("QT_INSTALL_HEADERS"); + const QString header = installHeaders + QLatin1String("/QtDeclarative/private/qdeclarativemetatype_p.h"); + return qtVersion->supportsTargetId(Constants::DESKTOP_TARGET_ID) + && (checkMinimumQtVersion(qtVersion->qtVersionString(), 4, 7, 1) || QFile::exists(header)); +} + +static QtVersion *qtVersionForProject(ProjectExplorer::Project *project) +{ + if (project && project->id() == Qt4ProjectManager::Constants::QT4PROJECT_ID) { + Qt4Project *qt4Project = static_cast<Qt4Project*>(project); + if (qt4Project && qt4Project->activeTarget() + && qt4Project->activeTarget()->activeBuildConfiguration()) { + QtVersion *version = qt4Project->activeTarget()->activeBuildConfiguration()->qtVersion(); + if (version->isValid()) + return version; + } + return 0; + } + + // else, find any desktop Qt version that has qmldump, or - if there isn't any - + // one that could build it + QtVersion *desktopQt = 0; + QtVersionManager *qtVersions = QtVersionManager::instance(); + foreach (QtVersion *version, qtVersions->validVersions()) { + if (version->supportsTargetId(Constants::DESKTOP_TARGET_ID)) { + const QString qtInstallData = version->versionInfo().value("QT_INSTALL_DATA"); + const QString path = QmlDumpTool::toolByInstallData(qtInstallData); + if (!path.isEmpty()) + return version; + + if (!desktopQt && QmlDumpTool::canBuild(version)) { + desktopQt = version; + } + } + } + + return desktopQt; +} + +QString QmlDumpTool::toolForProject(ProjectExplorer::Project *project) +{ + QtVersion *version = qtVersionForProject(project); + if (version) { + QString qtInstallData = version->versionInfo().value("QT_INSTALL_DATA"); + QString toolPath = toolByInstallData(qtInstallData); + return toolPath; + } + + return QString(); +} + +QString QmlDumpTool::toolByInstallData(const QString &qtInstallData) +{ + if (!Core::ICore::instance()) + return QString(); + + const QString mainFilename = Core::ICore::instance()->resourcePath() + + QLatin1String("/qml/qmldump/main.cpp"); + const QStringList directories = installDirectories(qtInstallData); + const QStringList binFilenames = validBinaryFilenames(); + + return byInstallDataHelper(mainFilename, directories, binFilenames); +} + +QStringList QmlDumpTool::locationsByInstallData(const QString &qtInstallData) +{ + QStringList result; + QFileInfo fileInfo; + const QStringList binFilenames = validBinaryFilenames(); + foreach(const QString &directory, installDirectories(qtInstallData)) { + if (getHelperFileInfoFor(binFilenames, directory, &fileInfo)) + result << fileInfo.filePath(); + } + return result; +} + +QString QmlDumpTool::build(const QString &directory, const QString &makeCommand, + const QString &qmakeCommand, const QString &mkspec, + const Utils::Environment &env, const QString &targetMode) +{ + return buildHelper(QCoreApplication::tr("qmldump"), QLatin1String("qmldump.pro"), + directory, makeCommand, qmakeCommand, mkspec, env, targetMode); +} + +QString QmlDumpTool::copy(const QString &qtInstallData, QString *errorMessage) +{ + const QStringList directories = QmlDumpTool::installDirectories(qtInstallData); + + QStringList files; + files << QLatin1String("main.cpp") << QLatin1String("qmldump.pro") + << QLatin1String("LICENSE.LGPL") << QLatin1String("LGPL_EXCEPTION.TXT"); + + QString sourcePath = Core::ICore::instance()->resourcePath() + QLatin1String("/qml/qmldump/"); + + // Try to find a writeable directory. + foreach(const QString &directory, directories) { + if (copyFiles(sourcePath, files, directory, errorMessage)) { + return directory; + } + } + *errorMessage = QCoreApplication::translate("ProjectExplorer::QmlDumpTool", + "qmldump could not be built in any of the directories:\n- %1\n\nReason: %2") + .arg(directories.join(QLatin1String("\n- ")), *errorMessage); + return QString(); +} + +QStringList QmlDumpTool::installDirectories(const QString &qtInstallData) +{ + const QChar slash = QLatin1Char('/'); + const uint hash = qHash(qtInstallData); + QStringList directories; + directories + << (qtInstallData + QLatin1String("/qtc-qmldump/")) + << QDir::cleanPath((QCoreApplication::applicationDirPath() + QLatin1String("/../qtc-qmldump/") + QString::number(hash))) + slash + << (QDesktopServices::storageLocation(QDesktopServices::DataLocation) + QLatin1String("/qtc-qmldump/") + QString::number(hash)) + slash; + return directories; +} + +QString QmlDumpTool::qmlDumpPath(ProjectExplorer::Project *project) +{ + QString path; + + path = Qt4ProjectManager::QmlDumpTool::toolForProject(project); + + QtVersion *version = qtVersionForProject(project); + if (version && path.isEmpty()) { + if (runningQmlDumpBuilds()->contains(version->uniqueId())) { + runningQmlDumpBuilds()->value(version->uniqueId())->updateProjectWhenDone(project); + } else { + QmlDumpBuildTask *buildTask = new QmlDumpBuildTask(version); + buildTask->updateProjectWhenDone(project); + QFuture<void> task = QtConcurrent::run(&QmlDumpBuildTask::run, buildTask); + const QString taskName = QmlDumpBuildTask::tr("Building helper"); + Core::ICore::instance()->progressManager()->addTask(task, taskName, + QLatin1String("Qt4ProjectManager::BuildHelpers")); + } + return path; + } + + if (!path.isEmpty()) { + QFileInfo qmldumpFileInfo(path); + if (!qmldumpFileInfo.exists()) { + qWarning() << "QmlDumpTool::qmlDumpPath: qmldump executable does not exist at" << path; + path.clear(); + } else if (!qmldumpFileInfo.isFile()) { + qWarning() << "QmlDumpTool::qmlDumpPath: " << path << " is not a file"; + path.clear(); + } + } + + return path; +} + +} // namespace Qt4ProjectManager + +#include "qmldumptool.moc" diff --git a/src/plugins/qt4projectmanager/qmldumptool.h b/src/plugins/qt4projectmanager/qmldumptool.h new file mode 100644 index 0000000000000000000000000000000000000000..6924690865b594b883d64d545b65942629deb60f --- /dev/null +++ b/src/plugins/qt4projectmanager/qmldumptool.h @@ -0,0 +1,72 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef QMLDUMPTOOL_H +#define QMLDUMPTOOL_H + +#include <utils/buildablehelperlibrary.h> +#include "qt4projectmanager_global.h" + +namespace Utils { + class Environment; +} + +namespace ProjectExplorer { + class Project; +} + +namespace Qt4ProjectManager { +class QtVersion; + +class QT4PROJECTMANAGER_EXPORT QmlDumpTool : public Utils::BuildableHelperLibrary +{ +public: + static bool canBuild(const QtVersion *qtVersion); + static QString toolForProject(ProjectExplorer::Project *project); + static QString toolByInstallData(const QString &qtInstallData); + static QStringList locationsByInstallData(const QString &qtInstallData); + + // Build the helpers and return the output log/errormessage. + static QString build(const QString &directory, const QString &makeCommand, + const QString &qmakeCommand, const QString &mkspec, + const Utils::Environment &env, const QString &targetMode); + + // Copy the source files to a target location and return the chosen target location. + static QString copy(const QString &qtInstallData, QString *errorMessage); + + static QString qmlDumpPath(ProjectExplorer::Project *project); + +private: + static QStringList installDirectories(const QString &qtInstallData); + +}; + +} // namespace + +#endif // QMLDUMPTOOL_H diff --git a/src/plugins/qt4projectmanager/qmlobservertool.cpp b/src/plugins/qt4projectmanager/qmlobservertool.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f2b55cbac654199d3e384b3ad13dc98812d62395 --- /dev/null +++ b/src/plugins/qt4projectmanager/qmlobservertool.cpp @@ -0,0 +1,223 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "qmlobservertool.h" + +#include "qt4project.h" +#include "qt4projectmanagerconstants.h" +#include <coreplugin/icore.h> +#include <utils/qtcassert.h> + +#include <projectexplorer/project.h> +#include <QDesktopServices> +#include <QCoreApplication> +#include <QDir> +#include <QDebug> + +namespace Qt4ProjectManager { + +static inline QStringList validBinaryFilenames() +{ + return QStringList() + << QLatin1String("debug/qmlobserver.exe") + << QLatin1String("qmlobserver.exe") + << QLatin1String("qmlobserver") + << QLatin1String("QMLObserver.app/Contents/MacOS/QMLObserver"); +} + +bool QmlObserverTool::canBuild(const QtVersion *qtVersion) +{ + return qtVersion->supportsTargetId(Constants::DESKTOP_TARGET_ID) + && checkMinimumQtVersion(qtVersion->qtVersionString(), 4, 7, 1); +} + +QString QmlObserverTool::toolForProject(ProjectExplorer::Project *project) +{ + if (project->id() == Qt4ProjectManager::Constants::QT4PROJECT_ID) { + Qt4Project *qt4Project = static_cast<Qt4Project*>(project); + if (qt4Project && qt4Project->activeTarget() + && qt4Project->activeTarget()->activeBuildConfiguration()) { + QtVersion *version = qt4Project->activeTarget()->activeBuildConfiguration()->qtVersion(); + if (version->isValid()) { + QString qtInstallData = version->versionInfo().value("QT_INSTALL_DATA"); + QString toolPath = toolByInstallData(qtInstallData); + return toolPath; + } + } + } + return QString(); +} + +QString QmlObserverTool::toolByInstallData(const QString &qtInstallData) +{ + if (!Core::ICore::instance()) + return QString(); + + const QString mainFilename = Core::ICore::instance()->resourcePath() + + QLatin1String("/qml/qmlobserver/main.cpp"); + const QStringList directories = installDirectories(qtInstallData); + const QStringList binFilenames = validBinaryFilenames(); + + return byInstallDataHelper(mainFilename, directories, binFilenames); +} + +QStringList QmlObserverTool::locationsByInstallData(const QString &qtInstallData) +{ + QStringList result; + QFileInfo fileInfo; + const QStringList binFilenames = validBinaryFilenames(); + foreach(const QString &directory, installDirectories(qtInstallData)) { + if (getHelperFileInfoFor(binFilenames, directory, &fileInfo)) + result << fileInfo.filePath(); + } + return result; +} + +QString QmlObserverTool::build(const QString &directory, const QString &makeCommand, + const QString &qmakeCommand, const QString &mkspec, + const Utils::Environment &env, const QString &targetMode) +{ + return buildHelper(QCoreApplication::tr("QMLObserver"), QLatin1String("qmlobserver.pro"), + directory, makeCommand, qmakeCommand, mkspec, env, targetMode); +} + +static inline bool mkpath(const QString &targetDirectory, QString *errorMessage) +{ + if (!QDir().mkpath(targetDirectory)) { + *errorMessage = QCoreApplication::translate("ProjectExplorer::QmlObserverTool", "The target directory %1 could not be created.").arg(targetDirectory); + return false; + } + return true; +} + +QString QmlObserverTool::copy(const QString &qtInstallData, QString *errorMessage) +{ + const QStringList directories = QmlObserverTool::installDirectories(qtInstallData); + + QStringList files; + files << QLatin1String("main.cpp") << QLatin1String("qmlobserver.pro") + << QLatin1String("crumblepath.cpp") << QLatin1String("crumblepath.h") + << QLatin1String("deviceorientation.cpp") << QLatin1String("deviceorientation.h") + << QLatin1String("deviceorientation_maemo5.cpp") << QLatin1String("Info_mac.plist") + << QLatin1String("loggerwidget.cpp") << QLatin1String("loggerwidget.h") + << QLatin1String("proxysettings.cpp") << QLatin1String("proxysettings.h") + << QLatin1String("proxysettings.ui") << QLatin1String("proxysettings_maemo5.ui") + << QLatin1String("qdeclarativetester.cpp") << QLatin1String("qdeclarativetester.h") + << QLatin1String("qml.icns") << QLatin1String("qml.pri") + << QLatin1String("qmlruntime.cpp") << QLatin1String("qmlruntime.h") + << QLatin1String("qmlruntime.qrc") << QLatin1String("recopts.ui") + << QLatin1String("recopts_maemo5.ui") + << QLatin1String("texteditautoresizer_maemo5.h") + << QLatin1String("content/Browser.qml") << QLatin1String("content/images/folder.png") + << QLatin1String("content/images/titlebar.png") << QLatin1String("content/images/titlebar.sci") + << QLatin1String("content/images/up.png") + << QLatin1String("LICENSE.LGPL") << QLatin1String("LGPL_EXCEPTION.TXT"); + + QStringList debuggerLibFiles; + debuggerLibFiles << QLatin1String("jsdebuggeragent.cpp") + << QLatin1String("qdeclarativeobserverservice.cpp") << QLatin1String("qdeclarativeviewobserver.cpp") + << QLatin1String("qdeclarativeviewobserver_p.h") << QLatin1String("qmljsdebugger.pri") + << QLatin1String("qmljsdebugger.pro") << QLatin1String("qmljsdebugger-lib.pri") + << QLatin1String("include/jsdebuggeragent.h") << QLatin1String("include/qdeclarativeobserverservice.h") + << QLatin1String("include/qdeclarativeviewobserver.h") << QLatin1String("include/qmljsdebugger_global.h") + << QLatin1String("include/qmlobserverconstants.h") + << QLatin1String("include/qt_private/qdeclarativedebughelper_p.h") + << QLatin1String("include/qt_private/qdeclarativedebugservice_p.h"); + + QStringList debuggerLibEditorFiles; + debuggerLibEditorFiles << QLatin1String("abstractformeditortool.cpp") << QLatin1String("abstractformeditortool.h") + << QLatin1String("boundingrecthighlighter.cpp") << QLatin1String("boundingrecthighlighter.h") + << QLatin1String("colorpickertool.cpp") << QLatin1String("colorpickertool.h") + << QLatin1String("editor.pri") << QLatin1String("editor.qrc") + << QLatin1String("layeritem.cpp") << QLatin1String("layeritem.h") + << QLatin1String("qmltoolbar.cpp") << QLatin1String("qmltoolbar.h") + << QLatin1String("rubberbandselectionmanipulator.cpp") + << QLatin1String("rubberbandselectionmanipulator.h") << QLatin1String("selectionindicator.cpp") + << QLatin1String("selectionindicator.h") << QLatin1String("selectionrectangle.cpp") + << QLatin1String("selectionrectangle.h") << QLatin1String("selectiontool.cpp") + << QLatin1String("selectiontool.h") << QLatin1String("singleselectionmanipulator.cpp") + << QLatin1String("singleselectionmanipulator.h") << QLatin1String("subcomponenteditortool.cpp") + << QLatin1String("subcomponenteditortool.h") << QLatin1String("subcomponentmasklayeritem.cpp") + << QLatin1String("subcomponentmasklayeritem.h") << QLatin1String("toolbarcolorbox.cpp") + << QLatin1String("toolbarcolorbox.h") << QLatin1String("zoomtool.cpp") + << QLatin1String("zoomtool.h") << QLatin1String("images/color-picker.png") + << QLatin1String("images/color-picker-24.png") << QLatin1String("images/color-picker-hicontrast.png") + << QLatin1String("images/from-qml.png") << QLatin1String("images/from-qml-24.png") + << QLatin1String("images/observermode.png") << QLatin1String("images/observermode-24.png") + << QLatin1String("images/pause.png") << QLatin1String("images/pause-24.png") + << QLatin1String("images/play.png") << QLatin1String("images/play-24.png") + << QLatin1String("images/reload.png") << QLatin1String("images/resize_handle.png") + << QLatin1String("images/select.png") << QLatin1String("images/select-24.png") + << QLatin1String("images/select-marquee.png") << QLatin1String("images/select-marquee-24.png") + << QLatin1String("images/to-qml.png") << QLatin1String("images/to-qml-24.png") + << QLatin1String("images/zoom.png") << QLatin1String("images/zoom-24.png"); + + QString sourcePath = Core::ICore::instance()->resourcePath() + QLatin1String("/qml/qmlobserver/"); + QString libSourcePath = Core::ICore::instance()->resourcePath() + QLatin1String("/qml/qmljsdebugger/"); + QString libEditorSourcePath = Core::ICore::instance()->resourcePath() + QLatin1String("/qml/qmljsdebugger/editor/"); + + // Try to find a writeable directory. + foreach(const QString &directory, directories) { + if (!mkpath(directory + QLatin1String("/content/images"), errorMessage) + || !mkpath(directory + QLatin1String("/qmljsdebugger/editor/images"), errorMessage) + || !mkpath(directory + QLatin1String("/qmljsdebugger/include"), errorMessage) + || !mkpath(directory + QLatin1String("/qmljsdebugger/include/qt_private"), errorMessage)) + { + continue; + } else { + errorMessage->clear(); + } + + if (copyFiles(sourcePath, files, directory, errorMessage) + && copyFiles(libSourcePath, debuggerLibFiles, directory + QLatin1String("/qmljsdebugger/"), errorMessage) + && copyFiles(libEditorSourcePath, debuggerLibEditorFiles, directory + QLatin1String("/qmljsdebugger/editor/"), errorMessage)) + { + errorMessage->clear(); + return directory; + } + } + *errorMessage = QCoreApplication::translate("ProjectExplorer::QmlObserverTool", + "QMLObserver could not be built in any of the directories:\n- %1\n\nReason: %2") + .arg(directories.join(QLatin1String("\n- ")), *errorMessage); + return QString(); +} + +QStringList QmlObserverTool::installDirectories(const QString &qtInstallData) +{ + const QChar slash = QLatin1Char('/'); + const uint hash = qHash(qtInstallData); + QStringList directories; + directories + << (qtInstallData + QLatin1String("/qtc-qmlobserver/")) + << QDir::cleanPath((QCoreApplication::applicationDirPath() + QLatin1String("/../qtc-qmlobserver/") + QString::number(hash))) + slash + << (QDesktopServices::storageLocation(QDesktopServices::DataLocation) + QLatin1String("/qtc-qmlobserver/") + QString::number(hash)) + slash; + return directories; +} + +} // namespace diff --git a/src/plugins/qt4projectmanager/qmlobservertool.h b/src/plugins/qt4projectmanager/qmlobservertool.h new file mode 100644 index 0000000000000000000000000000000000000000..78c8ffc5ae9f58c9dfaa009a67802ef0082809a0 --- /dev/null +++ b/src/plugins/qt4projectmanager/qmlobservertool.h @@ -0,0 +1,71 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** 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. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef QMLOBSERVERTOOL_H +#define QMLOBSERVERTOOL_H + +#include <utils/buildablehelperlibrary.h> +#include "qt4projectmanager_global.h" + +namespace Utils { + class Environment; +} + +namespace ProjectExplorer { + class Project; +} + +namespace Qt4ProjectManager { + +class QtVersion; + +class QT4PROJECTMANAGER_EXPORT QmlObserverTool : public Utils::BuildableHelperLibrary +{ +public: + static bool canBuild(const QtVersion *qtVersion); + static QString toolForProject(ProjectExplorer::Project *project); + static QString toolByInstallData(const QString &qtInstallData); + static QStringList locationsByInstallData(const QString &qtInstallData); + + // Build the helpers and return the output log/errormessage. + static QString build(const QString &directory, const QString &makeCommand, + const QString &qmakeCommand, const QString &mkspec, + const Utils::Environment &env, const QString &targetMode); + + // Copy the source files to a target location and return the chosen target location. + static QString copy(const QString &qtInstallData, QString *errorMessage); + +private: + static QStringList installDirectories(const QString &qtInstallData); + +}; + +} // namespace + +#endif // QMLOBSERVERTOOL_H diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp index b0a199f3d45f572983b9208c427d00f607f76b3e..9ec886958417b45cd3c54f2f8f46a3b2014bfd0e 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp @@ -153,7 +153,6 @@ QString MaemoDeployables::remoteExecutableFilePath(const QString &localExecutabl if (model->localExecutableFilePath() == localExecutableFilePath) return model->remoteExecutableFilePath(); } - qWarning("No remote executable specified!"); return QString(); } diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp index 3b03a7bfeaba0c4023e189de78c66f761ead94dd..804f7e4d88081cbc15c8ddfccd468f490675f01b 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp @@ -486,6 +486,11 @@ void MaemoDeployStep::setupMount() void MaemoDeployStep::prepareSftpConnection() { + // TODO: Close channel when upload has finished/failed/etc. + if (m_uploader) { + disconnect(m_uploader.data(), 0, this, 0); + m_uploader->closeChannel(); + } m_uploader = m_connection->createSftpChannel(); connect(m_uploader.data(), SIGNAL(initialized()), this, SLOT(handleSftpChannelInitialized())); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp index 3ab3575939df8a3dc46db6f4efe51621debecf3b..476346c9264c6992ef0d8061fdc614ba827d8bdc 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp @@ -128,6 +128,7 @@ void MaemoPackageCreationStep::run(QFutureInterface<bool> &fi) { bool success; if (m_packagingEnabled) { + // TODO: Make the build process asynchronous; i.e. no waitFor()-functions etc. QProcess * const buildProc = new QProcess; connect(buildProc, SIGNAL(readyReadStandardOutput()), this, SLOT(handleBuildOutput())); @@ -548,9 +549,6 @@ void MaemoPackageCreationStep::addWorkaroundForHarmattanBug(const QString &rules const int makeInstallEol = content.indexOf('\n', makeInstallLine); if (makeInstallEol == -1) return; - const QByteArray lineBefore("Icon=" + projectName().toUtf8()); - const QByteArray lineAfter("Icon=/usr/share/icons/hicolor/64x64/apps/" - + projectName().toUtf8() + ".png"); QString desktopFileDir = QFileInfo(rulesFile).dir().path() + QLatin1Char('/') + projectName() + QLatin1String("/usr/share/applications/"); @@ -563,15 +561,18 @@ void MaemoPackageCreationStep::addWorkaroundForHarmattanBug(const QString &rules int insertPos = makeInstallEol + 1; foreach (const Qt4ProFileNode * const proFile, proFiles) { const QString appName = proFile->targetInformation().target; + const QByteArray lineBefore("Icon=" + appName.toUtf8()); + const QByteArray lineAfter("Icon=/usr/share/icons/hicolor/64x64/apps/" + + appName.toUtf8() + ".png"); const QString desktopFilePath - = desktopFileDir + appName + QLatin1String(".desktop"); + = desktopFileDir + appName + QLatin1String(".desktop"); const QString tmpFile = desktopFileDir + appName + QLatin1String(".sed"); const QByteArray sedCmd = "\tsed 's:" + lineBefore + ':' + lineAfter - + ":' " + desktopFilePath.toLocal8Bit() + " > " + tmpFile.toUtf8() - + '\n'; - const QByteArray mvCmd = "\tmv " + tmpFile.toUtf8() + ' ' - + desktopFilePath.toUtf8() + '\n'; + + ":' " + desktopFilePath.toLocal8Bit() + " > " + + tmpFile.toLocal8Bit() + " || echo -n\n"; + const QByteArray mvCmd = "\tmv " + tmpFile.toLocal8Bit() + ' ' + + desktopFilePath.toLocal8Bit() + " || echo -n\n"; content.insert(insertPos, sedCmd); insertPos += sedCmd.length(); content.insert(insertPos, mvCmd); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp index 734cc0750c6c026324bf4d391f6d8d27974b3b40..3aca439313de294877b1cb8e7ef931b602362466 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp @@ -35,9 +35,12 @@ #include <coreplugin/ssh/sftpchannel.h> #include <coreplugin/ssh/sshconnection.h> #include <coreplugin/ssh/sshremoteprocess.h> +#include <utils/qtcassert.h> #include <QtCore/QTimer> +#define ASSERT_STATE(state) assertState(state, Q_FUNC_INFO) + using namespace Core; namespace Qt4ProjectManager { @@ -45,7 +48,7 @@ namespace Internal { MaemoRemoteMounter::MaemoRemoteMounter(QObject *parent) : QObject(parent), m_utfsServerTimer(new QTimer(this)), - m_uploadJobId(SftpInvalidJob), m_stop(false) + m_uploadJobId(SftpInvalidJob), m_state(Inactive) { connect(m_utfsServerTimer, SIGNAL(timeout()), this, SLOT(handleUtfsServerTimeout())); @@ -58,12 +61,16 @@ MaemoRemoteMounter::~MaemoRemoteMounter() void MaemoRemoteMounter::setConnection(const Core::SshConnection::Ptr &connection) { + ASSERT_STATE(Inactive); + m_connection = connection; } bool MaemoRemoteMounter::addMountSpecification(const MaemoMountSpecification &mountSpec, bool mountAsRoot) { + ASSERT_STATE(Inactive); + if (mountSpec.isValid()) { if (!m_portList.hasMore()) return false; @@ -75,21 +82,27 @@ bool MaemoRemoteMounter::addMountSpecification(const MaemoMountSpecification &mo void MaemoRemoteMounter::mount() { - m_stop = false; + ASSERT_STATE(Inactive); Q_ASSERT(m_utfsServers.isEmpty()); + Q_ASSERT(m_connection); if (!m_toolChain->allowsRemoteMounts()) m_mountSpecs.clear(); - if (m_mountSpecs.isEmpty()) + if (m_mountSpecs.isEmpty()) { + setState(Inactive); + emit reportProgress(tr("No directories to mount")); emit mounted(); - else + } else { deployUtfsClient(); + } } void MaemoRemoteMounter::unmount() { - m_stop = false; + ASSERT_STATE(Inactive); + if (m_mountSpecs.isEmpty()) { + emit reportProgress(tr("No directories to unmount")); emit unmounted(); return; } @@ -108,13 +121,17 @@ void MaemoRemoteMounter::unmount() SLOT(handleUnmountProcessFinished(int))); connect(m_unmountProcess.data(), SIGNAL(errorOutputAvailable(QByteArray)), this, SLOT(handleUmountStderr(QByteArray))); + setState(Unmounting); m_unmountProcess->start(); } void MaemoRemoteMounter::handleUnmountProcessFinished(int exitStatus) { - if (m_stop) + ASSERT_STATE(QList<State>() << Unmounting << Inactive); + + if (m_state == Inactive) return; + setState(Inactive); QString errorMsg; switch (exitStatus) { @@ -148,7 +165,7 @@ void MaemoRemoteMounter::handleUnmountProcessFinished(int exitStatus) void MaemoRemoteMounter::stop() { - m_stop = true; + setState(Inactive); if (m_utfsClientUploader) { disconnect(m_utfsClientUploader.data(), 0, this, 0); m_utfsClientUploader->closeChannel(); @@ -172,19 +189,24 @@ void MaemoRemoteMounter::deployUtfsClient() connect(m_utfsClientUploader.data(), SIGNAL(initializationFailed(QString)), this, SLOT(handleUploaderInitializationFailed(QString))); m_utfsClientUploader->initialize(); + + setState(UploaderInitializing); } void MaemoRemoteMounter::handleUploaderInitializationFailed(const QString &reason) { - if (m_stop) - return; + ASSERT_STATE(QList<State>() << UploaderInitializing << Inactive); - emit error(tr("Failed to establish SFTP connection: %1").arg(reason)); + if (m_state == UploaderInitializing) { + emit error(tr("Failed to establish SFTP connection: %1").arg(reason)); + setState(Inactive); + } } void MaemoRemoteMounter::handleUploaderInitialized() { - if (m_stop) + ASSERT_STATE(QList<State>() << UploaderInitializing << Inactive); + if (m_state == Inactive) return; emit reportProgress(tr("Uploading UTFS client...")); @@ -195,14 +217,20 @@ void MaemoRemoteMounter::handleUploaderInitialized() = m_toolChain->maddeRoot() + QLatin1String("/madlib/armel/utfs-client"); m_uploadJobId = m_utfsClientUploader->uploadFile(localFile, utfsClientOnDevice(), SftpOverwriteExisting); - if (m_uploadJobId == SftpInvalidJob) + if (m_uploadJobId == SftpInvalidJob) { + setState(Inactive); emit error(tr("Could not upload UTFS client (%1).").arg(localFile)); + } else { + setState(UploadRunning); + } } void MaemoRemoteMounter::handleUploadFinished(Core::SftpJobId jobId, const QString &errorMsg) { - if (m_stop) + ASSERT_STATE(QList<State>() << UploadRunning << Inactive); + + if (m_state == Inactive) return; if (jobId != m_uploadJobId) { @@ -213,6 +241,7 @@ void MaemoRemoteMounter::handleUploadFinished(Core::SftpJobId jobId, m_uploadJobId = SftpInvalidJob; if (!errorMsg.isEmpty()) { emit error(tr("Could not upload UTFS client: %1").arg(errorMsg)); + setState(Inactive); return; } @@ -255,22 +284,31 @@ void MaemoRemoteMounter::startUtfsClients() connect(m_mountProcess.data(), SIGNAL(errorOutputAvailable(QByteArray)), this, SLOT(handleUtfsClientStderr(QByteArray))); m_mountProcess->start(); + + setState(UtfsClientsStarting); } void MaemoRemoteMounter::handleUtfsClientsStarted() { - if (!m_stop) + ASSERT_STATE(QList<State>() << UtfsClientsStarting << Inactive); + if (m_state == UtfsClientsStarting) { + setState(UtfsClientsStarted); QTimer::singleShot(250, this, SLOT(startUtfsServers())); + } } void MaemoRemoteMounter::handleUtfsClientsFinished(int exitStatus) { - if (m_stop) + ASSERT_STATE(QList<State>() << UtfsClientsStarting << UtfsClientsStarted + << UtfsServersStarted << Inactive); + + if (m_state == Inactive) return; + setState(Inactive); if (exitStatus == SshRemoteProcess::ExitedNormally && m_mountProcess->exitCode() == 0) { - m_utfsServerTimer->stop(); + emit reportProgress(tr("Mount operation succeeded.")); emit mounted(); } else { QString errMsg = tr("Failure running UTFS client: %1") @@ -284,7 +322,9 @@ void MaemoRemoteMounter::handleUtfsClientsFinished(int exitStatus) void MaemoRemoteMounter::startUtfsServers() { - if (m_stop) + ASSERT_STATE(QList<State>() << UtfsClientsStarted << Inactive); + + if (m_state == Inactive) return; emit reportProgress(tr("Starting UTFS servers...")); @@ -310,11 +350,13 @@ void MaemoRemoteMounter::startUtfsServers() m_utfsServers << utfsServerProc; utfsServerProc->start(utfsServer(), utfsServerArgs); } + + setState(UtfsServersStarted); } void MaemoRemoteMounter::handleUtfsServerStderr() { - if (!m_stop) { + if (m_state != Inactive) { QProcess * const proc = static_cast<QProcess *>(sender()); const QByteArray &output = proc->readAllStandardError(); emit debugOutput(QString::fromLocal8Bit(output)); @@ -323,7 +365,7 @@ void MaemoRemoteMounter::handleUtfsServerStderr() void MaemoRemoteMounter::handleUtfsServerError(QProcess::ProcessError) { - if (m_stop || m_utfsServers.isEmpty()) + if (m_state == Inactive || m_utfsServers.isEmpty()) return; QProcess * const proc = static_cast<QProcess *>(sender()); @@ -334,25 +376,29 @@ void MaemoRemoteMounter::handleUtfsServerError(QProcess::ProcessError) .arg(QString::fromLocal8Bit(errorOutput)); } killAllUtfsServers(); - m_utfsServerTimer->stop(); + killUtfsClients(); emit error(tr("Error running UTFS server: %1").arg(errorString)); + + setState(Inactive); } void MaemoRemoteMounter::handleUtfsServerFinished(int /* exitCode */, QProcess::ExitStatus exitStatus) { - if (!m_stop && exitStatus != QProcess::NormalExit) + if (m_state != Inactive && exitStatus != QProcess::NormalExit) handleUtfsServerError(static_cast<QProcess *>(sender())->error()); } void MaemoRemoteMounter::handleUtfsClientStderr(const QByteArray &output) { - m_utfsClientStderr += output; + if (m_state != Inactive) + m_utfsClientStderr += output; } void MaemoRemoteMounter::handleUmountStderr(const QByteArray &output) { - m_umountStderr += output; + if (m_state != Inactive) + m_umountStderr += output; } QString MaemoRemoteMounter::utfsClientOnDevice() const @@ -383,11 +429,42 @@ void MaemoRemoteMounter::killUtfsServer(QProcess *proc) void MaemoRemoteMounter::handleUtfsServerTimeout() { - if (m_stop) + ASSERT_STATE(QList<State>() << UtfsServersStarted << Inactive); + if (m_state == Inactive) return; killAllUtfsServers(); + killUtfsClients(); emit error(tr("Timeout waiting for UTFS servers to connect.")); + + setState(Inactive); +} + +void MaemoRemoteMounter::assertState(State expectedState, const char *func) +{ + assertState(QList<State>() << expectedState, func); +} + +void MaemoRemoteMounter::assertState(const QList<State> &expectedStates, + const char *func) +{ + QTC_ASSERT(expectedStates.contains(m_state), + qDebug("Unexpected state %d at %s.", m_state, func)) +} + +void MaemoRemoteMounter::setState(State newState) +{ + if (newState == Inactive) + m_utfsServerTimer->stop(); + m_state = newState; +} + +void MaemoRemoteMounter::killUtfsClients() +{ + const SshRemoteProcess::Ptr utfsClientKiller + = m_connection->createRemoteProcess("pkill utfs-client; sleep 1; " + "pkill -9 utfs-client"); + utfsClientKiller->start(); } } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.h b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.h index 334426a13730b4f7099fe87e2d07267f9c9a94ca..9445d3d050d8c2fba92d59b7229efac39ddc1313 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.h @@ -75,7 +75,7 @@ signals: void mounted(); void unmounted(); void error(const QString &reason); - void reportProgress(const QString &progressOutput); + void reportProgress(const QString &progressOutput); // TODO: No progress output when there's nothingt to mount void debugOutput(const QString &output); private slots: @@ -95,10 +95,20 @@ private slots: void startUtfsServers(); private: + enum State { + Inactive, Unmounting, UploaderInitializing, UploadRunning, + UtfsClientsStarting, UtfsClientsStarted, UtfsServersStarted + }; + + void assertState(State expectedState, const char *func); + void assertState(const QList<State> &expectedStates, const char *func); + void setState(State newState); + void deployUtfsClient(); void startUtfsClients(); void killUtfsServer(QProcess *proc); void killAllUtfsServers(); + void killUtfsClients(); QString utfsClientOnDevice() const; QString utfsServer() const; @@ -123,10 +133,11 @@ private: typedef QSharedPointer<QProcess> ProcPtr; QList<ProcPtr> m_utfsServers; - bool m_stop; QByteArray m_utfsClientStderr; QByteArray m_umountStderr; MaemoPortList m_portList; + + State m_state; }; } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp index 5ea12bc90e2e554a5445f8f7065f8b79fd5b8536..b39da25f22d8825823837b8f051b68c0d311cc54 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp @@ -75,11 +75,6 @@ MaemoSshRunner::MaemoSshRunner(QObject *parent, MaemoSshRunner::~MaemoSshRunner() {} -void MaemoSshRunner::setConnection(const QSharedPointer<Core::SshConnection> &connection) -{ - m_connection = connection; -} - void MaemoSshRunner::start() { // Should not happen. diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.h b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.h index 6d7ea730ec6fa6ed4a77e4a77a68e3e623a1649e..96447e0c4ecb6863b00ad83354f97128f9a22de2 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.h @@ -60,8 +60,6 @@ public: bool debugging); ~MaemoSshRunner(); - void setConnection(const QSharedPointer<Core::SshConnection> &connection); - void start(); void stop(); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp index bae7dd372298df181ca11c62520fdc1be38c1960..3b17b607f824c1ca1d39feaaf739e821eab2ccbb 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp @@ -176,10 +176,16 @@ bool S60CreatePackageStep::init() m_environment = qt4BuildConfiguration()->environment(); m_args.clear(); - if (m_createSmartInstaller) - m_args << QLatin1String("installer_sis"); + if (m_createSmartInstaller) { + if(signingMode() == NotSigned) + m_args << QLatin1String("unsigned_installer_sis"); + else + m_args << QLatin1String("installer_sis"); + } else if (signingMode() == NotSigned) + m_args << QLatin1String("unsigned_sis"); else m_args << QLatin1String("sis"); + if (signingMode() == SignCustom) { m_args << QLatin1String(MAKE_CERTIFICATE_ARGUMENT) + QDir::toNativeSeparators(customSignaturePath()) << QLatin1String(MAKE_KEY_ARGUMENT) + QDir::toNativeSeparators(customKeyPath()); @@ -645,6 +651,8 @@ S60CreatePackageStepConfigWidget::S60CreatePackageStepConfigWidget(S60CreatePack this, SLOT(updateFromUi())); connect(m_ui.selfSignedButton, SIGNAL(clicked()), this, SLOT(updateFromUi())); + connect(m_ui.notSignedButton, SIGNAL(clicked()), + this, SLOT(updateFromUi())); connect(m_ui.signaturePath, SIGNAL(changed(QString)), this, SLOT(updateFromUi())); connect(m_ui.keyFilePath, SIGNAL(changed(QString)), @@ -657,11 +665,27 @@ S60CreatePackageStepConfigWidget::S60CreatePackageStepConfigWidget(S60CreatePack void S60CreatePackageStepConfigWidget::updateUi() { - bool selfSigned = m_signStep->signingMode() == S60CreatePackageStep::SignSelf; - m_ui.selfSignedButton->setChecked(selfSigned); - m_ui.customCertificateButton->setChecked(!selfSigned); - m_ui.signaturePath->setEnabled(!selfSigned); - m_ui.keyFilePath->setEnabled(!selfSigned); + + switch(m_signStep->signingMode()) { + case S60CreatePackageStep::SignCustom: + m_ui.selfSignedButton->setChecked(false); + m_ui.customCertificateButton->setChecked(true); + m_ui.notSignedButton->setChecked(false); + break; + case S60CreatePackageStep::NotSigned: + m_ui.selfSignedButton->setChecked(false); + m_ui.customCertificateButton->setChecked(false); + m_ui.notSignedButton->setChecked(true); + break; + default: + m_ui.selfSignedButton->setChecked(true); + m_ui.customCertificateButton->setChecked(false); + m_ui.notSignedButton->setChecked(false); + break; + } + bool customSigned = m_signStep->signingMode() == S60CreatePackageStep::SignCustom; + m_ui.signaturePath->setEnabled(customSigned); + m_ui.keyFilePath->setEnabled(customSigned); m_ui.signaturePath->setPath(m_signStep->customSignaturePath()); m_ui.keyFilePath->setPath(m_signStep->customKeyPath()); m_ui.smartInstaller->setChecked(m_signStep->createsSmartInstaller()); @@ -670,9 +694,15 @@ void S60CreatePackageStepConfigWidget::updateUi() void S60CreatePackageStepConfigWidget::updateFromUi() { - bool selfSigned = m_ui.selfSignedButton->isChecked(); - m_signStep->setSigningMode(selfSigned ? S60CreatePackageStep::SignSelf - : S60CreatePackageStep::SignCustom); + S60CreatePackageStep::SigningMode signingMode(S60CreatePackageStep::SignSelf); + if (m_ui.selfSignedButton->isChecked()) + signingMode = S60CreatePackageStep::SignSelf; + else if (m_ui.customCertificateButton->isChecked()) + signingMode = S60CreatePackageStep::SignCustom; + else if (m_ui.notSignedButton->isChecked()) + signingMode = S60CreatePackageStep::NotSigned; + + m_signStep->setSigningMode(signingMode); m_signStep->setCustomSignaturePath(m_ui.signaturePath->path()); m_signStep->setCustomKeyPath(m_ui.keyFilePath->path()); m_signStep->setCreatesSmartInstaller(m_ui.smartInstaller->isChecked()); @@ -691,11 +721,17 @@ void S60CreatePackageStepConfigWidget::resetPassphrases() QString S60CreatePackageStepConfigWidget::summaryText() const { QString text; - if (m_signStep->signingMode() == S60CreatePackageStep::SignSelf) { - text = tr("self-signed"); - } else { + switch(m_signStep->signingMode()) { + case S60CreatePackageStep::SignCustom: text = tr("signed with certificate %1 and key file %2") .arg(m_signStep->customSignaturePath(), m_signStep->customKeyPath()); + break; + case S60CreatePackageStep::NotSigned: + text = tr("not signed"); + break; + default: + text = tr("self-signed"); + break; } if (m_signStep->createsSmartInstaller()) return tr("<b>Create SIS Package:</b> %1, using Smart Installer").arg(text); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h index 8cdc5ecb91c2dd7bad4802b9352478b713cb8bb9..b37e517f17d71ba7cf9160e07daeedfd2d383bf1 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.h @@ -74,7 +74,8 @@ class S60CreatePackageStep : public ProjectExplorer::BuildStep public: enum SigningMode { SignSelf = 0, - SignCustom = 1 + SignCustom = 1, + NotSigned = 2 }; explicit S60CreatePackageStep(ProjectExplorer::BuildStepList *bsl); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.ui b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.ui index 55aafb1b68e840d2964645697c9793d55a4a8411..b9eccf5ad1a12f332d5eea3c9be279cc98f4f009 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.ui +++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.ui @@ -7,15 +7,39 @@ <x>0</x> <y>0</y> <width>517</width> - <height>108</height> + <height>135</height> </rect> </property> <property name="windowTitle"> - <string>Form</string> + <string notr="true">Form</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <layout class="QGridLayout" name="gridLayout_2"> + <layout class="QGridLayout" name="gridLayout_3" rowstretch="0,0" columnstretch="0,0" rowminimumheight="0,0" columnminimumwidth="0,0"> + <item row="1" column="0"> + <widget class="QRadioButton" name="notSignedButton"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLabel" name="notSignedLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Not signed</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QGridLayout" name="gridLayout_2" columnstretch="0,0" columnminimumwidth="0,0"> <item row="0" column="0"> <widget class="QRadioButton" name="selfSignedButton"> <property name="text"> diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp index f3a4abb28a473566552c01829f88c9a304edd228..cd4a04a64e0dd2e28cdc613c02055927fa716255 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp @@ -147,13 +147,20 @@ QStringList S60DeployConfiguration::signedPackages() const continue; TargetInformation ti = node->targetInformation(); if (ti.valid) - result << ti.buildDir + QLatin1Char('/') + ti.target - + (runSmartInstaller() ? QLatin1String("_installer") : QLatin1String("")) - + QLatin1String(".sis"); + result << ti.buildDir + QLatin1Char('/') + createPackageName(ti.target); } return result; } +QString S60DeployConfiguration::createPackageName(const QString &baseName) const +{ + QString name(baseName); + name += isSigned() ? QLatin1String("") : QLatin1String("_unsigned"); + name += runSmartInstaller() ? QLatin1String("_installer") : QLatin1String(""); + name += QLatin1String(".sis"); + return name; +} + QStringList S60DeployConfiguration::packageFileNamesWithTargetInfo() const { QList<Qt4ProFileNode *> leafs = qt4Target()->qt4Project()->leafProFiles(); @@ -216,6 +223,21 @@ bool S60DeployConfiguration::runSmartInstaller() const return false; } +bool S60DeployConfiguration::isSigned() const +{ + DeployConfiguration *dc = target()->activeDeployConfiguration(); + QTC_ASSERT(dc, return false); + BuildStepList *bsl = dc->stepList(); + QTC_ASSERT(bsl, return false); + QList<BuildStep *> steps = bsl->steps(); + foreach (const BuildStep *step, steps) { + if (const S60CreatePackageStep *packageStep = qobject_cast<const S60CreatePackageStep *>(step)) { + return packageStep->signingMode() != S60CreatePackageStep::NotSigned; + } + } + return false; +} + ProjectExplorer::ToolChain::ToolChainType S60DeployConfiguration::toolChainType() const { if (Qt4BuildConfiguration *bc = qobject_cast<Qt4BuildConfiguration *>(target()->activeBuildConfiguration())) diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h index 198178dad227bbb73cea75cb9dea87e0c3425b06..1d299eedd94087244ccbd9815fa58a464f95de86 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h @@ -93,8 +93,10 @@ protected: private: void ctor(); bool runSmartInstaller() const; + bool isSigned() const; QString symbianPlatform() const; QString symbianTarget() const; + QString createPackageName(const QString &baseName) const; bool isDebug() const; bool isStaticLibrary(const Qt4ProFileNode &projectNode) const; diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index 1b783a7233814ac94af4969a0f8104e093e474e0..00f4f752051b792636ac89ad1a4968fee79e9513 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -317,6 +317,13 @@ QString Qt4BuildConfiguration::defaultMakeTarget() const return QString(); } +QString Qt4BuildConfiguration::makefile() const +{ + if (qt4Target()->id() == Constants::S60_DEVICE_TARGET_ID) + return QString(); + return qt4Target()->qt4Project()->rootProjectNode()->makefile(); +} + QtVersion *Qt4BuildConfiguration::qtVersion() const { QtVersionManager *vm = QtVersionManager::instance(); @@ -455,21 +462,22 @@ void Qt4BuildConfiguration::qtVersionsChanged(const QList<int> &changedVersions) } // returns true if both are equal -bool Qt4BuildConfiguration::compareToImportFrom(const QString &workingDirectory) +bool Qt4BuildConfiguration::compareToImportFrom(const QString &makefile) { QMakeStep *qs = qmakeStep(); - if (QDir(workingDirectory).exists(QLatin1String("Makefile")) && qs) { - QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(workingDirectory); + if (QFileInfo(makefile).exists() && qs) { + QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(makefile); QtVersion *version = qtVersion(); if (version->qmakeCommand() == qmakePath) { // same qtversion QPair<QtVersion::QmakeBuildConfigs, QStringList> result = - QtVersionManager::scanMakeFile(workingDirectory, version->defaultBuildConfig()); + QtVersionManager::scanMakeFile(makefile, version->defaultBuildConfig()); if (qmakeBuildConfiguration() == result.first) { // The qmake Build Configuration are the same, // now compare arguments lists // we have to compare without the spec/platform cmd argument // and compare that on its own + QString workingDirectory = QFileInfo(makefile).absolutePath(); QString actualSpec = extractSpecFromArgumentList(qs->userArguments(), workingDirectory, version); if (actualSpec.isEmpty()) { // Easy one: the user has chosen not to override the settings diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h index 135518558c3bdaee96a3c1081d62af88170c54a3..09584b49e2adbed7a89513d65cf1e46fdd12f56f 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h @@ -102,8 +102,9 @@ public: QString makeCommand() const; QString defaultMakeTarget() const; + QString makefile() const; - bool compareToImportFrom(const QString &workingDirectory); + bool compareToImportFrom(const QString &makefile); static QStringList removeQMLInspectorFromArgumentList(const QStringList &old); static QStringList removeSpecFromArgumentList(const QStringList &old); static QString extractSpecFromArgumentList(const QStringList &list, QString directory, QtVersion *version); diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 888c45f26524710eec649affc5b140467e0f8c41..81a2c348fcab483cefb8517eeadbdbf611f8fdcd 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -1208,6 +1208,13 @@ TargetInformation Qt4ProFileNode::targetInformation(const QString &fileName) con return qt4ProFileNode->targetInformation(); } +QString Qt4ProFileNode::makefile() const +{ + if (m_varValues[Makefile].isEmpty()) + return QString(); + return m_varValues[Makefile].first(); +} + /*! \class Qt4ProFileNode Implements abstract ProjectNode class @@ -1593,6 +1600,7 @@ void Qt4ProFileNode::applyEvaluate(bool parseResult, bool async) newVarValues[ConfigVar] = m_readerExact->values(QLatin1String("CONFIG")); newVarValues[QmlImportPathVar] = m_readerExact->absolutePathValues( QLatin1String("QML_IMPORT_PATH"), m_projectDir); + newVarValues[Makefile] = m_readerExact->values("MAKEFILE"); if (m_varValues != newVarValues) { m_varValues = newVarValues; diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index f9bdfd29c50c33633ca86646a3a8fd9a34d029d5..8c7f707a2d223694e82501c519830b8cb8285a2b 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -95,7 +95,8 @@ enum Qt4Variable { PrecompiledHeaderVar, LibDirectoriesVar, ConfigVar, - QmlImportPathVar + QmlImportPathVar, + Makefile }; class Qt4PriFileNode; @@ -278,6 +279,8 @@ public: TargetInformation targetInformation(const QString &fileName) const; TargetInformation targetInformation() const; + QString makefile() const; + void update(); void scheduleUpdate(); diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 1385f6340635f9b5c77c3ae6fdb55685ac4d98c9..408a259ba86170cebea457507509b98d109fd668 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -40,6 +40,7 @@ #include "projectloadwizard.h" #include "qt4buildconfiguration.h" #include "findqt4profiles.h" +#include "qmldumptool.h" #include <coreplugin/icore.h> #include <coreplugin/messagemanager.h> @@ -50,6 +51,7 @@ #include <qmljs/qmljsmodelmanagerinterface.h> #include <projectexplorer/buildenvironmentwidget.h> #include <projectexplorer/customexecutablerunconfiguration.h> +#include <projectexplorer/projectexplorer.h> #include <utils/qtcassert.h> #include <QtCore/QDebug> @@ -567,6 +569,9 @@ void Qt4Project::updateCppCodeModel() void Qt4Project::updateQmlJSCodeModel() { + if (m_projectFiles->files[QMLType].isEmpty()) + return; + QmlJS::ModelManagerInterface *modelManager = QmlJS::ModelManagerInterface::instance(); if (!modelManager) return; @@ -584,6 +589,10 @@ void Qt4Project::updateQmlJSCodeModel() } projectInfo.importPaths.removeDuplicates(); + if (projectInfo.qmlDumpPath.isNull()) { + projectInfo.qmlDumpPath = QmlDumpTool::qmlDumpPath(this); + } + modelManager->updateProjectInfo(projectInfo); } diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp index 3734bcad1a8ea936d87956fa689fb388a99f1fc2..398548e40ac7d10302d85f42229ab85ffb1158b4 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp @@ -295,16 +295,26 @@ void Qt4ProjectConfigWidget::updateImportLabel() { bool visible = false; bool targetMatches = false; + bool incompatibleBuild = false; QtVersionManager *vm = QtVersionManager::instance(); // we only show if we actually have a qmake and makestep if (m_buildConfiguration->qmakeStep() && m_buildConfiguration->makeStep()) { - QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(m_buildConfiguration->buildDirectory()); + QString makefile = m_buildConfiguration->buildDirectory(); + if (m_buildConfiguration->makefile().isEmpty()) + makefile.append("/Makefile"); + else + makefile.append(m_buildConfiguration->makefile()); + + QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(makefile); QtVersion *version = m_buildConfiguration->qtVersion(); // check that there's a makefile if (!qmakePath.isEmpty()) { - // and that the qmake path is different from the current version - if (qmakePath != (version ? version->qmakeCommand() : QString())) { + // Is it from the same build? + if (!QtVersionManager::makefileIsFor(makefile, m_buildConfiguration->target()->project()->file()->fileName())) { + incompatibleBuild = true; + } else if (qmakePath != (version ? version->qmakeCommand() : QString())) { + // and that the qmake path is different from the current version // import enable visible = true; QtVersion *newVersion = vm->qtVersionForQMakeBinary(qmakePath); @@ -318,11 +328,9 @@ void Qt4ProjectConfigWidget::updateImportLabel() delete newVersion; } else { // check that the qmake flags, arguments match - visible = !m_buildConfiguration->compareToImportFrom(m_buildConfiguration->buildDirectory()); + visible = !m_buildConfiguration->compareToImportFrom(makefile); targetMatches = true; } - } else { - visible = false; } } @@ -332,7 +340,14 @@ void Qt4ProjectConfigWidget::updateImportLabel() QList<ProjectExplorer::Task> issues = m_buildConfiguration->qtVersion()->reportIssues(m_buildConfiguration->target()->project()->file()->fileName(), buildDirectory); - if (!issues.isEmpty()) { + if (incompatibleBuild) { + m_ui->problemLabel->setVisible(true); + m_ui->warningLabel->setVisible(true); + m_ui->importLabel->setVisible(false); + m_ui->problemLabel->setText(tr("An build for a different project exists in %1, which will be overwritten.", + "%1 build directory"). + arg(m_ui->shadowBuildDirEdit->path())); + } else if (!issues.isEmpty()) { m_ui->problemLabel->setVisible(true); m_ui->warningLabel->setVisible(true); m_ui->importLabel->setVisible(visible); @@ -377,7 +392,13 @@ void Qt4ProjectConfigWidget::importLabelClicked() return; QString directory = m_buildConfiguration->buildDirectory(); if (!directory.isEmpty()) { - QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(directory); + QString makefile = directory; + if (m_buildConfiguration->makefile().isEmpty()) + makefile.append("/Makefile"); + else + makefile.append(m_buildConfiguration->makefile()); + + QString qmakePath = QtVersionManager::findQMakeBinaryFromMakefile(makefile); if (!qmakePath.isEmpty()) { QtVersionManager *vm = QtVersionManager::instance(); QtVersion *version = vm->qtVersionForQMakeBinary(qmakePath); diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.pro b/src/plugins/qt4projectmanager/qt4projectmanager.pro index e7a6bb28886c6e2654d53ea0e99e73631c0dfd77..e456017ebe5b93beb7d2a4b63204ae20a2470a42 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.pro +++ b/src/plugins/qt4projectmanager/qt4projectmanager.pro @@ -61,7 +61,9 @@ HEADERS += qt4deployconfiguration.h \ addlibrarywizard.h \ librarydetailscontroller.h \ findqt4profiles.h \ - qt4projectmanager_global.h + qt4projectmanager_global.h \ + qmldumptool.h \ + qmlobservertool.h SOURCES += qt4projectmanagerplugin.cpp \ qt4deployconfiguration.cpp \ qtparser.cpp \ @@ -117,7 +119,9 @@ SOURCES += qt4projectmanagerplugin.cpp \ qtoutputformatter.cpp \ addlibrarywizard.cpp \ librarydetailscontroller.cpp \ - findqt4profiles.cpp + findqt4profiles.cpp \ + qmldumptool.cpp \ + qmlobservertool.cpp FORMS += makestep.ui \ qmakestep.ui \ qt4projectconfigwidget.ui \ diff --git a/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri b/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri index 7d2124fdded3258bf448f8fdafb1f38ca090055f..c325787682ab9f15d94311d4c7ebf9cddf84932a 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri +++ b/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri @@ -1,6 +1,5 @@ include(../../plugins/projectexplorer/projectexplorer.pri) include(../../plugins/cpptools/cpptools.pri) -include(../../plugins/cppeditor/cppeditor.pri) include(../../plugins/qmljseditor/qmljseditor.pri) include(../../plugins/designer/designer.pri) include(../../plugins/debugger/debugger.pri) diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h index 9d62da41eeec1354c3aea4bf80afec2154db7f2c..db3b1719f89d5406c833be113a15010ef76dba76 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h +++ b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h @@ -88,11 +88,17 @@ const char * const QT_SETTINGS_TR_CATEGORY = QT_TRANSLATE_NOOP("Qt4ProjectMan const char * const QTVERSION_SETTINGS_PAGE_ID = "Qt Versions"; const char * const QTVERSION_SETTINGS_PAGE_NAME = QT_TRANSLATE_NOOP("Qt4ProjectManager", "Qt Versions"); -// Wizard categories +// C++ wizard categories const char * const QT_APP_WIZARD_CATEGORY = "C.QtApplicationProjects"; const char * const QT_APP_WIZARD_TR_SCOPE = "Qt4ProjectManager"; const char * const QT_APP_WIZARD_TR_CATEGORY = QT_TRANSLATE_NOOP("Qt4ProjectManager", "Qt C++ Project"); +// QML wizard categories +const char * const QML_WIZARD_CATEGORY = "F.Projects"; // (after Qt) +const char * const QML_WIZARD_TR_SCOPE = "QmlProjectManager"; +const char * const QML_WIZARD_TR_CATEGORY = QT_TRANSLATE_NOOP("QmlProjectManager", "Qt Quick Project"); +const char * const QML_WIZARD_ICON = ":/qmlproject/images/qml_wizard.png"; + // Tasks const char * const PROFILE_EVALUATE = "Qt4ProjectManager.ProFileEvaluate"; diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index 0ed226159594f1734907fc6bdb426d89ccdbd9ab..6f926c4fd57b41937b431bb8b211cc69c0bce28b 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -140,8 +140,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString * MobileAppWizard *mobileWizard = new MobileAppWizard; addAutoReleasedObject(mobileWizard); - addAutoReleasedObject(new QmlStandaloneAppWizard(QmlStandaloneAppWizard::NewQmlFile)); - addAutoReleasedObject(new QmlStandaloneAppWizard(QmlStandaloneAppWizard::ImportQmlFile)); + addAutoReleasedObject(new QmlStandaloneAppWizard()); LibraryWizard *libWizard = new LibraryWizard; addAutoReleasedObject(libWizard); diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index 4fe9b7739bfac9df94f14be5802df861b6f5804c..433986b59f47d6686c65bcb5a20d0e25d1e7dfa9 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -542,13 +542,12 @@ QString Qt4RunConfiguration::baseWorkingDirectory() const return ti.workingDir; } - -QStringList Qt4RunConfiguration::baseCommandLineArguments() const +QStringList Qt4RunConfiguration::commandLineArguments() const { - return environment().expandVariables(commandLineArguments()); + return environment().expandVariables(baseCommandLineArguments()); } -QStringList Qt4RunConfiguration::commandLineArguments() const +QStringList Qt4RunConfiguration::baseCommandLineArguments() const { return m_commandLineArguments; } diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp index d0e0b7d59f41031a84dc6d93c8c675074fab4909..9c3d23dcd77b408e8cd6ac416cd5c9c49950c20b 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.cpp +++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp @@ -33,6 +33,8 @@ #include "qt4projectmanagerconstants.h" #include "qt4target.h" #include "qtversionmanager.h" +#include "qmldumptool.h" +#include "qmlobservertool.h" #include <projectexplorer/debugginghelper.h> #include <coreplugin/coreconstants.h> @@ -70,10 +72,9 @@ DebuggingHelperBuildTask::~DebuggingHelperBuildTask() void DebuggingHelperBuildTask::run(QFutureInterface<void> &future) { - future.setProgressRange(0, 4); - future.setProgressValue(1); - const QString output = m_version->buildDebuggingHelperLibrary(); + future.setProgressRange(0, 5); future.setProgressValue(1); + const QString output = m_version->buildDebuggingHelperLibrary(future); emit finished(m_version->displayName(), output); deleteLater(); } @@ -145,8 +146,10 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<QtVersion *> ver : QWidget(parent) , m_debuggingHelperOkPixmap(QLatin1String(":/extensionsystem/images/ok.png")) , m_debuggingHelperErrorPixmap(QLatin1String(":/extensionsystem/images/error.png")) + , m_debuggingHelperIntermediatePixmap(QLatin1String(":/extensionsystem/images/notloaded.png")) , m_debuggingHelperOkIcon(m_debuggingHelperOkPixmap) , m_debuggingHelperErrorIcon(m_debuggingHelperErrorPixmap) + , m_debuggingHelperIntermediateIcon(m_debuggingHelperIntermediatePixmap) , m_specifyNameString(tr("<specify a name>")) , m_specifyPathString(tr("<specify a qmake location>")) , m_ui(new Internal::Ui::QtVersionManager()) @@ -190,7 +193,7 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<QtVersion *> ver item->setData(0, Qt::UserRole, version->uniqueId()); if (version->isValid() && version->supportsBinaryDebuggingHelper()) - item->setData(2, Qt::DecorationRole, version->hasDebuggingHelper() ? m_debuggingHelperOkIcon : m_debuggingHelperErrorIcon); + item->setData(2, Qt::DecorationRole, debuggerHelperIconForQtVersion(version)); else item->setData(2, Qt::DecorationRole, QIcon()); } @@ -235,6 +238,30 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<QtVersion *> ver updateState(); } +QIcon QtOptionsPageWidget::debuggerHelperIconForQtVersion(const QtVersion *version) +{ + if (version->hasDebuggingHelper() + && (!QmlDumpTool::canBuild(version) || version->hasQmlDump()) + && (!QmlObserverTool::canBuild(version) || version->hasQmlObserver())) { + return m_debuggingHelperOkIcon; + } else if (!version->hasDebuggingHelper() && !version->hasQmlDump() && !version->hasQmlObserver()) { + return m_debuggingHelperErrorIcon; + } + return m_debuggingHelperIntermediateIcon; +} + +QPixmap QtOptionsPageWidget::debuggerHelperPixmapForQtVersion(const QtVersion *version) +{ + if (version->hasDebuggingHelper() + && (!QmlDumpTool::canBuild(version) || version->hasQmlDump()) + && (!QmlObserverTool::canBuild(version) || version->hasQmlObserver())) { + return m_debuggingHelperOkPixmap; + } else if (!version->hasDebuggingHelper() && !version->hasQmlDump() && !version->hasQmlObserver()) { + return m_debuggingHelperErrorPixmap; + } + return m_debuggingHelperIntermediatePixmap; +} + bool QtOptionsPageWidget::eventFilter(QObject *o, QEvent *e) { // Set the items tooltip, which may cause costly initialization @@ -289,8 +316,11 @@ void QtOptionsPageWidget::debuggingHelperBuildFinished(const QString &name, cons QTreeWidgetItem *item = treeItemForIndex(index); QTC_ASSERT(item, return) item->setData(2, Qt::UserRole, output); - const bool success = m_versions.at(index)->hasDebuggingHelper(); - item->setData(2, Qt::DecorationRole, success ? m_debuggingHelperOkIcon : m_debuggingHelperErrorIcon); + QSharedPointerQtVersion qtVersion = m_versions.at(index); + const bool success = qtVersion->hasDebuggingHelper() + && (!QmlDumpTool::canBuild(qtVersion.data()) || qtVersion->hasQmlDump()) + && (!QmlObserverTool::canBuild(qtVersion.data()) || qtVersion->hasQmlObserver()); + item->setData(2, Qt::DecorationRole, debuggerHelperIconForQtVersion(qtVersion.data())); // Update bottom control if the selection is still the same if (index == currentIndex()) { @@ -373,15 +403,39 @@ void QtOptionsPageWidget::removeQtDir() } // Format html table tooltip about helpers -static inline QString msgHtmlHelperToolTip(const QFileInfo &fi) +static inline QString msgHtmlHelperToolTip(const QString &gdbHelperPath, const QString &qmlDumpPath, const QString &qmlObserverPath) { + QFileInfo gdbHelperFI(gdbHelperPath); + QFileInfo qmlDumpFI(qmlDumpPath); + QFileInfo qmlObserverFI(qmlObserverPath); + + QString notFound = QtOptionsPageWidget::tr("Binary not found"); + //: Tooltip showing the debugging helper library file. - return QtOptionsPageWidget::tr("<html><body><table><tr><td>File:</td><td><pre>%1</pre></td></tr>" + return QtOptionsPageWidget::tr("<html><body><table>" + "<tr><td colspan=\"2\"><b>GDB debugging helpers</b></td></tr>" + "<tr><td>File:</td><td><pre>%1</pre></td></tr>" "<tr><td>Last modified:</td><td>%2</td></tr>" - "<tr><td>Size:</td><td>%3 Bytes</td></tr></table></body></html>"). - arg(QDir::toNativeSeparators(fi.absoluteFilePath())). - arg(fi.lastModified().toString(Qt::SystemLocaleLongDate)). - arg(fi.size()); + "<tr><td>Size:</td><td>%3 Bytes</td></tr>" + "<tr><td colspan=\"2\"><b>QML type dumper</b></td></tr>" + "<tr><td>File:</td><td><pre>%4</pre></td></tr>" + "<tr><td>Last modified:</td><td>%5</td></tr>" + "<tr><td>Size:</td><td>%6 Bytes</td></tr>" + "<tr><td colspan=\"2\"><b>QML observer</b></td></tr>" + "<tr><td>File:</td><td><pre>%7</pre></td></tr>" + "<tr><td>Last modified:</td><td>%8</td></tr>" + "<tr><td>Size:</td><td>%9 Bytes</td></tr>" + "</table></body></html>" + ). + arg(gdbHelperPath.isEmpty() ? notFound : QDir::toNativeSeparators(gdbHelperFI.absoluteFilePath())). + arg(gdbHelperFI.lastModified().toString(Qt::SystemLocaleLongDate)). + arg(gdbHelperFI.size()). + arg(qmlDumpPath.isEmpty() ? notFound : QDir::toNativeSeparators(qmlDumpFI.absoluteFilePath())). + arg(qmlDumpFI.lastModified().toString(Qt::SystemLocaleLongDate)). + arg(qmlDumpFI.size()). + arg(qmlObserverPath.isEmpty() ? notFound : QDir::toNativeSeparators(qmlObserverFI.absoluteFilePath())). + arg(qmlObserverFI.lastModified().toString(Qt::SystemLocaleLongDate)). + arg(qmlObserverFI.size()); } // Update the state label with a pixmap and set a tooltip describing @@ -390,10 +444,10 @@ void QtOptionsPageWidget::updateDebuggingHelperStateLabel(const QtVersion *versi { QString tooltip; if (version && version->isValid()) { - const bool hasHelper = version->hasDebuggingHelper(); - m_ui->debuggingHelperStateLabel->setPixmap(hasHelper ? m_debuggingHelperOkPixmap : m_debuggingHelperErrorPixmap); - if (hasHelper) - tooltip = msgHtmlHelperToolTip(QFileInfo(version->debuggingHelperLibrary())); + m_ui->debuggingHelperStateLabel->setPixmap(debuggerHelperPixmapForQtVersion(version)); + tooltip = msgHtmlHelperToolTip(version->debuggingHelperLibrary(), + version->qmlDumpTool(), + version->qmlObserverTool()); } else { m_ui->debuggingHelperStateLabel->setPixmap(QPixmap()); } @@ -679,7 +733,7 @@ void QtOptionsPageWidget::updateCurrentQMakeLocation() if (version->isValid() && version->supportsBinaryDebuggingHelper()) { const bool hasLog = !currentItem->data(2, Qt::UserRole).toString().isEmpty(); - currentItem->setData(2, Qt::DecorationRole, version->hasDebuggingHelper() ? m_debuggingHelperOkIcon : m_debuggingHelperErrorIcon); + currentItem->setData(2, Qt::DecorationRole, debuggerHelperIconForQtVersion(version)); m_ui->showLogButton->setEnabled(hasLog); m_ui->rebuildButton->setEnabled(true); } else { diff --git a/src/plugins/qt4projectmanager/qtoptionspage.h b/src/plugins/qt4projectmanager/qtoptionspage.h index 65a3956a3a5f3b703d0e95409c589ab5603259b7..293dd32306682800c996863159c35a940a5cc501 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.h +++ b/src/plugins/qt4projectmanager/qtoptionspage.h @@ -90,11 +90,15 @@ private: QtVersion *currentVersion() const; int currentIndex() const; void updateDebuggingHelperStateLabel(const QtVersion *version = 0); + QIcon debuggerHelperIconForQtVersion(const QtVersion *version); + QPixmap debuggerHelperPixmapForQtVersion(const QtVersion *version); const QPixmap m_debuggingHelperOkPixmap; const QPixmap m_debuggingHelperErrorPixmap; + const QPixmap m_debuggingHelperIntermediatePixmap; const QIcon m_debuggingHelperOkIcon; const QIcon m_debuggingHelperErrorIcon; + const QIcon m_debuggingHelperIntermediateIcon; const QString m_specifyNameString; const QString m_specifyPathString; diff --git a/src/plugins/qt4projectmanager/qtuicodemodelsupport.cpp b/src/plugins/qt4projectmanager/qtuicodemodelsupport.cpp index 695666ba0e209d63e425b5d76cb5437b71dd5b93..d9640b28c13f7a08467e3a4052db402302faf420 100644 --- a/src/plugins/qt4projectmanager/qtuicodemodelsupport.cpp +++ b/src/plugins/qt4projectmanager/qtuicodemodelsupport.cpp @@ -44,158 +44,25 @@ Qt4UiCodeModelSupport::Qt4UiCodeModelSupport(CppTools::CppModelManagerInterface Qt4Project *project, const QString &source, const QString &uiHeaderFile) - : CppTools::AbstractEditorSupport(modelmanager), - m_project(project), - m_sourceName(source), - m_fileName(uiHeaderFile), - m_updateIncludingFiles(false) + : CppTools::UiCodeModelSupport(modelmanager, source, uiHeaderFile), + m_project(project) { - if (debug) - qDebug()<<"ctor Qt4UiCodeModelSupport for"<<m_sourceName<<uiHeaderFile; - init(); -} -Qt4UiCodeModelSupport::~Qt4UiCodeModelSupport() -{ - if (debug) - qDebug()<<"dtor ~Qt4UiCodeModelSupport for"<<m_sourceName; } -void Qt4UiCodeModelSupport::init() -{ - QDateTime sourceTime = QFileInfo(m_sourceName).lastModified(); - QFileInfo uiHeaderFileInfo(m_fileName); - QDateTime uiHeaderTime = uiHeaderFileInfo.exists() ? uiHeaderFileInfo.lastModified() : QDateTime(); - if (uiHeaderTime.isValid() && (uiHeaderTime > sourceTime)) { - QFile file(m_fileName); - if (file.open(QFile::ReadOnly)) { - if (debug) - qDebug()<<"ui*h file is more recent then source file, using information from ui*h file"<<m_fileName; - QTextStream stream(&file); - m_contents = stream.readAll().toUtf8(); - m_cacheTime = uiHeaderTime; - return; - } - } - - if (debug) - qDebug()<<"ui*h file not found, or not recent enough, trying to create it on the fly"; - QFile file(m_sourceName); - if (file.open(QFile::ReadOnly)) { - QTextStream stream(&file); - const QString contents = stream.readAll(); - if (runUic(contents)) { - if (debug) - qDebug()<<"created on the fly"; - return; - } else { - // uic run was unsuccesfull - if (debug) - qDebug()<<"uic run wasn't succesfull"; - m_cacheTime = QDateTime(); - m_contents = QByteArray(); - // and if the header file wasn't there, next time we need to update - // all of the files that include this header - if (!uiHeaderFileInfo.exists()) - m_updateIncludingFiles = true; - return; - } - } else { - if (debug) - qDebug()<<"Could open "<<m_sourceName<<"needed for the cpp model"; - m_contents = QByteArray(); - } -} - -QByteArray Qt4UiCodeModelSupport::contents() const -{ - return m_contents; -} - -QString Qt4UiCodeModelSupport::fileName() const -{ - return m_fileName; -} - -void Qt4UiCodeModelSupport::setFileName(const QString &name) +Qt4UiCodeModelSupport::~Qt4UiCodeModelSupport() { - if (m_fileName == name && m_cacheTime.isValid()) - return; - if (debug) - qDebug() << "Qt4UiCodeModelSupport::setFileName"<<name; - - m_fileName = name; - m_contents.clear(); - m_cacheTime = QDateTime(); - init(); } -bool Qt4UiCodeModelSupport::runUic(const QString &ui) const +QString Qt4UiCodeModelSupport::uicCommand() const { Qt4BuildConfiguration *qt4bc = m_project->activeTarget()->activeBuildConfiguration(); - QProcess uic; - uic.setEnvironment(qt4bc->environment().toStringList()); - const QString uicCommand = qt4bc->qtVersion()->uicCommand(); - if (debug) - qDebug() << "Qt4UiCodeModelSupport::runUic " << uicCommand << " on " << ui.size() << " bytes"; - uic.start(uicCommand, QStringList(), QIODevice::ReadWrite); - if (!uic.waitForStarted()) - return false; - uic.write(ui.toUtf8()); - uic.closeWriteChannel(); - if (uic.waitForFinished() && uic.exitStatus() == QProcess::NormalExit && uic.exitCode() == 0) { - m_contents = uic.readAllStandardOutput(); - m_cacheTime = QDateTime::currentDateTime(); - if (debug) - qDebug() << "ok" << m_contents.size() << "bytes."; - return true; - } else { - if (debug) - qDebug() << "failed" << uic.readAllStandardError(); - uic.kill(); - } - return false; -} - -void Qt4UiCodeModelSupport::updateFromEditor(const QString &formEditorContents) -{ - if (runUic(formEditorContents)) { - updateDocument(); - } + return qt4bc->qtVersion()->uicCommand(); } -void Qt4UiCodeModelSupport::updateFromBuild() +QStringList Qt4UiCodeModelSupport::environment() const { - if (debug) - qDebug()<<"Qt4UiCodeModelSupport::updateFromBuild() for file"<<m_sourceName; - // This is mostly a fall back for the cases when uic couldn't be run - // it pays special attention to the case where a ui_*h was newly created - QDateTime sourceTime = QFileInfo(m_sourceName).lastModified(); - if (m_cacheTime.isValid() && m_cacheTime >= sourceTime) { - if (debug) - qDebug()<<"Cache is still more recent then source"; - return; - } else { - QFileInfo fi(m_fileName); - QDateTime uiHeaderTime = fi.exists() ? fi.lastModified() : QDateTime(); - if (uiHeaderTime.isValid() && (uiHeaderTime > sourceTime)) { - if (m_cacheTime >= uiHeaderTime) - return; - if (debug) - qDebug()<<"found ui*h updating from it"; - - QFile file(m_fileName); - if (file.open(QFile::ReadOnly)) { - QTextStream stream(&file); - m_contents = stream.readAll().toUtf8(); - m_cacheTime = uiHeaderTime; - updateDocument(); - return; - } - } - if (debug) - qDebug()<<"ui*h not found or not more recent then source not changing anything"; - } + Qt4BuildConfiguration *qt4bc = m_project->activeTarget()->activeBuildConfiguration(); + return qt4bc->environment().toStringList(); } - diff --git a/src/plugins/qt4projectmanager/qtuicodemodelsupport.h b/src/plugins/qt4projectmanager/qtuicodemodelsupport.h index 8f753617eb0ad40044ed90f34a272a9bc88f2465..b938009739d1ea45833e4ca1f18f47de8f28f3c1 100644 --- a/src/plugins/qt4projectmanager/qtuicodemodelsupport.h +++ b/src/plugins/qt4projectmanager/qtuicodemodelsupport.h @@ -31,6 +31,7 @@ #define QTUICODEMODELSUPPORT_H #include <cpptools/cppmodelmanagerinterface.h> +#include <cpptools/uicodecompletionsupport.h> #include <QtCore/QDateTime> @@ -38,7 +39,7 @@ namespace Qt4ProjectManager { class Qt4Project; namespace Internal { -class Qt4UiCodeModelSupport : public CppTools::AbstractEditorSupport +class Qt4UiCodeModelSupport : public CppTools::UiCodeModelSupport { public: Qt4UiCodeModelSupport(CppTools::CppModelManagerInterface *modelmanager, @@ -46,21 +47,11 @@ public: const QString &sourceFile, const QString &uiHeaderFile); ~Qt4UiCodeModelSupport(); - void setFileName(const QString &name); - void setSourceName(const QString &name); - virtual QByteArray contents() const; - virtual QString fileName() const; - void updateFromEditor(const QString &formEditorContents); - void updateFromBuild(); +protected: + virtual QString uicCommand() const; + virtual QStringList environment() const; private: - void init(); - bool runUic(const QString &ui) const; Qt4Project *m_project; - QString m_sourceName; - QString m_fileName; - mutable bool m_updateIncludingFiles; - mutable QByteArray m_contents; - mutable QDateTime m_cacheTime; }; diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 84dfb5d2fae61adde4c0b246dd83c590d0416217..bbaa22eb97c5e0caadecf71b1a96c5e2d50fe112 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -37,6 +37,8 @@ #include "qt-s60/s60manager.h" #include "qt-s60/s60projectchecker.h" +#include "qmlobservertool.h" +#include "qmldumptool.h" #include <projectexplorer/debugginghelper.h> #include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorerconstants.h> @@ -515,6 +517,8 @@ QtVersion::QtVersion(const QString &name, const QString &qmakeCommand, int id, m_isAutodetected(isAutodetected), m_autodetectionSource(autodetectionSource), m_hasDebuggingHelper(false), + m_hasQmlDump(false), + m_hasQmlObserver(false), m_toolChainUpToDate(false), m_versionInfoUpToDate(false), m_notInstalled(false), @@ -537,6 +541,8 @@ QtVersion::QtVersion(const QString &name, const QString &qmakeCommand, m_isAutodetected(isAutodetected), m_autodetectionSource(autodetectionSource), m_hasDebuggingHelper(false), + m_hasQmlDump(false), + m_hasQmlObserver(false), m_toolChainUpToDate(false), m_versionInfoUpToDate(false), m_notInstalled(false), @@ -555,6 +561,8 @@ QtVersion::QtVersion(const QString &qmakeCommand, bool isAutodetected, const QSt : m_isAutodetected(isAutodetected), m_autodetectionSource(autodetectionSource), m_hasDebuggingHelper(false), + m_hasQmlDump(false), + m_hasQmlObserver(false), m_toolChainUpToDate(false), m_versionInfoUpToDate(false), m_notInstalled(false), @@ -573,6 +581,8 @@ QtVersion::QtVersion() : m_id(-1), m_isAutodetected(false), m_hasDebuggingHelper(false), + m_hasQmlDump(false), + m_hasQmlObserver(false), m_toolChainUpToDate(false), m_versionInfoUpToDate(false), m_notInstalled(false), @@ -793,12 +803,12 @@ void QtVersion::updateSourcePath() // That is returns the directory // To find out whether we already have a qtversion for that directory call // QtVersion *QtVersionManager::qtVersionForDirectory(const QString directory); -QString QtVersionManager::findQMakeBinaryFromMakefile(const QString &directory) +QString QtVersionManager::findQMakeBinaryFromMakefile(const QString &makefile) { bool debugAdding = false; - QFile makefile(directory + "/Makefile" ); - if (makefile.exists() && makefile.open(QFile::ReadOnly)) { - QTextStream ts(&makefile); + QFile fi(makefile); + if (fi.exists() && fi.open(QFile::ReadOnly)) { + QTextStream ts(&fi); QRegExp r1("QMAKE\\s*=(.*)"); while (!ts.atEnd()) { QString line = ts.readLine(); @@ -844,32 +854,31 @@ void dumpQMakeAssignments(const QList<QMakeAssignment> &list) } } -bool QtVersionManager::makefileIsFor(const QString &directory, const QString &proFile) +bool QtVersionManager::makefileIsFor(const QString &makefile, const QString &proFile) { if (proFile.isEmpty()) return true; - QString line = findQMakeLine(directory, QLatin1String("# Project:")).trimmed(); + QString line = findQMakeLine(makefile, QLatin1String("# Project:")).trimmed(); if (line.isEmpty()) return false; - line = line.mid(line.indexOf(QChar(':')) + 1); line = line.trimmed(); - QFileInfo srcFileInfo(QDir(directory), line); + QFileInfo srcFileInfo(QFileInfo(makefile).absoluteDir(), line); QFileInfo proFileInfo(proFile); return srcFileInfo == proFileInfo; } -QPair<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile(const QString &directory, QtVersion::QmakeBuildConfigs defaultBuildConfig) +QPair<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile(const QString &makefile, QtVersion::QmakeBuildConfigs defaultBuildConfig) { if (debug) qDebug()<<"ScanMakeFile, the gory details:"; QtVersion::QmakeBuildConfigs result = defaultBuildConfig; QStringList result2; - QString line = findQMakeLine(directory, QLatin1String("# Command:")); + QString line = findQMakeLine(makefile, QLatin1String("# Command:")); if (!line.isEmpty()) { if (debug) qDebug()<<"Found line"<<line; @@ -920,11 +929,11 @@ QPair<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile( return qMakePair(result, result2); } -QString QtVersionManager::findQMakeLine(const QString &directory, const QString &key) +QString QtVersionManager::findQMakeLine(const QString &makefile, const QString &key) { - QFile makefile(directory + QLatin1String("/Makefile" )); - if (makefile.exists() && makefile.open(QFile::ReadOnly)) { - QTextStream ts(&makefile); + QFile fi(makefile); + if (fi.exists() && fi.open(QFile::ReadOnly)) { + QTextStream ts(&fi); while (!ts.atEnd()) { const QString line = ts.readLine(); if (line.startsWith(key)) @@ -1125,6 +1134,8 @@ void QtVersion::updateVersionInfo() const m_hasExamples = false; m_hasDocumentation = false; m_hasDebuggingHelper = false; + m_hasQmlDump = false; + m_hasQmlObserver = false; if (!queryQMakeVariables(qmakeCommand(), &m_versionInfo)) return; @@ -1133,8 +1144,11 @@ void QtVersion::updateVersionInfo() const QString qtInstallData = m_versionInfo.value("QT_INSTALL_DATA"); m_versionInfo.insert("QMAKE_MKSPECS", QDir::cleanPath(qtInstallData+"/mkspecs")); - if (!qtInstallData.isEmpty()) + if (!qtInstallData.isEmpty()) { m_hasDebuggingHelper = !DebuggingHelperLibrary::debuggingHelperLibraryByInstallData(qtInstallData).isEmpty(); + m_hasQmlDump = !QmlDumpTool::toolByInstallData(qtInstallData).isEmpty(); + m_hasQmlObserver = !QmlObserverTool::toolByInstallData(qtInstallData).isEmpty(); + } } // Now check for a qt that is configured with a prefix but not installed @@ -1234,6 +1248,7 @@ QString QtVersion::qmlviewerCommand() const { if (!isValid()) return QString(); + if (m_qmlviewerCommand.isNull()) { #ifdef Q_OS_MAC const QString qmlViewerName = QLatin1String("QMLViewer"); @@ -1609,6 +1624,18 @@ bool QtVersion::hasDebuggingHelper() const return m_hasDebuggingHelper; } +bool QtVersion::hasQmlDump() const +{ + updateVersionInfo(); + return m_hasQmlDump; +} + +bool QtVersion::hasQmlObserver() const +{ + updateVersionInfo(); + return m_hasQmlObserver; +} + QString QtVersion::debuggingHelperLibrary() const { QString qtInstallData = versionInfo().value("QT_INSTALL_DATA"); @@ -1617,12 +1644,28 @@ QString QtVersion::debuggingHelperLibrary() const return DebuggingHelperLibrary::debuggingHelperLibraryByInstallData(qtInstallData); } +QString QtVersion::qmlDumpTool() const +{ + QString qtInstallData = versionInfo().value("QT_INSTALL_DATA"); + if (qtInstallData.isEmpty()) + return QString(); + return QmlDumpTool::toolByInstallData(qtInstallData); +} + +QString QtVersion::qmlObserverTool() const +{ + QString qtInstallData = versionInfo().value("QT_INSTALL_DATA"); + if (qtInstallData.isEmpty()) + return QString(); + return QmlObserverTool::toolByInstallData(qtInstallData); +} + QStringList QtVersion::debuggingHelperLibraryLocations() const { QString qtInstallData = versionInfo().value("QT_INSTALL_DATA"); if (qtInstallData.isEmpty()) return QStringList(); - return DebuggingHelperLibrary::debuggingHelperLibraryLocationsByInstallData(qtInstallData); + return DebuggingHelperLibrary::locationsByInstallData(qtInstallData); } bool QtVersion::supportsBinaryDebuggingHelper() const @@ -1702,8 +1745,9 @@ bool QtVersion::isQt64Bit() const #endif } -QString QtVersion::buildDebuggingHelperLibrary() +QString QtVersion::buildDebuggingHelperLibrary(QFutureInterface<void> &future, bool onlyQmlDump) { + QString qtInstallHeaders = versionInfo().value("QT_INSTALL_HEADERS"); QString qtInstallData = versionInfo().value("QT_INSTALL_DATA"); if (qtInstallData.isEmpty()) return QString(); @@ -1717,13 +1761,50 @@ QString QtVersion::buildDebuggingHelperLibrary() return QCoreApplication::translate("QtVersion", "The Qt Version has no toolchain."); tc->addToEnvironment(env); QString output; - QString directory = DebuggingHelperLibrary::copyDebuggingHelperLibrary(qtInstallData, &output); - if (!directory.isEmpty()) { - output += DebuggingHelperLibrary::buildDebuggingHelperLibrary(directory, tc->makeCommand(), - qmakeCommand(), mkspec(), env, - (tc->type() == ToolChain::GCC_MAEMO ? QLatin1String("-unix") : QLatin1String(""))); + + if (!onlyQmlDump) { + QString gdbHelperDirectory = DebuggingHelperLibrary::copy(qtInstallData, &output); + if (!gdbHelperDirectory.isEmpty()) { + output += DebuggingHelperLibrary::build(gdbHelperDirectory, tc->makeCommand(), + qmakeCommand(), mkspec(), env, + (tc->type() == ToolChain::GCC_MAEMO ? QLatin1String("-unix") : QLatin1String(""))); + } + future.setProgressValue(2); + + if (QmlObserverTool::canBuild(this)) { + QString toolDirectory = QmlObserverTool::copy(qtInstallData, &output); + if (!toolDirectory.isEmpty()) { + output += QmlObserverTool::build(toolDirectory, tc->makeCommand(), + qmakeCommand(), mkspec(), env, + (tc->type() == ToolChain::GCC_MAEMO ? QLatin1String("-unix") : QLatin1String(""))); + } + } else { + output += QCoreApplication::tr("Cannot build QMLObserver; Qt version must be 4.7.1 or higher."); + } + future.setProgressValue(3); } - m_hasDebuggingHelper = !debuggingHelperLibrary().isEmpty(); + + if (QmlDumpTool::canBuild(this)) { + QString toolDirectory = QmlDumpTool::copy(qtInstallData, &output); + if (!toolDirectory.isEmpty()) { + output += QmlDumpTool::build(toolDirectory, tc->makeCommand(), + qmakeCommand(), mkspec(), env, + (tc->type() == ToolChain::GCC_MAEMO ? QLatin1String("-unix") : QLatin1String(""))); + } + } else { + output += QCoreApplication::tr("Cannot build qmldump; Qt version must be 4.7.1 or higher."); + } + future.setProgressValue(4); + + // invalidate version before updating version info + m_versionInfoUpToDate = false; + updateVersionInfo(); + + if (!onlyQmlDump) { + m_hasDebuggingHelper = !debuggingHelperLibrary().isEmpty(); + m_hasQmlObserver = !qmlObserverTool().isEmpty(); + } + m_hasQmlDump = !qmlDumpTool().isEmpty(); + return output; } - diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index 2ce5a6fbc359b1b9609bb6fc4711795b90af40be..b1bb046bcb27db334149b960e27990a2fc856580 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -38,6 +38,7 @@ #include <QtCore/QHash> #include <QtCore/QSet> #include <QtCore/QSharedPointer> +#include <QtCore/QFutureInterface> namespace Qt4ProjectManager { @@ -111,12 +112,17 @@ public: bool hasDebuggingHelper() const; QString debuggingHelperLibrary() const; + QString qmlDumpTool() const; + QString qmlObserverTool() const; QStringList debuggingHelperLibraryLocations() const; bool supportsBinaryDebuggingHelper() const; + bool hasQmlDump() const; + bool hasQmlObserver() const; + // Builds a debugging library // returns the output of the commands - QString buildDebuggingHelperLibrary(); + QString buildDebuggingHelperLibrary(QFutureInterface<void> &future, bool onlyQmlDump = false); bool hasExamples() const; QString examplesPath() const; @@ -169,6 +175,8 @@ private: bool m_isAutodetected; QString m_autodetectionSource; mutable bool m_hasDebuggingHelper; // controlled by m_versionInfoUpToDate + mutable bool m_hasQmlDump; // controlled by m_versionInfoUpToDate + mutable bool m_hasQmlObserver; // controlled by m_versionInfoUpToDate QString m_mwcDirectory; QString m_s60SDKDirectory; @@ -242,10 +250,10 @@ public: QSet<QString> supportedTargetIds() const; // Static Methods - static bool makefileIsFor(const QString &directory, const QString &proFile); - static QPair<QtVersion::QmakeBuildConfigs, QStringList> scanMakeFile(const QString &directory, + static bool makefileIsFor(const QString &makefile, const QString &proFile); + static QPair<QtVersion::QmakeBuildConfigs, QStringList> scanMakeFile(const QString &makefile, QtVersion::QmakeBuildConfigs defaultBuildConfig); - static QString findQMakeBinaryFromMakefile(const QString &directory); + static QString findQMakeBinaryFromMakefile(const QString &makefile); bool isValidId(int id) const; signals: diff --git a/src/plugins/qt4projectmanager/qtversionmanager.ui b/src/plugins/qt4projectmanager/qtversionmanager.ui index 5e58283012ca5506acc59753bba1f2cd3f1eb038..3f1ff9ce3fbde4f46702b543684cab8e953deba3 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.ui +++ b/src/plugins/qt4projectmanager/qtversionmanager.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>406</width> + <width>427</width> <height>424</height> </rect> </property> @@ -188,7 +188,7 @@ <item row="7" column="0"> <widget class="QLabel" name="debuggingHelperLabel"> <property name="text"> - <string>Debugging helper:</string> + <string>Debugging helpers:</string> </property> </widget> </item> diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileapp.cpp b/src/plugins/qt4projectmanager/wizards/abstractmobileapp.cpp index 422ddd246ac23674fdd69362e5b1fabf3f7d3791..3c5b4a18e31f45b5213c0b645aad2304efe9cebd 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileapp.cpp +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileapp.cpp @@ -167,7 +167,7 @@ QString AbstractMobileApp::path(int fileType) const case DesktopOrigin: return originsRootShared + QLatin1String("app.desktop"); case DeploymentPri: return outputPathBase() + DeploymentPriFileName; case DeploymentPriOrigin: return originsRootShared + DeploymentPriFileName; - case SymbianSvgIcon: return outputPathBase() + symbianIconFileName; + case SymbianSvgIcon: return outputPathBase() + projectName() + QLatin1String(".svg"); case SymbianSvgIconOrigin: return !m_symbianSvgIcon.isEmpty() ? m_symbianSvgIcon : originsRootShared + symbianIconFileName; case MaemoPngIcon: return outputPathBase() + projectName() + QLatin1String(".png"); @@ -319,7 +319,6 @@ Core::GeneratedFiles AbstractMobileApp::generateFiles(QString *errorMessage) con files << file(generateFile(AbstractGeneratedFileInfo::SymbianSvgIconFile, errorMessage), path(SymbianSvgIcon)); files << file(generateFile(AbstractGeneratedFileInfo::MaemoPngIconFile, errorMessage), path(MaemoPngIcon)); files << file(generateFile(AbstractGeneratedFileInfo::DesktopFile, errorMessage), path(Desktop)); - files << file(generateFile(AbstractGeneratedFileInfo::DeploymentPriFile, errorMessage), path(DeploymentPri)); return files; } #endif // CREATORLESSTEST diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp index a2ba842938bc8163c8fec1e49767bf01c36b004c..deb753b07fb4ac3d3d01a029dc76e3dc9b61ea6c 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp @@ -49,10 +49,10 @@ AbstractMobileAppWizardDialog::AbstractMobileAppWizardDialog(QWidget *parent) resize(900, 450); m_targetsPage->setImportDirectoryBrowsingEnabled(false); int pageId = addPage(m_targetsPage); - wizardProgress()->item(pageId)->setTitle(tr("Qt versions")); + wizardProgress()->item(pageId)->setTitle(tr("Qt Versions")); m_optionsPage = new MobileAppWizardOptionsPage; pageId = addPage(m_optionsPage); - wizardProgress()->item(pageId)->setTitle(tr("Application options")); + wizardProgress()->item(pageId)->setTitle(tr("Application Options")); } diff --git a/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp b/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp index 24e634449833a7b29a2c981d9b4f0983b847f735..3c8bd3691a9981acd0a704dbd28954895ba90d00 100644 --- a/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/guiappwizard.cpp @@ -172,13 +172,13 @@ Core::GeneratedFiles GuiAppWizard::generateFiles(const QWizard *w, const QString formHeaderName = buildFileName(projectPath, params.headerFileName, headerSuffix()); Core::GeneratedFile formSource(formSourceFileName); Core::GeneratedFile formHeader(formHeaderName); + formSource.setAttributes(Core::GeneratedFile::OpenEditorAttribute); QSharedPointer<Core::GeneratedFile> form; if (params.designerForm) { // Create files: form const QString formName = buildFileName(projectPath, params.formFileName, formSuffix()); form = QSharedPointer<Core::GeneratedFile>(new Core::GeneratedFile(formName)); - form->setAttributes(Core::GeneratedFile::OpenEditorAttribute); if (!parametrizeTemplate(templatePath, QLatin1String("widget.ui"), params, &contents, errorMessage)) return Core::GeneratedFiles(); form->setContents(contents); @@ -190,7 +190,6 @@ Core::GeneratedFiles GuiAppWizard::generateFiles(const QWizard *w, return Core::GeneratedFiles(); formSource.setContents(CppTools::AbstractEditorSupport::licenseTemplate(formSourceFileName) + contents); - formSource.setAttributes(Core::GeneratedFile::OpenEditorAttribute); // Create files: form header const QString formHeaderTemplate = QLatin1String("mywidget.h"); if (!parametrizeTemplate(templatePath, formHeaderTemplate, params, &contents, errorMessage)) diff --git a/src/plugins/qt4projectmanager/wizards/mobileapp.cpp b/src/plugins/qt4projectmanager/wizards/mobileapp.cpp index 2debd11802996f2826eea5b881fbc51cb068fe72..bd03106dbf3cc6d3815f84f2cb619a6c9483b279 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileapp.cpp +++ b/src/plugins/qt4projectmanager/wizards/mobileapp.cpp @@ -94,6 +94,7 @@ Core::GeneratedFiles MobileApp::generateFiles(QString *errorMessage) const { Core::GeneratedFiles files = AbstractMobileApp::generateFiles(errorMessage); + files.append(file(generateFile(AbstractGeneratedFileInfo::DeploymentPriFile, errorMessage), path(DeploymentPri))); files.append(file(generateFile(MobileAppGeneratedFileInfo::MainWindowCppFile, errorMessage), path(MainWindowCpp))); files.append(file(generateFile(MobileAppGeneratedFileInfo::MainWindowHFile, errorMessage), path(MainWindowH))); files.append(file(generateFile(MobileAppGeneratedFileInfo::MainWindowUiFile, errorMessage), path(MainWindowUi))); @@ -137,7 +138,7 @@ QString MobileApp::mainWindowClassName() const int MobileApp::stubVersionMinor() const { return StubVersion; } -const int MobileApp::StubVersion = 1; +const int MobileApp::StubVersion = 2; } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizardoptionspage.ui b/src/plugins/qt4projectmanager/wizards/mobileappwizardoptionspage.ui index 78878deca39ff7efce5a3f1fd077719428536a81..95a6bc5f1cdb800498f7dc0bbd3c7e95ac47ab35 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileappwizardoptionspage.ui +++ b/src/plugins/qt4projectmanager/wizards/mobileappwizardoptionspage.ui @@ -32,7 +32,7 @@ </sizepolicy> </property> <property name="text"> - <string>Orientation Behavior:</string> + <string>Orientation behavior:</string> </property> <property name="buddy"> <cstring>orientationBehaviorComboBox</cstring> @@ -52,7 +52,7 @@ </property> <widget class="QWidget" name="tab"> <attribute name="title"> - <string>Symbian specific</string> + <string>Symbian Specific</string> </attribute> <layout class="QFormLayout" name="formLayout"> <item row="0" column="0"> @@ -64,7 +64,7 @@ </sizepolicy> </property> <property name="text"> - <string>Application Icon (.svg):</string> + <string>Application icon (.svg):</string> </property> <property name="buddy"> <cstring>symbianAppIconLoadToolButton</cstring> @@ -164,7 +164,7 @@ </widget> <widget class="QWidget" name="tab_2"> <attribute name="title"> - <string>Maemo specific</string> + <string>Maemo Specific</string> </attribute> <widget class="QLabel" name="maemoAppIconLabel"> <property name="geometry"> @@ -176,7 +176,7 @@ </rect> </property> <property name="text"> - <string>Application Icon (64x64):</string> + <string>Application icon (64x64):</string> </property> </widget> <widget class="QToolButton" name="maemoPngIconButton"> diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp b/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp index 6ba89cd368a9cd912898d03bb5001885fafa01d1..0c6b696b6c7e618f15f0162d6f1d26bb087111bb 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp +++ b/src/plugins/qt4projectmanager/wizards/mobileappwizardpages.cpp @@ -59,11 +59,11 @@ MobileAppWizardOptionsPage::MobileAppWizardOptionsPage(QWidget *parent) connect(m_d->ui.maemoPngIconButton, SIGNAL(clicked()), this, SLOT(openMaemoPngIcon())); - m_d->ui.orientationBehaviorComboBox->addItem(tr("Auto rotate orientation"), + m_d->ui.orientationBehaviorComboBox->addItem(tr("Automatically Rotate Orientation"), AbstractMobileApp::Auto); - m_d->ui.orientationBehaviorComboBox->addItem(tr("Lock to landscape orientation"), + m_d->ui.orientationBehaviorComboBox->addItem(tr("Lock to Landscape Orientation"), AbstractMobileApp::LockLandscape); - m_d->ui.orientationBehaviorComboBox->addItem(tr("Lock to portrait orientation"), + m_d->ui.orientationBehaviorComboBox->addItem(tr("Lock to Portrait Orientation"), AbstractMobileApp::LockPortrait); } diff --git a/src/plugins/qt4projectmanager/wizards/mobilelibraryparameters.cpp b/src/plugins/qt4projectmanager/wizards/mobilelibraryparameters.cpp index d38b9893bc9e89788b073099cbd69f7f7e5fbb63..79fbdde4b8aeebea9dd6617f12f81520395bbe82 100644 --- a/src/plugins/qt4projectmanager/wizards/mobilelibraryparameters.cpp +++ b/src/plugins/qt4projectmanager/wizards/mobilelibraryparameters.cpp @@ -91,11 +91,10 @@ void MobileLibraryParameters::writeProFile(QTextStream &str) const void MobileLibraryParameters::writeSymbianProFile(QTextStream &str) const { if (libraryType != QtProjectParameters::SharedLibrary) - return; //nothing to do when the library is not shared library + return; //nothing to do when the library is not a shared library str << "\n" "symbian {\n" - " #Symbian specific definitions\n" " MMP_RULES += EXPORTUNFROZEN\n" " TARGET.UID3 = " + symbianUid + "\n" " TARGET.CAPABILITY = " + generateCapabilitySet(symbianCapabilities).toAscii() + "\n" @@ -108,7 +107,8 @@ void MobileLibraryParameters::writeSymbianProFile(QTextStream &str) const void MobileLibraryParameters::writeMaemoProFile(QTextStream &str) const { - str << " else:unix {\n" + str << "\n" + "unix:!symbian {\n" " maemo5 {\n" " target.path = /opt/usr/lib\n" " } else {\n" diff --git a/src/plugins/qt4projectmanager/wizards/qmlstandaloneapp.cpp b/src/plugins/qt4projectmanager/wizards/qmlstandaloneapp.cpp index d14dc88fb91ab437ecc4e3f3471ab875861685b1..93198f445368f3ec2d1134de4290488c48f4d668 100644 --- a/src/plugins/qt4projectmanager/wizards/qmlstandaloneapp.cpp +++ b/src/plugins/qt4projectmanager/wizards/qmlstandaloneapp.cpp @@ -261,6 +261,8 @@ void QmlStandaloneApp::handleCurrentProFileTemplateLine(const QString &line, } proFile << endl; + } else if (line.contains(QLatin1String("# INCLUDE_DEPLOYMENT_PRI"))) { + proFileTemplate.readLine(); // eats 'include(deployment.pri)' } } @@ -378,6 +380,7 @@ QByteArray QmlStandaloneApp::generateFileExtended(int fileType, break; case QmlAppGeneratedFileInfo::AppViewerPriFile: data = readBlob(path(AppViewerPriOrigin), errorMessage); + data.append(readBlob(path(DeploymentPriOrigin), errorMessage)); *comment = ProFileComment; *versionAndCheckSum = true; break; @@ -408,9 +411,7 @@ static QList<QmlAppGeneratedFileInfo> updateableFiles(const QString &mainProFile } files[] = { {QmlAppGeneratedFileInfo::AppViewerPriFile, appViewerPriFileName}, {QmlAppGeneratedFileInfo::AppViewerHFile, appViewerHFileName}, - {QmlAppGeneratedFileInfo::AppViewerCppFile, appViewerCppFileName}, - {QmlAppGeneratedFileInfo::DeploymentPriFile, - QLatin1String("../") + AbstractMobileApp::DeploymentPriFileName} + {QmlAppGeneratedFileInfo::AppViewerCppFile, appViewerCppFileName} }; const QFileInfo mainProFileInfo(mainProFile); const int size = sizeof(files) / sizeof(files[0]); @@ -424,6 +425,8 @@ static QList<QmlAppGeneratedFileInfo> updateableFiles(const QString &mainProFile file.fileInfo = QFileInfo(fileName); result.append(file); } + if (result.count() != size) + result.clear(); // All files must be found. No wrong/partial updates, please. return result; } @@ -474,7 +477,7 @@ bool QmlStandaloneApp::updateFiles(const QList<QmlAppGeneratedFileInfo> &list, Q return true; } -const int QmlStandaloneApp::StubVersion = 7; +const int QmlStandaloneApp::StubVersion = 8; } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizard.cpp b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizard.cpp index bb4da242ea55a3e6b07081bd839970d483902c84..b15b995dd49df1e870b647fb04add25bdbb48a28 100644 --- a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizard.cpp @@ -52,48 +52,36 @@ class QmlStandaloneAppWizardDialog : public AbstractMobileAppWizardDialog Q_OBJECT public: - explicit QmlStandaloneAppWizardDialog(QmlStandaloneAppWizard::WizardType type, QWidget *parent = 0); + explicit QmlStandaloneAppWizardDialog(QWidget *parent = 0); private: - QmlStandaloneAppWizard::WizardType m_type; class QmlStandaloneAppWizardSourcesPage *m_qmlSourcesPage; friend class QmlStandaloneAppWizard; }; -QmlStandaloneAppWizardDialog::QmlStandaloneAppWizardDialog(QmlStandaloneAppWizard::WizardType type, - QWidget *parent) +QmlStandaloneAppWizardDialog::QmlStandaloneAppWizardDialog(QWidget *parent) : AbstractMobileAppWizardDialog(parent) - , m_type(type) , m_qmlSourcesPage(0) { - setWindowTitle(m_type == QmlStandaloneAppWizard::NewQmlFile - ? tr("New QML Project") - : tr("QML Project from existing, QML Viewer-based Project")); - setIntroDescription(m_type == QmlStandaloneAppWizard::NewQmlFile - ? tr("This wizard generates a QML application project.") - : tr("This wizard imports an existing, QML Viewer-based application and creates a standalone version of it.")); - - if (m_type == QmlStandaloneAppWizard::ImportQmlFile) { - m_qmlSourcesPage = new QmlStandaloneAppWizardSourcesPage; - m_qmlSourcesPage->setMainQmlFileChooserVisible(true); - const int qmlSourcesPagePageId = addPage(m_qmlSourcesPage); - wizardProgress()->item(qmlSourcesPagePageId)->setTitle(tr("QML Sources")); - } + setWindowTitle(tr("New Qt Quick Application")); + setIntroDescription(tr("This wizard generates a Qt Quick application project.")); + + m_qmlSourcesPage = new QmlStandaloneAppWizardSourcesPage; + const int qmlSourcesPagePageId = addPage(m_qmlSourcesPage); + wizardProgress()->item(qmlSourcesPagePageId)->setTitle(tr("QML Sources")); } class QmlStandaloneAppWizardPrivate { - QmlStandaloneAppWizard::WizardType type; class QmlStandaloneApp *standaloneApp; class QmlStandaloneAppWizardDialog *wizardDialog; friend class QmlStandaloneAppWizard; }; -QmlStandaloneAppWizard::QmlStandaloneAppWizard(WizardType type) - : AbstractMobileAppWizard(parameters(type)) +QmlStandaloneAppWizard::QmlStandaloneAppWizard() + : AbstractMobileAppWizard(parameters()) , m_d(new QmlStandaloneAppWizardPrivate) { - m_d->type = type; m_d->standaloneApp = new QmlStandaloneApp; m_d->wizardDialog = 0; } @@ -104,37 +92,22 @@ QmlStandaloneAppWizard::~QmlStandaloneAppWizard() delete m_d; } -Core::BaseFileWizardParameters QmlStandaloneAppWizard::parameters(WizardType type) +Core::BaseFileWizardParameters QmlStandaloneAppWizard::parameters() { Core::BaseFileWizardParameters parameters(ProjectWizard); parameters.setIcon(QIcon(QLatin1String(Constants::ICON_QML_STANDALONE))); - parameters.setDisplayName(type == QmlStandaloneAppWizard::NewQmlFile - ? tr("Qt QML Application") - : tr("Qt QML Imported Application")); - parameters.setId(QLatin1String(type == QmlStandaloneAppWizard::NewQmlFile - ? "QA.QMLA Application" - : "QA.QMLB Imported Application")); - parameters.setDescription(type == QmlStandaloneAppWizard::NewQmlFile - ? tr("Creates a mobile-deployable Qt QML application " - "project. A lightweight Qt/C++ application with a QDeclarativeView " - "and a single QML file will be created.") - : tr("Creates a mobile-deployable Qt QML application " - "project. An existing, QML Viewer-based project will be imported and a lightweight " - "Qt/C++ application with a QDeclarativeView will be created for it.")); - parameters.setCategory(QLatin1String(Constants::QT_APP_WIZARD_CATEGORY)); - parameters.setDisplayCategory(QCoreApplication::translate(Constants::QT_APP_WIZARD_TR_SCOPE, - Constants::QT_APP_WIZARD_TR_CATEGORY)); + parameters.setDisplayName(tr("Qt Quick Application")); + parameters.setId(QLatin1String("QA.QMLA Application")); + parameters.setDescription(tr("Creates a Qt Quick application that you can deploy to mobile devices.")); + parameters.setCategory(QLatin1String(Constants::QML_WIZARD_CATEGORY)); + parameters.setDisplayCategory(QCoreApplication::translate(Constants::QML_WIZARD_TR_SCOPE, + Constants::QML_WIZARD_TR_CATEGORY)); return parameters; } AbstractMobileAppWizardDialog *QmlStandaloneAppWizard::createWizardDialogInternal(QWidget *parent) const { - m_d->wizardDialog = new QmlStandaloneAppWizardDialog(m_d->type, parent); - if (m_d->wizardDialog->m_qmlSourcesPage) { - connect(m_d->wizardDialog->m_qmlSourcesPage, - SIGNAL(externalModulesChanged(QStringList, QStringList)), - SLOT(handleModulesChange(QStringList, QStringList))); - } + m_d->wizardDialog = new QmlStandaloneAppWizardDialog(parent); const QList<TargetSetupPage::ImportInfo> &qtVersions = TargetSetupPage::importInfosForKnownQtVersions(); QList<TargetSetupPage::ImportInfo> qmlQtVersions; @@ -145,7 +118,7 @@ AbstractMobileAppWizardDialog *QmlStandaloneAppWizard::createWizardDialogInterna if (!isNumber || majorVersion < 4) continue; const int minorVersion = versionString.mid(2, 1).toInt(&isNumber); - if (!isNumber || minorVersion < 7) + if (!isNumber || (majorVersion == 4 && minorVersion < 7)) continue; qmlQtVersions << qtVersion; } @@ -159,19 +132,16 @@ void QmlStandaloneAppWizard::prepareGenerateFiles(const QWizard *w, { Q_UNUSED(errorMessage) const QmlStandaloneAppWizardDialog *wizard = qobject_cast<const QmlStandaloneAppWizardDialog*>(w); - if (wizard->m_qmlSourcesPage) { - m_d->standaloneApp->setMainQmlFile(wizard->m_qmlSourcesPage->mainQmlFile()); - m_d->standaloneApp->setExternalModules( - wizard->m_qmlSourcesPage->moduleUris(), - wizard->m_qmlSourcesPage->moduleImportPaths()); - } + const QString mainQmlFile = wizard->m_qmlSourcesPage->mainQmlFile(); + if (!mainQmlFile.isEmpty()) + m_d->standaloneApp->setMainQmlFile(mainQmlFile); } bool QmlStandaloneAppWizard::postGenerateFilesInternal(const Core::GeneratedFiles &l, QString *errorMessage) { const bool success = ProjectExplorer::CustomProjectWizard::postGenerateOpen(l, errorMessage); - if (success && m_d->type == QmlStandaloneAppWizard::ImportQmlFile) { + if (success && !m_d->standaloneApp->mainQmlFile().isEmpty()) { ProjectExplorer::ProjectExplorerPlugin::instance()->setCurrentFile(0, m_d->standaloneApp->mainQmlFile()); Core::EditorManager::instance()->openEditor(m_d->standaloneApp->mainQmlFile(), QString(), Core::EditorManager::ModeSwitch); @@ -179,14 +149,6 @@ bool QmlStandaloneAppWizard::postGenerateFilesInternal(const Core::GeneratedFile return success; } -void QmlStandaloneAppWizard::handleModulesChange(const QStringList &uris, const QStringList &paths) -{ - Q_ASSERT(m_d->wizardDialog->m_qmlSourcesPage); - QmlStandaloneApp testApp; - testApp.setExternalModules(uris, paths); - m_d->wizardDialog->m_qmlSourcesPage->setModulesError(testApp.error()); -} - AbstractMobileApp *QmlStandaloneAppWizard::app() const { return m_d->standaloneApp; diff --git a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizard.h b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizard.h index 662021c19ef8d8fe2e6e06ff49bcc757533b9441..46d8a26908c04cd15b2966a9cc3eed31cd0eb4cd 100644 --- a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizard.h +++ b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizard.h @@ -40,19 +40,11 @@ class QmlStandaloneAppWizard : public AbstractMobileAppWizard Q_OBJECT public: - enum WizardType { - NewQmlFile, - ImportQmlFile - }; - - QmlStandaloneAppWizard(WizardType type); + QmlStandaloneAppWizard(); virtual ~QmlStandaloneAppWizard(); -private slots: - void handleModulesChange(const QStringList &uris, const QStringList &paths); - private: - static Core::BaseFileWizardParameters parameters(WizardType type); + static Core::BaseFileWizardParameters parameters(); virtual AbstractMobileApp *app() const; virtual AbstractMobileAppWizardDialog *wizardDialog() const; diff --git a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardpages.cpp b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardpages.cpp index 34a071b2ec66148c1a12a795ff6334c8e7e8dce1..ec6fb23f785cc9b6c20c243e01280e2e8f5dccd5 100644 --- a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardpages.cpp +++ b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardpages.cpp @@ -42,7 +42,6 @@ namespace Internal { class QmlStandaloneAppWizardSourcesPagePrivate { Ui::QmlStandaloneAppWizardSourcesPage ui; - bool mainQmlFileChooserVisible; friend class QmlStandaloneAppWizardSourcesPage; }; @@ -53,16 +52,13 @@ QmlStandaloneAppWizardSourcesPage::QmlStandaloneAppWizardSourcesPage(QWidget *pa m_d->ui.setupUi(this); m_d->ui.mainQmlFileLineEdit->setExpectedKind(Utils::PathChooser::File); m_d->ui.mainQmlFileLineEdit->setPromptDialogFilter(QLatin1String("*.qml")); - m_d->ui.mainQmlFileLineEdit->setPromptDialogTitle(tr("Select the main QML file of the application.")); - m_d->ui.addModuleUriButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_PLUS))); - m_d->ui.removeModuleUriButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_MINUS))); - m_d->ui.addImportPathButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_PLUS))); - m_d->ui.removeImportPathButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_MINUS))); - setMainQmlFileChooserVisible(true); - setModulesError(QString()); + m_d->ui.mainQmlFileLineEdit->setPromptDialogTitle(tr("Select QML File")); connect(m_d->ui.mainQmlFileLineEdit, SIGNAL(changed(QString)), SIGNAL(completeChanged())); - connect(m_d->ui.urisListWidget, SIGNAL(itemChanged(QListWidgetItem*)), SLOT(handleModulesChanged())); - connect(m_d->ui.importPathsListWidget, SIGNAL(itemChanged(QListWidgetItem*)), SLOT(handleModulesChanged())); + connect(m_d->ui.importExistingQmlRadioButton, + SIGNAL(toggled(bool)), SIGNAL(completeChanged())); + connect(m_d->ui.newQmlRadioButton, SIGNAL(toggled(bool)), + m_d->ui.mainQmlFileLineEdit, SLOT(setDisabled(bool))); + m_d->ui.newQmlRadioButton->setChecked(true); } QmlStandaloneAppWizardSourcesPage::~QmlStandaloneAppWizardSourcesPage() @@ -72,95 +68,14 @@ QmlStandaloneAppWizardSourcesPage::~QmlStandaloneAppWizardSourcesPage() QString QmlStandaloneAppWizardSourcesPage::mainQmlFile() const { - return m_d->ui.mainQmlFileLineEdit->path(); + return m_d->ui.importExistingQmlRadioButton->isChecked() ? + m_d->ui.mainQmlFileLineEdit->path() : QString(); } bool QmlStandaloneAppWizardSourcesPage::isComplete() const { - return (!m_d->mainQmlFileChooserVisible || m_d->ui.mainQmlFileLineEdit->isValid()) - && m_d->ui.errorLabel->text().isEmpty(); -} - -void QmlStandaloneAppWizardSourcesPage::setMainQmlFileChooserVisible(bool visible) -{ - m_d->mainQmlFileChooserVisible = visible; - m_d->ui.mainQmlFileGroupBox->setVisible(m_d->mainQmlFileChooserVisible); -} - -void QmlStandaloneAppWizardSourcesPage::setModulesError(const QString &error) -{ - m_d->ui.errorLabel->setText(error); - m_d->ui.errorLabel->setVisible(!error.isEmpty()); -} - -void QmlStandaloneAppWizardSourcesPage::on_addModuleUriButton_clicked() -{ - QListWidgetItem *item = new QListWidgetItem(m_d->ui.urisListWidget); - item->setFlags(item->flags() | Qt::ItemIsEditable); - m_d->ui.urisListWidget->setCurrentItem(item); - m_d->ui.urisListWidget->editItem(item); -} - -static bool removeListWidgetItem(QListWidget *list) -{ - const int currentRow = list->currentRow(); - if (currentRow >= 0) { - list->takeItem(currentRow); - return true; - } - return false; -} - -void QmlStandaloneAppWizardSourcesPage::on_removeModuleUriButton_clicked() -{ - if (removeListWidgetItem(m_d->ui.urisListWidget)) - handleModulesChanged(); -} - -void QmlStandaloneAppWizardSourcesPage::on_addImportPathButton_clicked() -{ - const QString path = QFileDialog::getExistingDirectory(this, - tr("Select an import path for QML modules."), mainQmlFile()); - if (!path.isEmpty()) { - QListWidgetItem *item = new QListWidgetItem(QDir::toNativeSeparators(path), m_d->ui.importPathsListWidget); - item->setFlags(item->flags() | Qt::ItemIsEditable); - m_d->ui.importPathsListWidget->setCurrentItem(item); - } -} - -void QmlStandaloneAppWizardSourcesPage::on_removeImportPathButton_clicked() -{ - if (removeListWidgetItem(m_d->ui.importPathsListWidget)) - handleModulesChanged(); -} - -static inline QStringList ertriesFromListWidget(const QListWidget &listWidget) -{ - QStringList result; - for (int i = 0; i < listWidget.count(); ++i) { - const QString text = listWidget.item(i)->text().trimmed(); - if (!text.isEmpty()) - result.append(text); - } - return result; -} - -void QmlStandaloneAppWizardSourcesPage::handleModulesChanged() -{ - const QStringList uris = ertriesFromListWidget(*m_d->ui.urisListWidget); - const QStringList paths = ertriesFromListWidget(*m_d->ui.importPathsListWidget); - emit externalModulesChanged(uris, paths); - emit completeChanged(); -} - -QStringList QmlStandaloneAppWizardSourcesPage::moduleUris() const -{ - return ertriesFromListWidget(*m_d->ui.urisListWidget); -} - -QStringList QmlStandaloneAppWizardSourcesPage::moduleImportPaths() const -{ - return ertriesFromListWidget(*m_d->ui.importPathsListWidget); + return !m_d->ui.importExistingQmlRadioButton->isChecked() + || m_d->ui.mainQmlFileLineEdit->isValid(); } } // namespace Internal diff --git a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardpages.h b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardpages.h index 5ce91e3a92f920e6c3aeacecfdc1226749d2a895..96f56603a1ad8ab66889a6d2748d74d5b63f2b23 100644 --- a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardpages.h +++ b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardpages.h @@ -47,20 +47,6 @@ public: QString mainQmlFile() const; virtual bool isComplete() const; - void setMainQmlFileChooserVisible(bool visible); - void setModulesError(const QString &error); - QStringList moduleUris() const; - QStringList moduleImportPaths() const; - -private slots: - void on_addModuleUriButton_clicked(); - void on_removeModuleUriButton_clicked(); - void on_addImportPathButton_clicked(); - void on_removeImportPathButton_clicked(); - void handleModulesChanged(); - -signals: - void externalModulesChanged(const QStringList &uris, const QStringList &importPaths) const; private: class QmlStandaloneAppWizardSourcesPagePrivate *m_d; diff --git a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardsourcespage.ui b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardsourcespage.ui index 1766bba1bea805689f07cca698029eb2d3f9355f..ffe258e3863513d12aaff24673093ea7097e01e3 100644 --- a/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardsourcespage.ui +++ b/src/plugins/qt4projectmanager/wizards/qmlstandaloneappwizardsourcespage.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>494</width> - <height>346</height> + <width>605</width> + <height>386</height> </rect> </property> <property name="windowTitle"> @@ -17,135 +17,64 @@ <item> <widget class="QGroupBox" name="mainQmlFileGroupBox"> <property name="title"> - <string>Main QML file</string> + <string>Main QML File</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="Utils::PathChooser" name="mainQmlFileLineEdit"/> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="qmlModulesGroupBox"> - <property name="title"> - <string>QML Modules</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QSplitter" name="splitter"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="childrenCollapsible"> - <bool>false</bool> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0" colspan="2"> + <widget class="QRadioButton" name="newQmlRadioButton"> + <property name="text"> + <string>New 'main.qml' file, generated by this wizard.</string> </property> - <widget class="QWidget" name="layoutWidget1"> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="0" rowspan="3"> - <widget class="QListWidget" name="urisListWidget"/> - </item> - <item row="1" column="1"> - <widget class="QToolButton" name="addModuleUriButton"> - <property name="text"> - <string>+</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QToolButton" name="removeModuleUriButton"> - <property name="text"> - <string>-</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::MinimumExpanding</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>0</height> - </size> - </property> - </spacer> - </item> - <item row="0" column="0" colspan="2"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>URIs (e.g. 'org.mydomain.MyQmlModule')</string> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="layoutWidget2"> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="1" column="0" rowspan="3"> - <widget class="QListWidget" name="importPathsListWidget"/> - </item> - <item row="1" column="1"> - <widget class="QToolButton" name="addImportPathButton"> - <property name="text"> - <string>+</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QToolButton" name="removeImportPathButton"> - <property name="text"> - <string>-</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::MinimumExpanding</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>0</height> - </size> - </property> - </spacer> - </item> - <item row="0" column="0" colspan="2"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Import Paths</string> - </property> - </widget> - </item> - </layout> - </widget> </widget> </item> - <item> - <widget class="QLabel" name="errorLabel"> - <property name="font"> - <font> - <weight>75</weight> - <bold>true</bold> - </font> - </property> + <item row="1" column="0" colspan="2"> + <widget class="QRadioButton" name="importExistingQmlRadioButton"> <property name="text"> - <string>Error</string> + <string>Import an existing .qml file</string> </property> </widget> </item> + <item row="2" column="1"> + <widget class="Utils::PathChooser" name="mainQmlFileLineEdit"/> + </item> + <item row="2" column="0"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Maximum</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>12</width> + <height>20</height> + </size> + </property> + </spacer> + </item> </layout> </widget> </item> + <item> + <widget class="QLabel" name="label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>1</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Note: All files and directories which reside in the same directory as the Main QML File will be deployed. You can anytime modify the contents of that directory before deploying.</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> </layout> </widget> <customwidgets> diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp index a9b6b2a7db0d7746bce870eee2bc0594709317d4..26b66811db3c53e0d3eb559424e0d6afdc0d6540 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp @@ -379,11 +379,11 @@ TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, con return results; // Check for in-source builds first: - QString qmakeBinary = QtVersionManager::findQMakeBinaryFromMakefile(directory); + QString qmakeBinary = QtVersionManager::findQMakeBinaryFromMakefile(directory + "/Makefile"); QDir dir(directory); // Recurse into subdirectories: - if (qmakeBinary.isNull() || !QtVersionManager::makefileIsFor(directory, proFile)) { + if (qmakeBinary.isNull() || !QtVersionManager::makefileIsFor(directory + "/Makefile", proFile)) { QStringList subDirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); foreach (QString subDir, subDirs) results.append(recursivelyCheckDirectoryForBuild(dir.absoluteFilePath(subDir), @@ -409,7 +409,7 @@ TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, con } QPair<QtVersion::QmakeBuildConfigs, QStringList> result = - QtVersionManager::scanMakeFile(directory, info.version->defaultBuildConfig()); + QtVersionManager::scanMakeFile(directory + "/Makefile", info.version->defaultBuildConfig()); info.buildConfig = result.first; info.additionalArguments = Qt4BuildConfiguration::removeSpecFromArgumentList(result.second); @@ -516,13 +516,13 @@ void TargetSetupPage::handleDoubleClicks(QTreeWidgetItem *item, int column) } } -void TargetSetupPage::contextMenuRequested(const QPoint & position) +void TargetSetupPage::contextMenuRequested(const QPoint &position) { m_contextMenu->clear(); QTreeWidgetItem *item = m_ui->versionTree->itemAt(position); m_contextMenu = new QMenu(this); - if (item->parent()) { + if (item && item->parent()) { // Qt version item QAction *onlyThisAction = new QAction(tr("Check only this version"), m_contextMenu); connect(onlyThisAction, SIGNAL(triggered()), this, SLOT(checkOneTriggered())); diff --git a/src/plugins/regexp/RegExp.pluginspec b/src/plugins/regexp/RegExp.pluginspec index d428912ecd11e1f44fa0b0c32259178d3d820d81..d23b473d7ad2320c97e90602005e4985447cf562 100644 --- a/src/plugins/regexp/RegExp.pluginspec +++ b/src/plugins/regexp/RegExp.pluginspec @@ -1,4 +1,4 @@ -<plugin name="RegExp" version="2.0.91" compatVersion="2.0.91"> +<plugin name="RegExp" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -13,6 +13,6 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Regular Expression test widget.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/resourceeditor/ResourceEditor.pluginspec b/src/plugins/resourceeditor/ResourceEditor.pluginspec index 7a5905f004a506f83625f71ad8ac316f57e41ed7..e7ecf2eeda7e37a99c3d8595068acdc73d127052 100644 --- a/src/plugins/resourceeditor/ResourceEditor.pluginspec +++ b/src/plugins/resourceeditor/ResourceEditor.pluginspec @@ -1,4 +1,4 @@ -<plugin name="ResourceEditor" version="2.0.91" compatVersion="2.0.91"> +<plugin name="ResourceEditor" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,6 +14,6 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Editor for qrc files.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/snippets/QMLSNIPPETS.TXT b/src/plugins/snippets/QMLSNIPPETS.TXT deleted file mode 100644 index cd50273ed4949ac874878ec81499f4fc7fe18f59..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/QMLSNIPPETS.TXT +++ /dev/null @@ -1,96 +0,0 @@ -property <name> <name> : <name> -if you delete the last name as you tab through it should also delete the : colon as that is not needed. - ----------------- -Item { - id: <name> - - } -If you delete the name maybe the 'id:' should be deleted as well. - -This is fine for most other QML elements such as Rectangle and MouseArea - ----------------- - -BorderImage { - id: <name> - width: <name>; height: <name> - border.left: <name>; border.top: <name> - border.right: <name>; border.bottom: <name> - source: "<name>" -} - -------------------- - -Image { - id: <name> - source: "<name>" -} - ----------------- - -Text { - id: <name> - text: "<name>" -} - ----------------- - -states: [ - State { - name: "<name>" - PropertyChanges { - target: <name> - <- cursor should end up here at the end? - } - } -] - ------------------- -State { - name: "<name>" - PropertyChanges { - target: <name> - <- cursor should end up here at the end? - } -} - - --------------------- -transitions: [ - Transition { - from: "<name>" - to: "<name>" - <- cursor should end up here at the end? - } -] - ------------------------ - -Transition { - from: "<name>" - to: "<name>" - <- cursor should end up here at the end? -} - ------------------------ - -PropertyChanges { - target: <name> - <- cursor should end up here at the end? - } - -NumberAnimation { matchTargets: "<name>"; matchProperties: "<name>"; duration: <int> } -NumberAnimation { target: "<name>"; property: "<name>"; value: <name>; duration: <int> } -PropertyAction { matchTargets: "<name>"; matchProperties: "<name>"; duration: <int> } -PropertyAction { target: "<name>"; property: "<name>"; value: <name>; duration: <int> } -PauseAnimation { duration: <name>} -ColorAnimation { from: <name>; to: <name>; duration: <int> } -effect: Colorize { color: "<name>" } -effect: Blur { blurRadius: "<int>" } -effect: DropShadow { - blurRadius: <int> - offset.x: <int> - offset.y: <int> - } - diff --git a/src/plugins/snippets/README b/src/plugins/snippets/README deleted file mode 100644 index 0631c716c2ecf12196589f79162b92582c6a7a8b..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/README +++ /dev/null @@ -1 +0,0 @@ -This is dead code for now. diff --git a/src/plugins/snippets/Snippets.pluginspec b/src/plugins/snippets/Snippets.pluginspec deleted file mode 100644 index 8cca42007de2c41df11a1f1da5a3ab5ca1436337..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/Snippets.pluginspec +++ /dev/null @@ -1,20 +0,0 @@ -<plugin name="Snippets" version="2.0.91" compatVersion="2.0.91"> - <vendor>Nokia Corporation</vendor> - <copyright>(C) 2010 Nokia Corporation</copyright> - <license> -Commercial Usage - -Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and Nokia. - -GNU Lesser General Public License Usage - -Alternatively, this plugin may be used under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation. 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. - </license> - <description>Code snippet plugin.</description> - <url>http://qt.nokia.com</url> - <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - </dependencyList> -</plugin> diff --git a/src/plugins/snippets/images/dir.png b/src/plugins/snippets/images/dir.png deleted file mode 100644 index 57cec6bcd31a6a156d88afdca68bed723aae8722..0000000000000000000000000000000000000000 Binary files a/src/plugins/snippets/images/dir.png and /dev/null differ diff --git a/src/plugins/snippets/images/diropen.png b/src/plugins/snippets/images/diropen.png deleted file mode 100644 index 48fcb9b703baca4e3f70fd8cf80eb33a5bd2f146..0000000000000000000000000000000000000000 Binary files a/src/plugins/snippets/images/diropen.png and /dev/null differ diff --git a/src/plugins/snippets/images/file.png b/src/plugins/snippets/images/file.png deleted file mode 100644 index 4a24ce3c2f455cf8ba119ba843c8308adee92a72..0000000000000000000000000000000000000000 Binary files a/src/plugins/snippets/images/file.png and /dev/null differ diff --git a/src/plugins/snippets/images/snippets.png b/src/plugins/snippets/images/snippets.png deleted file mode 100644 index b799041d6180736aa2d22197b9008094356d723b..0000000000000000000000000000000000000000 Binary files a/src/plugins/snippets/images/snippets.png and /dev/null differ diff --git a/src/plugins/snippets/inputwidget.cpp b/src/plugins/snippets/inputwidget.cpp deleted file mode 100644 index 2453a88efd07e4945e913088f36f2dbe19fb1910..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/inputwidget.cpp +++ /dev/null @@ -1,131 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include <QtCore/QDebug> -#include <QtGui/QApplication> -#include <QtGui/QLabel> -#include <QtGui/QLineEdit> -#include <QtGui/QHBoxLayout> -#include <QtGui/QBitmap> -#include <QtGui/QPainter> -#include <QtGui/QResizeEvent> - -#include "inputwidget.h" - -using namespace Snippets::Internal; - -InputWidget::InputWidget(const QString &text, const QString &value) - : QFrame(0, Qt::Popup) -{ - setAttribute(Qt::WA_DeleteOnClose); - - m_label = new QLabel(); - m_label->setTextFormat(Qt::RichText); - m_label->setText(text); - - m_lineEdit = new QLineEdit(); - m_lineEdit->setText(value); - m_lineEdit->setSelection(0, value.length()); - - qApp->installEventFilter(this); - - QHBoxLayout *layout = new QHBoxLayout; - layout->addWidget(m_label); - layout->addWidget(m_lineEdit); - layout->setMargin(3); - - setLayout(layout); - ensurePolished(); - - setAutoFillBackground(false); -} - -void InputWidget::resizeEvent(QResizeEvent *event) -{ - int height = event->size().height(); - int width = event->size().width(); - qDebug() << event->size(); - - QPalette pal = palette(); - QLinearGradient bg(0,0,0,height); - bg.setColorAt(0, QColor(195,195,255)); - bg.setColorAt(1, QColor(230,230,255)); - pal.setBrush(QPalette::Background, QBrush(bg)); - setPalette(pal); - - QBitmap bm(width, height); - bm.fill(Qt::color0); - QPainter p(&bm); - p.setBrush(QBrush(Qt::color1, Qt::SolidPattern)); - p.setPen(Qt::color1); - int rw = (25 * height) / width; - p.drawRoundRect(0,0,width,height, rw, 25); - setMask(bm); -} - -void InputWidget::showInputWidget(const QPoint &position) -{ - move(position); - show(); - m_lineEdit->setFocus(); -} - -bool InputWidget::eventFilter(QObject *o, QEvent *e) -{ - if (o != m_lineEdit) { - switch (e->type()) { - case QEvent::MouseButtonPress: - case QEvent::MouseButtonDblClick: - closeInputWidget(true); - default: - break; - } - } else if (e->type() == QEvent::KeyPress) { - QKeyEvent *ke = static_cast<QKeyEvent *>(e); - switch (ke->key()) { - case Qt::Key_Escape: - qDebug() << "Escape"; - closeInputWidget(true); - break; - case Qt::Key_Enter: - case Qt::Key_Return: - qDebug() << "Enter"; - closeInputWidget(false); - return true; - } - } - - return false; -} - -void InputWidget::closeInputWidget(bool cancel) -{ - emit finished(cancel, m_lineEdit->text()); - close(); -} diff --git a/src/plugins/snippets/snippets.pro b/src/plugins/snippets/snippets.pro deleted file mode 100644 index 8c6eb285cdb7771bc1e76262f704a9ea795afc9a..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/snippets.pro +++ /dev/null @@ -1,24 +0,0 @@ -TEMPLATE = lib -TARGET = Snippets -QT += xml - -include(../../qtcreatorplugin.pri) -include(../../plugins/projectexplorer/projectexplorer.pri) -include(../../plugins/coreplugin/coreplugin.pri) -include(../../plugins/texteditor/texteditor.pri) - -INCLUDEPATH += ../projectexplorer - -HEADERS += snippetsplugin.h \ - snippetswindow.h \ - snippetspec.h \ - snippetscompletion.h \ - inputwidget.h - -SOURCES += snippetsplugin.cpp \ - snippetswindow.cpp \ - snippetspec.cpp \ - snippetscompletion.cpp \ - inputwidget.cpp - -RESOURCES += snippets.qrc diff --git a/src/plugins/snippets/snippets.qrc b/src/plugins/snippets/snippets.qrc deleted file mode 100644 index b36585dcc5eda58f4c01b1ef1f60ef9516402baf..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/snippets.qrc +++ /dev/null @@ -1,8 +0,0 @@ -<RCC> - <qresource prefix="/snippets" > - <file>images/file.png</file> - <file>images/dir.png</file> - <file>images/diropen.png</file> - <file>images/snippets.png</file> - </qresource> -</RCC> diff --git a/src/plugins/snippets/snippetscompletion.cpp b/src/plugins/snippets/snippetscompletion.cpp deleted file mode 100644 index 974c849df8f3264c8c70c362fa01ac42033adef9..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/snippetscompletion.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "snippetscompletion.h" -#include "snippetswindow.h" -#include "snippetspec.h" -#include "snippetsplugin.h" - -#include <texteditor/itexteditable.h> - -#include <QtCore/QDebug> -#include <QtCore/QMap> -#include <QtGui/QAction> -#include <QtGui/QKeyEvent> - -using namespace Snippets::Internal; - -const QIcon SnippetsCompletion::m_fileIcon = QIcon(":/snippets/images/file.png"); - -SnippetsCompletion::SnippetsCompletion(QObject *parent) - : ICompletionCollector(parent) -{ - m_snippetsWindow = SnippetsPlugin::snippetsWindow(); - - updateCompletions(); -} - -SnippetsCompletion::~SnippetsCompletion() -{ - qDeleteAll(m_autoCompletions.values()); - m_autoCompletions.clear(); -} - -void SnippetsCompletion::updateCompletions() -{ - qDeleteAll(m_autoCompletions.values()); - m_autoCompletions.clear(); -#if 0 - int index = 0; - foreach (SnippetSpec *spec, m_snippetsWindow->snippets()) { - if (!spec->completionShortcut().isEmpty()) { - TextEditor::CompletionItem *item = new TextEditor::CompletionItem; - item->m_key = spec->name(); - item->m_collector = this; - item->m_index = index; - item->m_relevance = 0; - m_autoCompletions.insert(spec->completionShortcut(), item); - ++index; - } - } -#endif -} - -bool SnippetsCompletion::triggersCompletion(TextEditor::ITextEditable *editor) -{ - QString currentWord = editor->textAt(editor->position() - 3, 3); - currentWord = currentWord.trimmed(); - return currentWord.length() == 2 && m_autoCompletions.contains(currentWord) && - !editor->characterAt(editor->position() - 1).isSpace(); -} - -int SnippetsCompletion::startCompletion(TextEditor::ITextEditable *editor) -{ - m_editor = editor; - m_startPosition = findStartOfName(m_editor); - return m_startPosition; -} - -#if 0 -void SnippetsCompletion::completions(const QList<TextEditor::CompletionItem *> &completions) -{ - const int length = m_editor->position() - m_startPosition; - if (length >= 2) { - QString key = m_editor->textAt(m_startPosition, length); - foreach (TextEditor::CompletionItem* item, m_autoCompletions.values()) { - if (item->m_key.startsWith(key, Qt::CaseInsensitive)) - completions->append(item); - } - } -} -#endif - -QString SnippetsCompletion::text(TextEditor::CompletionItem *item) const -{ -#if 0 - const SnippetSpec *spec = m_snippetsWindow->snippets().at(item->m_index); - return spec->name(); -#endif - return QString(); -} - -QString SnippetsCompletion::details(TextEditor::CompletionItem *item) const -{ -#if 0 - const SnippetSpec *spec = m_snippetsWindow->snippets().at(item->m_index); - return spec->description(); -#endif - return QString(); -} - -QIcon SnippetsCompletion::icon(TextEditor::CompletionItem *) const -{ - return m_fileIcon; -} - -void SnippetsCompletion::complete(const TextEditor::CompletionItem &item) -{ -#if 0 - SnippetSpec *spec = m_snippetsWindow->snippets().at(item->m_index); - - int length = m_editor->position() - m_startPosition; - m_editor->setCurPos(m_startPosition); - m_editor->remove(length); - - m_snippetsWindow->insertSnippet(m_editor, spec); -#endif -} - -bool SnippetsCompletion::partiallyComplete(const myns::QList<TextEditor::CompletionItem>&) -{ - return false; -} - -void SnippetsCompletion::cleanup() -{ -} - -int SnippetsCompletion::findStartOfName(const TextEditor::ITextEditor *editor) -{ - int pos = editor->position() - 1; - QChar chr = editor->characterAt(pos); - - // Skip to the start of a name - while (!chr.isSpace() && !chr.isNull()) - chr = editor->characterAt(--pos); - - return pos + 1; -} diff --git a/src/plugins/snippets/snippetscompletion.h b/src/plugins/snippets/snippetscompletion.h deleted file mode 100644 index 89a57eb03cd2bb5d103d2c9469953e37a06df588..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/snippetscompletion.h +++ /dev/null @@ -1,93 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#ifndef SNIPPETSCOMPLETION_H -#define SNIPPETSCOMPLETION_H - -#include <texteditor/icompletioncollector.h> - -#include <QtCore/QDir> -#include <QtCore/QMap> -#include <QtCore/QObject> -#include <QtGui/QIcon> - -namespace TextEditor { -class ITextEditable; -class ITextEditor; -} - -namespace Snippets { -namespace Internal { - -class SnippetsWindow; -class SnippetSpec; - -class SnippetsCompletion : public TextEditor::ICompletionCollector -{ - Q_OBJECT -public: - SnippetsCompletion(QObject *parent); - ~SnippetsCompletion(); - - // ICompletionCollector - bool triggersCompletion(TextEditor::ITextEditable *editor); - int startCompletion(TextEditor::ITextEditable *editor); - void completions(QList<TextEditor::CompletionItem *> *completions); - - QString text(TextEditor::CompletionItem *item) const; - QString details(TextEditor::CompletionItem *item) const; - QIcon icon(TextEditor::CompletionItem *item) const; - - void complete(const TextEditor::CompletionItem &item); - bool partiallyComplete(const QList<TextEditor::CompletionItem> &); - void cleanup(); - - void completions(QList<TextEditor::CompletionItem>*); - -private slots: - void updateCompletions(); - -private: - static int findStartOfName(const TextEditor::ITextEditor *editor); - - TextEditor::ITextEditable *m_editor; - int m_startPosition; // Position of the cursor from which completion started - - SnippetsWindow *m_snippetsWindow; - - QMultiMap<QString, TextEditor::CompletionItem *> m_autoCompletions; - - static const QIcon m_fileIcon; -}; - -} // namespace Internal -} // namespace Snippets - -#endif // SNIPPETSCOMPLETION_H - diff --git a/src/plugins/snippets/snippetspec.cpp b/src/plugins/snippets/snippetspec.cpp deleted file mode 100644 index f0086088af21041e5bbf97aedbc719b0cf57fffe..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/snippetspec.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "snippetspec.h" -#include "persistentsettings.h" - -using namespace Snippets::Internal; -using ProjectExplorer::PersistentSettingsReader; - -bool SnippetSpec::load(const QString &fileName) -{ - PersistentSettingsReader reader; - if (!reader.load(fileName)) - return false; - - m_contents = reader.restoreValue(QLatin1String("Contents")).toString(); - m_name = reader.restoreValue(QLatin1String("Name")).toString(); - m_description = reader.restoreValue(QLatin1String("Description")).toString(); - m_category = reader.restoreValue(QLatin1String("Category")).toString(); - m_completionShortcut = reader.restoreValue(QLatin1String("Shortcut")).toString(); - - QMap<QString, QVariant> temp = reader.restoreValue(QLatin1String("Arguments")).toMap(); - QMap<QString, QVariant>::const_iterator it, end; - end = temp.constEnd(); - for (it = temp.constBegin(); it != end; ++it) { - m_argumentDescription.insert( it.key().toInt(), it.value().toString()); - } - - temp = reader.restoreValue(QLatin1String("ArgumentDefaults")).toMap(); - end = temp.constEnd(); - for (it = temp.constBegin(); it != end; ++it) { - m_argumentDefault.insert(it.key().toInt(), it.value().toString()); - } - - return true; -} - -QString SnippetSpec::contents() const -{ - return m_contents; -} - -QString SnippetSpec::name() const -{ - return m_name; -} - -QString SnippetSpec::description() const -{ - return m_description; -} - -QString SnippetSpec::category() const -{ - return m_category; -} - -QString SnippetSpec::completionShortcut() const -{ - return m_completionShortcut; -} - -QString SnippetSpec::argumentDescription(int id) const -{ - return m_argumentDescription.value(id); -} - -QString SnippetSpec::argumentDefault(int id) const -{ - return m_argumentDefault.value(id); -} diff --git a/src/plugins/snippets/snippetsplugin.cpp b/src/plugins/snippets/snippetsplugin.cpp deleted file mode 100644 index 50e22565d0faf950ae0e9075fb497f0a5b2ab337..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/snippetsplugin.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "snippetswindow.h" -#include "snippetscompletion.h" -#include "snippetsplugin.h" -#include "snippetspec.h" - -#include <QtCore/QDebug> -#include <QtCore/QtPlugin> -#include <QtGui/QApplication> -#include <QtGui/QShortcut> - -#include <extensionsystem/pluginmanager.h> -#include <coreplugin/uniqueidmanager.h> -#include <coreplugin/actionmanager/actionmanager.h> -#include <coreplugin/editormanager/editormanager.h> -#include <coreplugin/baseview.h> -#include <coreplugin/icore.h> -#include <coreplugin/iview.h> -#include <texteditor/itexteditable.h> -#include <texteditor/texteditorconstants.h> - -using namespace Snippets::Internal; - -SnippetsPlugin *SnippetsPlugin::m_instance = 0; - -SnippetsPlugin::SnippetsPlugin() -{ - m_instance = this; - m_snippetsCompletion = 0; -} - -SnippetsPlugin::~SnippetsPlugin() -{ - removeObject(m_snippetsCompletion); - delete m_snippetsCompletion; -} - -void SnippetsPlugin::extensionsInitialized() -{ -} - -bool SnippetsPlugin::initialize(const QStringList &arguments, QString *) -{ - Q_UNUSED(arguments) - Core::ICore *core = Core::ICore::instance(); - Core::ActionManager *am = core->actionManager(); - - QList<int> context; - context << core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR); - - m_snippetWnd = new SnippetsWindow(); - Core::BaseView *view = new Core::BaseView; - view->setUniqueViewName("Snippets"); - view->setWidget(m_snippetWnd); - view->setContext(QList<int>() - << core->uniqueIDManager()->uniqueIdentifier(QLatin1String("Snippets Window")) - << core->uniqueIDManager()->uniqueIdentifier(TextEditor::Constants::C_TEXTEDITOR)); - //view->setDefaultPosition(Qt::RightDockWidgetArea)); - addAutoReleasedObject(view); - m_snippetsCompletion = new SnippetsCompletion(this); - addObject(m_snippetsCompletion); - - foreach (SnippetSpec *snippet, m_snippetWnd->snippets()) { - QShortcut *sc = new QShortcut(m_snippetWnd); - Core::Command *cmd = am->registerShortcut(sc, simplifySnippetName(snippet), context); - cmd->setCategory(tr("Snippets")); - connect(sc, SIGNAL(activated()), this, SLOT(snippetActivated())); - m_shortcuts.insert(sc, snippet); - } - - return true; -} - -QString SnippetsPlugin::simplifySnippetName(SnippetSpec *snippet) const -{ - return QLatin1String("Snippets.") - + snippet->category().simplified().replace(QLatin1String(" "), QLatin1String("")) - + QLatin1Char('.') - + snippet->name().simplified().replace(QLatin1String(" "), QLatin1String("")); -} - -void SnippetsPlugin::snippetActivated() -{ - Core::ICore *core = Core::ICore::instance(); - SnippetSpec *snippet = m_shortcuts.value(sender()); - if (snippet && core->editorManager()->currentEditor()) { - TextEditor::ITextEditable *te = - qobject_cast<TextEditor::ITextEditable *>( - core->editorManager()->currentEditor()); - m_snippetWnd->insertSnippet(te, snippet); - } -} - -Q_EXPORT_PLUGIN(SnippetsPlugin) diff --git a/src/plugins/snippets/snippetswindow.cpp b/src/plugins/snippets/snippetswindow.cpp deleted file mode 100644 index 59f31fcb1e5c9865cb168875a0dcfd77ecec8099..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/snippetswindow.cpp +++ /dev/null @@ -1,429 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "snippetswindow.h" -#include "snippetspec.h" -#include "inputwidget.h" -#include "snippetsplugin.h" - -#include <coreplugin/icore.h> -#include <coreplugin/editormanager/editormanager.h> -#include <texteditor/itexteditable.h> -#include <texteditor/itexteditor.h> - -#include <QtCore/QDebug> -#include <QtCore/QDir> -#include <QtGui/QDragEnterEvent> -#include <QtGui/QApplication> -#include <QtGui/QLabel> -#include <QtCore/QMimeData> -#include <QtGui/QHeaderView> - -using namespace Snippets::Internal; - -const QIcon SnippetsWindow::m_fileIcon = QIcon(":/snippets/images/file.png"); -const QIcon SnippetsWindow::m_dirIcon = QIcon(":/snippets/images/dir.png"); -const QIcon SnippetsWindow::m_dirOpenIcon = QIcon(":/snippets/images/diropen.png"); - -Q_DECLARE_METATYPE(Snippets::Internal::SnippetSpec *) - -SnippetsWindow::SnippetsWindow() -{ - setWindowTitle(tr("Snippets")); - setWindowIcon(QIcon(":/snippets/images/snippets.png")); - setOrientation(Qt::Vertical); - - m_snippetsTree = new SnippetsTree(this); - addWidget(m_snippetsTree); - - m_descLabel = new QLabel(this); - m_descLabel->setAlignment(Qt::AlignTop|Qt::AlignLeft); - m_descLabel->setFrameShape(QFrame::Panel); - m_descLabel->setFrameShadow(QFrame::Raised); - m_descLabel->setWordWrap(true); - addWidget(m_descLabel); - - m_snippetsDir = QDir::home(); - if (!initSnippetsDir()) - setDisabled(true); - else { - QDir defaultDir(Core::ICore::instance()->resourcePath() + QLatin1String("/snippets")); - if (defaultDir.exists()) - initSnippets(defaultDir); - initSnippets(m_snippetsDir); - } - - connect(m_snippetsTree, SIGNAL(itemCollapsed(QTreeWidgetItem *)), - this, SLOT(setClosedIcon(QTreeWidgetItem *))); - - connect(m_snippetsTree, SIGNAL(itemExpanded(QTreeWidgetItem *)), - this, SLOT(setOpenIcon(QTreeWidgetItem *))); - - connect(m_snippetsTree, SIGNAL(itemActivated(QTreeWidgetItem *, int)), - this, SLOT(activateSnippet(QTreeWidgetItem *, int))); - - connect(m_snippetsTree, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), - this, SLOT(updateDescription(QTreeWidgetItem *))); -} - -SnippetsWindow::~SnippetsWindow() -{ - qDeleteAll(m_snippets); -} - - -void SnippetsWindow::activateSnippet(QTreeWidgetItem *item, int column) -{ - if (!item->parent()) - return; - - TextEditor::ITextEditable *editor = 0; - if (Core::ICore::instance()->editorManager()->currentEditor()) - editor = qobject_cast<TextEditor::ITextEditable *>( - Core::ICore::instance()->editorManager()->currentEditor()); - if (editor) { - SnippetSpec* spec = qVariantValue<SnippetSpec*>(item->data(0, Qt::UserRole)); - insertSnippet(editor, spec); - } - - Q_UNUSED(column) -} - -const QList<SnippetSpec *> &SnippetsWindow::snippets() const -{ - return m_snippets; -} - -void SnippetsWindow::initSnippets(const QDir &dir) -{ - QString name; - QString category; - - QMap<QString, QTreeWidgetItem *> categories; - for (int i = 0; i < m_snippetsTree->topLevelItemCount(); ++i) { - categories.insert(m_snippetsTree->topLevelItem(i)->text(0), - m_snippetsTree->topLevelItem(i)); - } - - foreach (const QString &snippet, dir.entryList(QStringList("*.snp"))) { - SnippetSpec *spec = new SnippetSpec(); - if (spec->load(dir.filePath(snippet))) { - if (!categories.contains(spec->category())) { - QTreeWidgetItem *citem = new QTreeWidgetItem(m_snippetsTree); - citem->setText(0, spec->category()); - citem->setIcon(0, m_dirIcon); - categories.insert(spec->category(), citem); - } - - QTreeWidgetItem *item = new QTreeWidgetItem( - categories.value(spec->category())); - item->setText(0, spec->name()); - item->setIcon(0, m_fileIcon); - QVariant v; - qVariantSetValue<SnippetSpec *>(v, spec); - item->setData(0, Qt::UserRole, v); - - m_snippets.append(spec); - } - } -} - -QString SnippetsWindow::createUniqueFileName() -{ - int fileNumber = 0; - QString baseName = "snippet"; - while (m_snippetsDir.exists(baseName + QString::number(fileNumber) + ".snp")) { - ++fileNumber; - } - return baseName + QString::number(fileNumber) + ".snp"; -} - -void SnippetsWindow::writeSnippet(const QMimeData *) -{ -} - -bool SnippetsWindow::initSnippetsDir() -{ - if (!m_snippetsDir.exists(".qworkbench")) - m_snippetsDir.mkdir(".qworkbench"); - if (!m_snippetsDir.cd(".qworkbench")) - return false; - - if (!m_snippetsDir.exists("snippets")) - m_snippetsDir.mkdir("snippets"); - return m_snippetsDir.cd("snippets"); -} - -void SnippetsWindow::getArguments() -{ - QString contents = m_currentSnippet->contents(); - int index = 0; - bool pc = false; - QString nrstr; - - QSet<int> requiredArgs; - m_requiredArgs.clear(); - m_args.clear(); - - while (index < contents.length()) { - QChar c = contents.at(index); - if (c == QLatin1Char('%')) { - pc = !pc; - } else if (pc) { - if (c.isNumber()) { - nrstr += c; - } else { - pc = false; - } - } - - if (!pc && !nrstr.isEmpty()) { - requiredArgs << nrstr.toInt(); - nrstr.clear(); - } - - ++index; - } - - m_requiredArgs = requiredArgs.toList(); - m_requiredArgs.prepend(-1); - - showInputWidget(false, QString()); -} - -void SnippetsWindow::showInputWidget(bool canceled, const QString &value) -{ - if (canceled) - return; - - TextEditor::ITextEditor *te = 0; - if (Core::ICore::instance()->editorManager()->currentEditor()) - te = qobject_cast<TextEditor::ITextEditor*>( - Core::ICore::instance()->editorManager()->currentEditor()); - - int arg = m_requiredArgs.takeFirst(); - if (arg != -1) - m_args << value; - - if (!te || m_requiredArgs.isEmpty()) { - qDebug("replaceAndInsert"); - replaceAndInsert(); - } else { - QString desc = m_currentSnippet->argumentDescription(m_requiredArgs.first()); - QString def = m_currentSnippet->argumentDefault(m_requiredArgs.first()); - foreach (const QString &arg, m_args) { - desc = desc.arg(arg); - def = def.arg(arg); - } - - InputWidget *iw = new InputWidget(desc, def); - connect(iw, SIGNAL(finished(bool, const QString &)), - this, SLOT(showInputWidget(bool, const QString &))); - iw->showInputWidget(te->cursorRect().bottomRight()); - } -} - -void SnippetsWindow::replaceAndInsert() -{ - QString result; - QString keyWord; - int setAnchor = -1; - int setCursor = -1; - int selLength = 0; - - //clean up selection - int startPos = m_currentEditor->position(TextEditor::ITextEditable::Anchor); - int endPos = m_currentEditor->position(); - - if (startPos < 0) { - startPos = endPos; - } else { - if (startPos > endPos) { - int tmp = startPos; - startPos = endPos; - endPos = tmp; - } - selLength = endPos - startPos; - } - - //parse the contents - m_currentEditor->setCurPos(startPos); - QString editorIndent = getCurrentIndent(m_currentEditor); - QString content = m_currentSnippet->contents(); - foreach (const QString &arg, m_args) { - content = content.arg(arg); - } - - int startOfKey = -1; - for (int i = 0; i<content.length(); ++i) { - //handle windows,mac and linux new lines... - if (content.at(i) == QLatin1Char('\n')) { - if ((i <= 0) || content.at(i-1) != QLatin1Char('\r')) - result += QLatin1Char('\n') + editorIndent; - continue; - } else if (content.at(i) == QLatin1Char('\r')) { - result += QLatin1Char('\n') + editorIndent; - continue; - } - - if (content.at(i) == QChar('$')) { - if (startOfKey != -1) { - m_currentEditor->insert(result); - if (keyWord == QLatin1String("selection")) { - const QString &indent = indentOfString(content, i); - int selStartPos = m_currentEditor->position(); - m_currentEditor->setCurPos(selStartPos + selLength); - insertIdents(m_currentEditor, indent, selStartPos, m_currentEditor->position()); - } else if (keyWord == QLatin1String("anchor")) { - setAnchor = m_currentEditor->position(); - } else if (keyWord == QLatin1String("cursor")) { - setCursor = m_currentEditor->position(); - } - result.clear(); - keyWord.clear(); - startOfKey = -1; - } else { - startOfKey = i; - } - } else { - if (startOfKey != -1) - keyWord += content.at(i).toLower(); - else - result += content.at(i); - } - } - - m_currentEditor->insert(result); - - if (setAnchor != -1) { - m_currentEditor->setCurPos(setAnchor); - m_currentEditor->select(setCursor); - } else if (setCursor != -1) { - m_currentEditor->setCurPos(setCursor); - } -} - -void SnippetsWindow::insertSnippet(TextEditor::ITextEditable *editor, SnippetSpec *snippet) -{ - m_currentEditor = editor; - m_currentSnippet = snippet; - getArguments(); -} - -QString SnippetsWindow::getCurrentIndent(TextEditor::ITextEditor *editor) -{ - const int startPos = editor->position(TextEditor::ITextEditor::StartOfLine); - const int endPos = editor->position(TextEditor::ITextEditor::EndOfLine); - if (startPos < endPos) - return indentOfString(editor->textAt(startPos, endPos - startPos)); - return QString(); -} - -void SnippetsWindow::insertIdents(TextEditor::ITextEditable *editor, - const QString &indent, int fromPos, int toPos) -{ - int offset = 0; - const int startPos = editor->position(); - editor->setCurPos(toPos); - int currentLinePos = editor->position(TextEditor::ITextEditor::StartOfLine); - while (currentLinePos > fromPos) { - editor->setCurPos(currentLinePos); - editor->insert(indent); - offset += indent.length(); - editor->setCurPos(currentLinePos-1); - currentLinePos = editor->position(TextEditor::ITextEditor::StartOfLine); - } - editor->setCurPos(startPos + offset); -} - -QString SnippetsWindow::indentOfString(const QString &str, int at) -{ - QString result; - int startAt = at; - if (startAt < 0) - startAt = str.length() - 1; - - // find start position - while (startAt >= 0 && str.at(startAt) != QChar('\n') - && str.at(startAt) != QChar('\r')) --startAt; - - for (int i = (startAt + 1); i < str.length(); ++i) { - if (str.at(i) == QChar(' ') || str.at(i) == QChar('\t')) - result += str.at(i); - else - break; - } - - return result; -} - -void SnippetsWindow::setOpenIcon(QTreeWidgetItem *item) -{ - item->setIcon(0, m_dirOpenIcon); -} - -void SnippetsWindow::setClosedIcon(QTreeWidgetItem *item) -{ - item->setIcon(0, m_dirIcon); -} - -void SnippetsWindow::updateDescription(QTreeWidgetItem *item) -{ - const SnippetSpec* spec = qVariantValue<SnippetSpec*>(item->data(0, Qt::UserRole)); - if (spec) { - m_descLabel->setText(QLatin1String("<b>") + spec->name() + QLatin1String("</b><br>") - + spec->description()); - } else { - m_descLabel->setText(QLatin1String("<b>") + item->text(0) + QLatin1String("</b><br>")); - } -} - -SnippetsTree::SnippetsTree(QWidget *parent) - : QTreeWidget(parent) -{ - setColumnCount(1); - header()->setVisible(false); - setAlternatingRowColors(true); - setAcceptDrops(true); -} - -void SnippetsTree::dropEvent(QDropEvent *) -{ - //writeSnippet(event->mimeData()); -} - -void SnippetsTree::dragEnterEvent(QDragEnterEvent *event) -{ - if (event->mimeData()->hasText()) - event->acceptProposedAction(); -} - -void SnippetsTree::dragMoveEvent(QDragMoveEvent *) -{ -} diff --git a/src/plugins/snippets/snippetswindow.h b/src/plugins/snippets/snippetswindow.h deleted file mode 100644 index d974822bdb21bc70aee6918931d85528013ef61e..0000000000000000000000000000000000000000 --- a/src/plugins/snippets/snippetswindow.h +++ /dev/null @@ -1,120 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#ifndef SNIPPETSWINDOW_H -#define SNIPPETSWINDOW_H - -#include <QtCore/QDir> -#include <QtGui/QTreeWidget> -#include <QtGui/QSplitter> -#include <QtGui/QIcon> - -QT_BEGIN_NAMESPACE -class QDir; -class QLabel; -QT_END_NAMESPACE - -namespace TextEditor { -class ITextEditable; -class ITextEditor; -} - -namespace Snippets { -namespace Internal { - -class SnippetSpec; -class SnippetsTree; -class InputWidget; - -class SnippetsWindow : public QSplitter -{ - Q_OBJECT - -public: - SnippetsWindow(); - ~SnippetsWindow(); - const QList<SnippetSpec *> &snippets() const; - void insertSnippet(TextEditor::ITextEditable *editor, SnippetSpec *snippet); - -private slots: - void updateDescription(QTreeWidgetItem *item); - void activateSnippet(QTreeWidgetItem *item, int column); - void setOpenIcon(QTreeWidgetItem *item); - void setClosedIcon(QTreeWidgetItem *item); - - void showInputWidget(bool canceled, const QString &value); - -private: - void getArguments(); - void replaceAndInsert(); - QString indentOfString(const QString &str, int at = -1); - void insertIdents(TextEditor::ITextEditable *editor, - const QString &indent, int fromPos, int toPos); - QString getCurrentIndent(TextEditor::ITextEditor *editor); - - QList<SnippetSpec *> m_snippets; - QString createUniqueFileName(); - void writeSnippet(const QMimeData *mData); - bool initSnippetsDir(); - void initSnippets(const QDir &dir); - - QList<int> m_requiredArgs; - QStringList m_args; - SnippetSpec *m_currentSnippet; - TextEditor::ITextEditable *m_currentEditor; - - QDir m_snippetsDir; - - SnippetsTree *m_snippetsTree; - - QLabel *m_descLabel; - - static const QIcon m_fileIcon; - static const QIcon m_dirIcon; - static const QIcon m_dirOpenIcon; -}; - -class SnippetsTree : public QTreeWidget -{ - Q_OBJECT - -public: - SnippetsTree(QWidget *parent); - -protected: - void dragMoveEvent(QDragMoveEvent * event); - void dragEnterEvent(QDragEnterEvent *event); - void dropEvent(QDropEvent *event); -}; - -} // namespace Internal -} // namespace Snippets - -#endif // SNIPPETSWINDOW_H - diff --git a/src/plugins/subversion/Subversion.pluginspec b/src/plugins/subversion/Subversion.pluginspec index 87ab8a7747f4948e8c979e15aa11aa571445bb35..67e1e2649386f1adc12f70802e652dabc9910557 100644 --- a/src/plugins/subversion/Subversion.pluginspec +++ b/src/plugins/subversion/Subversion.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Subversion" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Subversion" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,9 +14,9 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Subversion integration.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> - <dependency name="Core" version="2.0.91"/> - <dependency name="VCSBase" version="2.0.91"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="VCSBase" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/subversion/subversioncontrol.cpp b/src/plugins/subversion/subversioncontrol.cpp index f25fc3ab6a2b70ab19357c812024ea7d006523c4..597546ee2514b10dd31ced6f373bebc8f7a0c3ba 100644 --- a/src/plugins/subversion/subversioncontrol.cpp +++ b/src/plugins/subversion/subversioncontrol.cpp @@ -54,6 +54,8 @@ bool SubversionControl::supportsOperation(Operation operation) const case DeleteOperation: case MoveOperation: case AnnotateOperation: + case CheckoutOperation: + case GetRepositoryRootOperation: break; case OpenOperation: case CreateRepositoryOperation: @@ -89,6 +91,16 @@ bool SubversionControl::vcsMove(const QString &from, const QString &to) return m_plugin->vcsMove(fromInfo.absolutePath(), fromInfo.absoluteFilePath(), toInfo.absoluteFilePath()); } +bool SubversionControl::vcsCheckout(const QString &directory, const QByteArray &url) +{ + return m_plugin->vcsCheckout(directory, url); +} + +QString SubversionControl::vcsGetRepositoryURL(const QString &directory) +{ + return m_plugin->vcsGetRepositoryURL(directory); +} + bool SubversionControl::vcsCreateRepository(const QString &) { return false; diff --git a/src/plugins/subversion/subversioncontrol.h b/src/plugins/subversion/subversioncontrol.h index 5610059d66168f974686d10817e0a18b8cab03c1..071773b8600ba521564973d616fb2f37b9ce3f83 100644 --- a/src/plugins/subversion/subversioncontrol.h +++ b/src/plugins/subversion/subversioncontrol.h @@ -53,6 +53,8 @@ public: virtual bool vcsDelete(const QString &filename); virtual bool vcsMove(const QString &from, const QString &to); virtual bool vcsCreateRepository(const QString &directory); + virtual bool vcsCheckout(const QString &directory, const QByteArray &url); + virtual QString vcsGetRepositoryURL(const QString &directory); virtual QString vcsCreateSnapshot(const QString &topLevel); virtual QStringList vcsSnapshots(const QString &topLevel); diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 332ca5f372433a28fc9abd7419289ae9600195eb..5e47b9d07a744d566c42a8b0ad98d15be68ceebc 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -65,13 +65,14 @@ #include <QtCore/QTextCodec> #include <QtCore/QtPlugin> #include <QtCore/QProcessEnvironment> +#include <QtCore/QUrl> #include <QtGui/QAction> #include <QtGui/QFileDialog> #include <QtGui/QMainWindow> #include <QtGui/QMenu> #include <QtGui/QMessageBox> #include <QtGui/QInputDialog> - +#include <QtXml/QXmlStreamReader> #include <limits.h> using namespace Subversion::Internal; @@ -1224,6 +1225,75 @@ bool SubversionPlugin::vcsMove(const QString &workingDir, const QString &from, c return !response.error; } +bool SubversionPlugin::vcsCheckout(const QString &directory, const QByteArray &url) +{ + QUrl tempUrl; + tempUrl.setEncodedUrl(url); + QString username = tempUrl.userName(); + QString password = tempUrl.password(); + QStringList args = QStringList(QLatin1String("checkout")); + args << QLatin1String(nonInteractiveOptionC) ; + + if(!username.isEmpty() && !password.isEmpty()) + { + // If url contains username and password we have to use separate username and password + // arguments instead of passing those in the url. Otherwise the subversion 'non-interactive' + // authentication will always fail (if the username and password data are not stored locally), + // if for example we are logging into a new host for the first time using svn. There seems to + // be a bug in subversion, so this might get fixed in the future. + tempUrl.setUserInfo(""); + args << tempUrl.toEncoded() << directory; + const SubversionResponse response = runSvn(directory, username, password, args, + m_settings.longTimeOutMS(), + VCSBase::VCSBasePlugin::SshPasswordPrompt); + return !response.error; + } else { + args << url << directory; + const SubversionResponse response = runSvn(directory, args, m_settings.longTimeOutMS(), + VCSBase::VCSBasePlugin::SshPasswordPrompt); + return !response.error; + } +} + +QString SubversionPlugin::vcsGetRepositoryURL(const QString &directory) +{ + QXmlStreamReader xml; + QStringList args = QStringList(QLatin1String("info")); + args << QLatin1String("--xml"); + + const SubversionResponse response = runSvn(directory, args, m_settings.longTimeOutMS(), SuppressCommandLogging); + xml.addData(response.stdOut); + + bool repo = false; + bool root = false; + + while(!xml.atEnd() && !xml.hasError()) { + switch(xml.readNext()) { + case QXmlStreamReader::StartDocument: + break; + case QXmlStreamReader::StartElement: + if(xml.name() == QLatin1String("repository")) + repo = true; + else if(repo && xml.name() == QLatin1String("root")) + root = true; + break; + case QXmlStreamReader::EndElement: + if(xml.name() == QLatin1String("repository")) + repo = false; + else if(repo && xml.name() == QLatin1String("root")) + root = false; + break; + case QXmlStreamReader::Characters: + if (repo && root) + return xml.text().toString(); + break; + default: + break; + } + } + return QString(); +} + /* Subversion has ".svn" directory in each directory * it manages. The top level is the first directory * under the directory that does not have a ".svn". */ diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h index 584a196671cec85c349928a703841529156cce11..d79ae144e1087ad4270cb6e2e0e42c7e24294742 100644 --- a/src/plugins/subversion/subversionplugin.h +++ b/src/plugins/subversion/subversionplugin.h @@ -96,6 +96,8 @@ public: bool vcsDelete(const QString &workingDir, const QString &fileName); bool vcsMove(const QString &workingDir, const QString &from, const QString &to); bool managesDirectory(const QString &directory, QString *topLevel = 0) const; + virtual bool vcsCheckout(const QString &directory, const QByteArray &url); + virtual QString vcsGetRepositoryURL(const QString &directory); static SubversionPlugin *subversionPluginInstance(); diff --git a/src/plugins/tasklist/TaskList.pluginspec b/src/plugins/tasklist/TaskList.pluginspec index 5115be8c346a84a2da910e5036b3f8b15f146d14..b1a8eca3e4a7611c5a0c4e552edfc44ecf44d8c6 100644 --- a/src/plugins/tasklist/TaskList.pluginspec +++ b/src/plugins/tasklist/TaskList.pluginspec @@ -1,4 +1,4 @@ -<plugin name="TaskList" version="2.0.91" compatVersion="2.0.91"> +<plugin name="TaskList" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -13,7 +13,7 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Use .tasks-files to populate the build issues view.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/texteditor/TextEditor.pluginspec b/src/plugins/texteditor/TextEditor.pluginspec index b366d51c51a678ac693663fb15b5c7eb0b28f3d4..1670ce1ca4098e1d0f5ce529e90f517003a9b62e 100644 --- a/src/plugins/texteditor/TextEditor.pluginspec +++ b/src/plugins/texteditor/TextEditor.pluginspec @@ -1,4 +1,4 @@ -<plugin name="TextEditor" version="2.0.91" compatVersion="2.0.91"> +<plugin name="TextEditor" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,8 +14,8 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Text editor framework and the implementation of the basic text editor.</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="Find" version="2.0.91"/> - <dependency name="Locator" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="Find" version="2.1.81"/> + <dependency name="Locator" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index aa19330753a611ed7f68a40a588b95332d733f8c..c544e23b6b13c8bd7dc4e4708298e5a95de549d7 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -648,4 +648,6 @@ private: } // namespace TextEditor +Q_DECLARE_METATYPE(TextEditor::BaseTextEditor::Link); + #endif // BASETEXTEDITOR_H diff --git a/src/plugins/texteditor/generichighlighter/highlighter.cpp b/src/plugins/texteditor/generichighlighter/highlighter.cpp index 98de86d7fa59c1646efeac9cd1f171861bd91b6a..3775a63d51f3633800a1a717bf5bad1c09d5f88b 100644 --- a/src/plugins/texteditor/generichighlighter/highlighter.cpp +++ b/src/plugins/texteditor/generichighlighter/highlighter.cpp @@ -140,7 +140,7 @@ void Highlighter::highlightBlock(const QString &text) } } - applyVisualWhitespaceFormat(text); + applyFormatToSpaces(text, m_creatorFormats.value(VisualWhitespace)); } void Highlighter::setupDataForBlock(const QString &text) @@ -408,22 +408,6 @@ void Highlighter::applyFormat(int offset, } } -void Highlighter::applyVisualWhitespaceFormat(const QString &text) -{ - int offset = 0; - const int length = text.length(); - while (offset < length) { - if (text.at(offset).isSpace()) { - int start = offset++; - while (offset < length && text.at(offset).isSpace()) - ++offset; - setFormat(start, offset - start, m_creatorFormats.value(VisualWhitespace)); - } else { - ++offset; - } - } -} - void Highlighter::createWillContinueBlock() { BlockData *data = blockData(currentBlockUserData()); diff --git a/src/plugins/texteditor/generichighlighter/highlighter.h b/src/plugins/texteditor/generichighlighter/highlighter.h index 43b7b58df3ed2411cc731a6398c1ae99a01cf570..0741797259579017ec799f5b9f4ed06e6c4dfc84 100644 --- a/src/plugins/texteditor/generichighlighter/highlighter.h +++ b/src/plugins/texteditor/generichighlighter/highlighter.h @@ -123,7 +123,6 @@ private: int count, const QString &itemDataName, const QSharedPointer<HighlightDefinition> &definition); - void applyVisualWhitespaceFormat(const QString &text); void applyRegionBasedFolding() const; void applyIndentationBasedFolding(const QString &text) const; diff --git a/src/plugins/texteditor/generichighlighter/highlightersettings.cpp b/src/plugins/texteditor/generichighlighter/highlightersettings.cpp index ec6c59ab5666c5e06fa06143dbb500fe4390519f..2298df67aa52890c3f5d822a3a8c021c5a291eda 100644 --- a/src/plugins/texteditor/generichighlighter/highlightersettings.cpp +++ b/src/plugins/texteditor/generichighlighter/highlightersettings.cpp @@ -34,9 +34,9 @@ #include <QtCore/QSettings> #include <QtCore/QLatin1String> #include <QtCore/QLatin1Char> -#include <QtCore/QDebug> -#ifdef Q_OS_UNIX #include <QtCore/QDir> +#include <QtCore/QFile> +#ifdef Q_OS_UNIX #include <QtCore/QProcess> #endif @@ -135,8 +135,7 @@ void HighlighterSettings::fromSettings(const QString &category, QSettings *s) s->beginGroup(group); m_definitionFilesPath = s->value(kDefinitionFilesPath, QString()).toString(); if (!s->contains(kDefinitionFilesPath)) - m_definitionFilesPath = Core::ICore::instance()->resourcePath() + - QLatin1String("/generic-highlighter"); + assignDefaultDefinitionsPath(); else m_definitionFilesPath = s->value(kDefinitionFilesPath).toString(); if (!s->contains(kFallbackDefinitionFilesPath)) { @@ -151,7 +150,7 @@ void HighlighterSettings::fromSettings(const QString &category, QSettings *s) } m_alertWhenNoDefinition = s->value(kAlertWhenDefinitionIsNotFound, true).toBool(); if (!s->contains(kIgnoredFilesPatterns)) - assignInitialIgnoredPatterns(); + assignDefaultIgnoredPatterns(); else setIgnoredFilesPatterns(s->value(kIgnoredFilesPatterns, QString()).toString()); s->endGroup(); @@ -167,7 +166,7 @@ QString HighlighterSettings::ignoredFilesPatterns() const return listFromExpressions().join(QLatin1String(",")); } -void HighlighterSettings::assignInitialIgnoredPatterns() +void HighlighterSettings::assignDefaultIgnoredPatterns() { QStringList patterns; patterns << QLatin1String("*.txt") @@ -180,6 +179,14 @@ void HighlighterSettings::assignInitialIgnoredPatterns() setExpressionsFromList(patterns); } +void HighlighterSettings::assignDefaultDefinitionsPath() +{ + const QString &path = + Core::ICore::instance()->userResourcePath() + QLatin1String("/generic-highlighter"); + if (QFile::exists(path) || QDir().mkpath(path)) + m_definitionFilesPath = path; +} + bool HighlighterSettings::isIgnoredFilePattern(const QString &fileName) const { foreach (const QRegExp ®Exp, m_ignoredFiles) diff --git a/src/plugins/texteditor/generichighlighter/highlightersettings.h b/src/plugins/texteditor/generichighlighter/highlightersettings.h index e3fb4ca75a70836730aaa84354aacf4da41cefbc..0fbbe7e3eda22bffae3b4834dce9adfa7e5055e2 100644 --- a/src/plugins/texteditor/generichighlighter/highlightersettings.h +++ b/src/plugins/texteditor/generichighlighter/highlightersettings.h @@ -68,7 +68,8 @@ public: bool equals(const HighlighterSettings &highlighterSettings) const; private: - void assignInitialIgnoredPatterns(); + void assignDefaultIgnoredPatterns(); + void assignDefaultDefinitionsPath(); void setExpressionsFromList(const QStringList &patterns); QStringList listFromExpressions() const; diff --git a/src/plugins/texteditor/plaintexteditor.cpp b/src/plugins/texteditor/plaintexteditor.cpp index 67b99faabfc31dc0e12cf45fc7772b9d293d6abb..81b30c9e3229fe871c6137618d5e13a81b7aca35 100644 --- a/src/plugins/texteditor/plaintexteditor.cpp +++ b/src/plugins/texteditor/plaintexteditor.cpp @@ -62,7 +62,7 @@ PlainTextEditorEditable::PlainTextEditorEditable(PlainTextEditor *editor) PlainTextEditor::PlainTextEditor(QWidget *parent) : BaseTextEditor(parent), - m_isMissingSyntaxDefinition(true) + m_isMissingSyntaxDefinition(false) { setRevisionsVisible(true); setMarksVisible(true); @@ -164,8 +164,10 @@ void PlainTextEditor::setTabSettings(const TextEditor::TabSettings &ts) void PlainTextEditor::configure() { + Core::MimeType mimeType; if (file()) - configure(Core::ICore::instance()->mimeDatabase()->findByFile(file()->fileName())); + mimeType = Core::ICore::instance()->mimeDatabase()->findByFile(file()->fileName()); + configure(mimeType); } void PlainTextEditor::configure(const Core::MimeType &mimeType) @@ -173,39 +175,39 @@ void PlainTextEditor::configure(const Core::MimeType &mimeType) Highlighter *highlighter = new Highlighter(); baseTextDocument()->setSyntaxHighlighter(highlighter); - m_isMissingSyntaxDefinition = true; setCodeFoldingSupported(false); setCodeFoldingVisible(false); - QString definitionId; if (!mimeType.isNull()) { + m_isMissingSyntaxDefinition = true; + const QString &type = mimeType.type(); setMimeType(type); - definitionId = Manager::instance()->definitionIdByMimeType(type); + QString definitionId = Manager::instance()->definitionIdByMimeType(type); if (definitionId.isEmpty()) definitionId = findDefinitionId(mimeType, true); - } - - if (!definitionId.isEmpty()) { - m_isMissingSyntaxDefinition = false; - const QSharedPointer<HighlightDefinition> &definition = - Manager::instance()->definition(definitionId); - if (!definition.isNull()) { - highlighter->setDefaultContext(definition->initialContext()); - - m_commentDefinition.setAfterWhiteSpaces(definition->isCommentAfterWhiteSpaces()); - m_commentDefinition.setSingleLine(definition->singleLineComment()); - m_commentDefinition.setMultiLineStart(definition->multiLineCommentStart()); - m_commentDefinition.setMultiLineEnd(definition->multiLineCommentEnd()); - setCodeFoldingSupported(true); - setCodeFoldingVisible(true); - } - } else if (file()) { - const QString &fileName = file()->fileName(); - if (TextEditorSettings::instance()->highlighterSettings().isIgnoredFilePattern(fileName)) + if (!definitionId.isEmpty()) { m_isMissingSyntaxDefinition = false; + const QSharedPointer<HighlightDefinition> &definition = + Manager::instance()->definition(definitionId); + if (!definition.isNull()) { + highlighter->setDefaultContext(definition->initialContext()); + + m_commentDefinition.setAfterWhiteSpaces(definition->isCommentAfterWhiteSpaces()); + m_commentDefinition.setSingleLine(definition->singleLineComment()); + m_commentDefinition.setMultiLineStart(definition->multiLineCommentStart()); + m_commentDefinition.setMultiLineEnd(definition->multiLineCommentEnd()); + + setCodeFoldingSupported(true); + setCodeFoldingVisible(true); + } + } else if (file()) { + const QString &fileName = file()->fileName(); + if (TextEditorSettings::instance()->highlighterSettings().isIgnoredFilePattern(fileName)) + m_isMissingSyntaxDefinition = false; + } } setFontSettings(TextEditorSettings::instance()->fontSettings()); diff --git a/src/plugins/texteditor/syntaxhighlighter.cpp b/src/plugins/texteditor/syntaxhighlighter.cpp index b02d6ef9c6c53e8597ff6e6ac87fc1840968559a..346c735b26f03b256ca1431db2dce4fe66befc71 100644 --- a/src/plugins/texteditor/syntaxhighlighter.cpp +++ b/src/plugins/texteditor/syntaxhighlighter.cpp @@ -535,6 +535,22 @@ void SyntaxHighlighter::setFormat(int start, int count, const QFont &font) setFormat(start, count, format); } +void SyntaxHighlighter::applyFormatToSpaces(const QString &text, const QTextCharFormat &format) +{ + int offset = 0; + const int length = text.length(); + while (offset < length) { + if (text.at(offset).isSpace()) { + int start = offset++; + while (offset < length && text.at(offset).isSpace()) + ++offset; + setFormat(start, offset - start, format); + } else { + ++offset; + } + } +} + /*! \fn QTextCharFormat SyntaxHighlighter::format(int position) const diff --git a/src/plugins/texteditor/syntaxhighlighter.h b/src/plugins/texteditor/syntaxhighlighter.h index 5b6722b5a34dcb60d72d31e3f1a5803ea669b2a4..a010facf640335adcc4e81bc9f082cfd7ab69c0c 100644 --- a/src/plugins/texteditor/syntaxhighlighter.h +++ b/src/plugins/texteditor/syntaxhighlighter.h @@ -89,6 +89,8 @@ protected: void setFormat(int start, int count, const QFont &font); QTextCharFormat format(int pos) const; + void applyFormatToSpaces(const QString &text, const QTextCharFormat &format); + int previousBlockState() const; int currentBlockState() const; void setCurrentBlockState(int newState); diff --git a/src/plugins/texteditor/texteditoroverlay.cpp b/src/plugins/texteditor/texteditoroverlay.cpp index 4fbe7d2781894f818be44e470938d9e0047e91ef..7ee11757cdf86d3a8e23a5eb2a5c8632a9848b92 100644 --- a/src/plugins/texteditor/texteditoroverlay.cpp +++ b/src/plugins/texteditor/texteditoroverlay.cpp @@ -171,10 +171,10 @@ QPainterPath TextEditorOverlay::createSelectionPath(const QTextCursor &begin, co inSelection = true; firstOrLastBlock = true; } else { - while (beginChar < block.length() && document->characterAt(block.position() + beginChar).isSpace()) - ++beginChar; - if (beginChar == block.length()) - beginChar = 0; +// while (beginChar < block.length() && document->characterAt(block.position() + beginChar).isSpace()) +// ++beginChar; +// if (beginChar == block.length()) +// beginChar = 0; } int lastLine = blockLayout->lineCount()-1; diff --git a/src/plugins/vcsbase/VCSBase.pluginspec b/src/plugins/vcsbase/VCSBase.pluginspec index 341c6ce27b3f2c7e0ef9ecf8bcad0f4c3edbad3e..ee142de6c03d2851c51f00fcfa432233355fc58e 100644 --- a/src/plugins/vcsbase/VCSBase.pluginspec +++ b/src/plugins/vcsbase/VCSBase.pluginspec @@ -1,4 +1,4 @@ -<plugin name="VCSBase" version="2.0.91" compatVersion="2.0.91"> +<plugin name="VCSBase" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,8 +14,8 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Version Control System Base Plugin</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> - <dependency name="TextEditor" version="2.0.91"/> - <dependency name="ProjectExplorer" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> + <dependency name="TextEditor" version="2.1.81"/> + <dependency name="ProjectExplorer" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/plugins/vcsbase/basecheckoutwizard.cpp b/src/plugins/vcsbase/basecheckoutwizard.cpp index da827375d68e81ad975164496ea6ab7c6539c3cc..607963495b9030358096892b87a6bfe7f827c653 100644 --- a/src/plugins/vcsbase/basecheckoutwizard.cpp +++ b/src/plugins/vcsbase/basecheckoutwizard.cpp @@ -33,7 +33,6 @@ #include "checkoutjobs.h" #include <projectexplorer/projectexplorer.h> -#include <projectexplorer/session.h> #include <QtCore/QCoreApplication> #include <QtCore/QFileInfo> diff --git a/src/plugins/welcome/Welcome.pluginspec b/src/plugins/welcome/Welcome.pluginspec index 386d92fcaa44430960bce2ff59a35a5e77e69489..1b4c17425c258d009f3d5f7a77142a861c521ce0 100644 --- a/src/plugins/welcome/Welcome.pluginspec +++ b/src/plugins/welcome/Welcome.pluginspec @@ -1,4 +1,4 @@ -<plugin name="Welcome" version="2.0.91" compatVersion="2.0.91"> +<plugin name="Welcome" version="2.1.81" compatVersion="2.1.81"> <vendor>Nokia Corporation</vendor> <copyright>(C) 2010 Nokia Corporation</copyright> <license> @@ -14,6 +14,6 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <description>Default Welcome Screen Plugin</description> <url>http://qt.nokia.com</url> <dependencyList> - <dependency name="Core" version="2.0.91"/> + <dependency name="Core" version="2.1.81"/> </dependencyList> </plugin> diff --git a/src/tools/qml/qml.pro b/src/tools/qml/qml.pro deleted file mode 100644 index 5af8d71c73b77732252186aeb812344c565380d4..0000000000000000000000000000000000000000 --- a/src/tools/qml/qml.pro +++ /dev/null @@ -1,23 +0,0 @@ -TEMPLATE = subdirs - -contains(QT_CONFIG, declarative) { - - include(../../private_headers.pri) - exists($${QT_PRIVATE_HEADERS}/QtDeclarative/private/qdeclarativemetatype_p.h) { - SUBDIRS += qmldump ../../../share/qtcreator/qmljsdebugger qmlobserver - CONFIG += ordered - } else { - warning() - warning("QmlDump utility has been disabled") - warning("The helper depends on on private headers from QtDeclarative module.") - warning("This means the Qml editor will lack correct completion and type checking.") - warning("To enable it, pass 'QT_PRIVATE_HEADERS=$QTDIR/include' to qmake, where $QTDIR is the source directory of qt.") - warning() - warning("QmlObserver has been disabled") - warning("This application depends on private headers from QtDeclarative module.") - warning("This means the QML debugging facilities will be limited.") - warning("To enable it, pass 'QT_PRIVATE_HEADERS=$QTDIR/include' to qmake, where $QTDIR is the source directory of qt.") - warning() - } -} - diff --git a/src/tools/qml/qmldom/main.cpp b/src/tools/qml/qmldom/main.cpp deleted file mode 100644 index ef7556bb0b3d5d0a624070cfa07a0120b5c33396..0000000000000000000000000000000000000000 --- a/src/tools/qml/qmldom/main.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** 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. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include <QtCore/QDebug> -#include <QtCore/QtCore> -#include <QtCore/QCoreApplication> - -#include <QtDeclarative/QmlDomDocument> -#include <QtDeclarative/QmlEngine> - -#define SPACING (QString(" ")) - -const char* getDefault(const QmlDomProperty& prop) -{ - if (prop.isDefaultProperty()) - return " (default property)"; - else - return ""; -} - -void dumpList(const QmlDomList& list, const QString& indent); -void dumpTree(const QmlDomObject& domObject, const QString& indent); - -void dumpProperty(const QmlDomProperty& prop, const QString& indent) -{ - const QmlDomValue val(prop.value()); - - switch (val.type()) { - case QmlDomValue::Invalid: - qDebug() << indent.toAscii().data() << prop.propertyName() << "(invalid)" << getDefault(prop); - break; - - case QmlDomValue::List: - qDebug() << indent.toAscii().data() << prop.propertyName() << "(list)" << getDefault(prop); - dumpList(val.toList(), indent + SPACING); - break; - - case QmlDomValue::Literal: - qDebug() << indent.toAscii().data() << prop.propertyName() << "->" << val.toLiteral().literal() << "(literal)" << getDefault(prop); - break; - - case QmlDomValue::Object: - qDebug() << indent.toAscii().data() << prop.propertyName() << "->" << val.toObject().objectId() << "(object)" << getDefault(prop); - dumpTree(val.toObject(), indent + SPACING); - break; - - case QmlDomValue::PropertyBinding: - qDebug() << indent.toAscii().data() << prop.propertyName() << "->" << val.toBinding().binding() << "(property binding)" << getDefault(prop); - break; - - case QmlDomValue::ValueSource: - qDebug() << indent.toAscii().data() << prop.propertyName() << "->" << val.toValueSource().object().objectId() << "(value source)" << getDefault(prop); - break; - - default: - qDebug() << indent.toAscii().data() << prop.propertyName() << "(unknown)" << getDefault(prop); - break; - } -} - -void dumpList(const QmlDomList& list, const QString& indent) -{ - foreach (const QmlDomValue& val, list.values()) { - switch (val.type()) { - case QmlDomValue::Invalid: - qDebug() << indent.toAscii().data() << "(invalid)"; - break; - - case QmlDomValue::List: - qDebug() << indent.toAscii().data() << "(list)"; - dumpList(val.toList(), indent + SPACING); - break; - - case QmlDomValue::Literal: - qDebug() << indent.toAscii().data() << val.toLiteral().literal() << "(literal)"; - break; - - case QmlDomValue::Object: - qDebug() << indent.toAscii().data() << val.toObject().objectId() << "(object)"; - dumpTree(val.toObject(), indent + SPACING); - break; - - case QmlDomValue::PropertyBinding: - qDebug() << indent.toAscii().data() << val.toBinding().binding() << "(property binding)"; - break; - - case QmlDomValue::ValueSource: - qDebug() << indent.toAscii().data() << val.toValueSource().object().objectId() << "(value source)"; - break; - - default: - qDebug() << indent.toAscii().data() << "(unknown)"; - break; - } - } -} - -void dumpTree(const QmlDomObject& domObject, const QString& indent) -{ - qDebug() << (indent + "Object ID:").toAscii().data() << domObject.objectId() <<"Type: "<<domObject.objectType()<< "Class: " << domObject.objectClassName() << "Url: " << domObject.url().toString(); - - if (domObject.isComponent()) { - QString indent2 = indent + SPACING; - qDebug() << (indent2 + "isComponent").toAscii().data(); - QmlDomComponent component = domObject.toComponent(); - dumpTree(component.componentRoot(), indent2); - } else { - foreach (const QmlDomProperty& prop, domObject.properties()) { - QString indent2 = indent + SPACING; - dumpProperty(prop, indent2); - } - } -} - -int main(int argc, char *argv[]) -{ - QCoreApplication a(argc, argv); - - QByteArray qml; - - QStringList args = a.arguments(); - args.removeFirst(); - if (args.size() != 1) { - qDebug() << "add file name"; - return -2; - } - - QFile f(args.at(0)); - if (!f.open(QFile::ReadOnly)) { qDebug() << "cannot open file" << args.at(0); return -3;} - qml = f.readAll(); - - QmlEngine engine; - QmlDomDocument doc; - if (!doc.load(&engine, qml, QUrl::fromLocalFile(QFileInfo(f.fileName()).absoluteFilePath()))) { - foreach (const QmlError &error, doc.errors()) - qDebug() << QString("Error in %1, %2:%3: %4").arg(error.url().toString()).arg(error.line()).arg(error.column()).arg(error.description()); - return -1; - } - - qDebug() << "---------------------------"; - - foreach (const QmlDomImport &import, doc.imports()) - qDebug() << "Import type " << (import.type() == QmlDomImport::Library ? "Library" : "File") - << "uri" << import.uri() << "qualifier" << import.qualifier() << "version" << import.version(); - dumpTree(doc.rootObject(), ""); - return 0; -} diff --git a/src/tools/qml/qmldom/qmldom.pro b/src/tools/qml/qmldom/qmldom.pro deleted file mode 100644 index 47b5aa44f26c9b02e7e503f7cb1d2fee912635b8..0000000000000000000000000000000000000000 --- a/src/tools/qml/qmldom/qmldom.pro +++ /dev/null @@ -1,21 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2009-04-09T15:54:21 -# -#------------------------------------------------- - -!contains(QT_CONFIG, declarative) { - error("Qt is not configured with the declarative model."); -} - -QT -= gui -QT += declarative - -TARGET = qmldom -CONFIG += console -CONFIG -= app_bundle - -TEMPLATE = app - - -SOURCES += main.cpp diff --git a/src/tools/qml/qmlmetatype/main.cpp b/src/tools/qml/qmlmetatype/main.cpp deleted file mode 100644 index b6bf7ccbabd77f3f5cffee1ea2bf718c09d7119f..0000000000000000000000000000000000000000 --- a/src/tools/qml/qmlmetatype/main.cpp +++ /dev/null @@ -1,82 +0,0 @@ -#include <QtCore/QCoreApplication> -#include <QtCore/QDebug> -#include <QtCore/QMetaObject> -#include <QtCore/QMetaProperty> -#include <QtDeclarative/QmlMetaType> - - void messageOutput(QtMsgType type, const char *msg) - { - switch (type) { - case QtDebugMsg: - fprintf(stdout, "%s\n", msg); - break; - case QtWarningMsg: - fprintf(stderr, "Warning: %s\n", msg); - break; - case QtCriticalMsg: - fprintf(stderr, "Critical: %s\n", msg); - break; - case QtFatalMsg: - fprintf(stderr, "Fatal: %s\n", msg); - abort(); - } - } -void dumpProperty(QMetaProperty qProperty) -{ - qDebug() << "\t\t" << qProperty.name() << "\t\t" - << qProperty.typeName() - << "readable=" << qProperty.isReadable() - << "writable=" << qProperty.isWritable() - << "resettable=" << qProperty.isResettable(); -} - -void dumpType(QmlType *type) -{ - qDebug() << "Type:" << type->qmlTypeName() << type->majorVersion() << type->minorVersion() << "(C++: " << type->typeName() << ")"; - - const QMetaObject *qMetaObject = type->metaObject(); - if (!qMetaObject) { - qDebug() << "\tNo metaObject! Skipping ..."; - return; - } - - qDebug() << "\tProperties (default property :" << QmlMetaType::defaultProperty(qMetaObject).typeName() << ")"; - for (int i = 0; i < qMetaObject->propertyCount(); ++i) { - dumpProperty(qMetaObject->property(i)); - } - - qDebug() << "\tSuper Classes:"; - if (qMetaObject->superClass()) { - if (QmlType *qmlParentType = QmlMetaType::qmlType(qMetaObject->superClass())) { - if (!qmlParentType->qmlTypeName().isEmpty()) { - qDebug() << "\t\t" << qmlParentType->qmlTypeName(); - } else { - qDebug() << "\t\t" << "(no Qml Type name)" << qmlParentType->typeName(); - } - } else { - const QString parentClass = qMetaObject->superClass()->className(); - qDebug() << "\t\t" << "(no Qml Type)" << parentClass; - } - } else { - qDebug() << "\t\t" << "no superclass"; - } -} - -int main(int argc, char **argv) -{ - QCoreApplication app(argc, argv); - - qInstallMsgHandler(messageOutput); - - qDebug() << "Registered qml meta types:\n\n"; - foreach (const QByteArray &typeName, QmlMetaType::qmlTypeNames()) { - if (typeName.isEmpty()) { - qDebug() << "Empty type name!!! Skipping ..."; - continue; - } - QmlType *qmlType = QmlMetaType::qmlType(typeName, 4, 6); - Q_ASSERT(qmlType); - dumpType(qmlType); - } - return 0; -} diff --git a/src/tools/qml/qmlmetatype/qmlmetatype.pro b/src/tools/qml/qmlmetatype/qmlmetatype.pro deleted file mode 100644 index da49ff07fbd9c2bcb6307db79489e8e4ebef6344..0000000000000000000000000000000000000000 --- a/src/tools/qml/qmlmetatype/qmlmetatype.pro +++ /dev/null @@ -1,17 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2009-04-09T15:54:21 -# -#------------------------------------------------- - -QT -= gui -QT += declarative - -TARGET = qmlmetatype -CONFIG += console -CONFIG -= app_bundle - -TEMPLATE = app - - -SOURCES += main.cpp diff --git a/src/tools/qml/qmlobserver/qmlobserver.pro b/src/tools/qml/qmlobserver/qmlobserver.pro deleted file mode 100644 index 765a1f839fc9d48d72795392eae36dec2775fdde..0000000000000000000000000000000000000000 --- a/src/tools/qml/qmlobserver/qmlobserver.pro +++ /dev/null @@ -1,30 +0,0 @@ -TEMPLATE = app -QT += declarative - -include(qml.pri) - -SOURCES += main.cpp -include(../../../../qtcreator.pri) - -include(../../../../share/qtcreator/qmljsdebugger/qmljsdebugger.pri) -include(../../../libs/utils/utils.pri) -mac { - qmljsLibraryTarget = $$qtLibraryName(QmlJSDebugger) - utilsLibraryTarget = $$qtLibraryName(Utils) -} - - -include(../../../private_headers.pri) -DESTDIR = $$IDE_BIN_PATH -include(../../../rpath.pri) - -mac { - QMAKE_INFO_PLIST=Info_mac.plist - TARGET=QMLObserver - ICON=qml.icns - QMAKE_POST_LINK=install_name_tool -change @executable_path/../PlugIns/lib$${qmljsLibraryTarget}.1.dylib @executable_path/../../../../PlugIns/lib$${qmljsLibraryTarget}.1.dylib \'$$DESTDIR/$${TARGET}.app/Contents/MacOS/$$TARGET\' \ - && install_name_tool -change @executable_path/../PlugIns/lib$${utilsLibraryTarget}.1.dylib @executable_path/../../../../PlugIns/lib$${utilsLibraryTarget}.1.dylib \'$$DESTDIR/$${TARGET}.app/Contents/MacOS/$$TARGET\' -} else { - TARGET=qmlobserver -} - diff --git a/src/tools/tools.pro b/src/tools/tools.pro index 1c734cd26436e8cbc6b9fa78928bf12f32e874d0..37d02cd70897c57d98057ba90cebd07ced35f884 100644 --- a/src/tools/tools.pro +++ b/src/tools/tools.pro @@ -1,6 +1,6 @@ TEMPLATE = subdirs win32:SUBDIRS = qtcdebugger -SUBDIRS += qml + QT_BREAKPAD_ROOT_PATH = $$(QT_BREAKPAD_ROOT_PATH) !isEmpty(QT_BREAKPAD_ROOT_PATH) { SUBDIRS += qtcrashhandler diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index 155a28810a4eaf6b972315145d335b31e498f7fe..2b74003486837887346eaca42ce3059f69ba2411 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -33,6 +33,8 @@ private Q_SLOTS: void classAccess(); void ternary(); void objcAtDeclarations(); + void objcCall(); + void objcCallAndFor(); void braceList(); void bug1(); void bug2(); @@ -666,6 +668,38 @@ void tst_CodeFormatter::objcAtDeclarations() checkIndent(data); } +void tst_CodeFormatter::objcCall() +{ + QList<Line> data; + data << Line("void foo() {") + << Line(" [NSApp windows];") + << Line(" [NSObject class];") + << Line(" if (a)") + << Line(" int a = [window drawers];") + << Line("}") + << Line("int y;") + ; + checkIndent(data); +} + +void tst_CodeFormatter::objcCallAndFor() +{ + QList<Line> data; + data << Line("void foo() {") + << Line(" NSArray *windows = [NSApp windows];") + << Line(" for (NSWindow *window in windows) {") + << Line(" NSArray *drawers = [window drawers];") + << Line(" for (NSDrawer *drawer in drawers) {") + << Line(" NSArray *views = [[drawer contentView] subviews];") + << Line(" int x;") + << Line(" }") + << Line(" }") + << Line("}") + << Line("int y;") + ; + checkIndent(data); +} + void tst_CodeFormatter::switch1() { QList<Line> data; diff --git a/tests/auto/cplusplus/shared/shared.pri b/tests/auto/cplusplus/shared/shared.pri index f89b4c65f01d90e032a37acb071ebb6f0a407314..f662f2cb55533311d04544e6375958102e0c90a0 100644 --- a/tests/auto/cplusplus/shared/shared.pri +++ b/tests/auto/cplusplus/shared/shared.pri @@ -2,4 +2,5 @@ DEFINES+=CPLUSPLUS_BUILD_STATIC_LIB include(../../../../qtcreator.pri) INCLUDEPATH += $$IDE_SOURCE_TREE/src/libs/cplusplus INCLUDEPATH += $$IDE_SOURCE_TREE/src/shared/cplusplus -include($$PWD/../../../../src/libs/cplusplus/cplusplus-lib.pri) +include($$IDE_SOURCE_TREE/src/libs/cplusplus/cplusplus-lib.pri) +include($$IDE_SOURCE_TREE/src/libs/utils/utils-lib.pri) diff --git a/tests/auto/fakevim/fakevim.pro b/tests/auto/fakevim/fakevim.pro index d3a2044d48a4592e2f79c0c2efa22d9b0c976221..083a32e2c40b4414305bdbf5da324bbd5746060a 100644 --- a/tests/auto/fakevim/fakevim.pro +++ b/tests/auto/fakevim/fakevim.pro @@ -3,6 +3,8 @@ CONFIG += qtestlib testcase # Defines import symbol as empty DEFINES+=QTCREATOR_UTILS_STATIC_LIB +include(../../../src/libs/utils/utils-lib.pri) + FAKEVIMDIR = ../../../src/plugins/fakevim UTILSDIR = ../../../src/libs @@ -10,17 +12,11 @@ SOURCES += \ $$FAKEVIMDIR/fakevimhandler.cpp \ $$FAKEVIMDIR/fakevimactions.cpp \ $$FAKEVIMDIR/fakevimsyntax.cpp \ - $$UTILSDIR/utils/savedaction.cpp \ - $$UTILSDIR/utils/pathchooser.cpp \ - $$UTILSDIR/utils/basevalidatinglineedit.cpp \ tst_fakevim.cpp HEADERS += \ $$FAKEVIMDIR/fakevimhandler.h \ $$FAKEVIMDIR/fakevimactions.h \ $$FAKEVIMDIR/fakevimsyntax.h \ - $$UTILSDIR/utils/savedaction.h \ - $$UTILSDIR/utils/pathchooser.h \ - $$UTILSDIR/utils/basevalidatinglineedit.h \ INCLUDEPATH += $$FAKEVIMDIR $$UTILSDIR diff --git a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp index 21e556104615f7ae08e27ec015f890b8f5581f9d..cec7f02433bd337a7c135610fed7a0c5581eefd7 100644 --- a/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp +++ b/tests/auto/qml/qmldesigner/coretests/tst_testcore.cpp @@ -121,7 +121,7 @@ void tst_TestCore::cleanupTestCase() void tst_TestCore::testModelCreateCoreModel() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> testView(new TestView(model.data())); @@ -140,17 +140,17 @@ void tst_TestCore::loadEmptyCoreModel() textEdit1.setPlainText(file.readAll()); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item")); + QScopedPointer<Model> model1(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); model1->attachView(testRewriterView1.data()); QPlainTextEdit textEdit2; - textEdit2.setPlainText("import Qt 4.7; Item{}"); + textEdit2.setPlainText("import QtQuick 1.0; Item{}"); NotIndentingTextEditModifier modifier2(&textEdit2); - QScopedPointer<Model> model2(Model::create("Qt/item")); + QScopedPointer<Model> model2(Model::create("QtQuick/item")); QScopedPointer<TestRewriterView> testRewriterView2(new TestRewriterView()); testRewriterView2->setTextModifier(&modifier2); @@ -163,10 +163,10 @@ void tst_TestCore::testRewriterView() { try { QPlainTextEdit textEdit; - textEdit.setPlainText("import Qt 4.7;\n\nItem {\n}\n"); + textEdit.setPlainText("import QtQuick 1.0;\n\nItem {\n}\n"); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -179,15 +179,15 @@ void tst_TestCore::testRewriterView() testRewriterView->setTextModifier(&textModifier); model->attachView(testRewriterView.data()); - ModelNode childNode(addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data")); + ModelNode childNode(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data")); QVERIFY(childNode.isValid()); childNode.setId("childNode"); - ModelNode childNode2(addNodeListChild(childNode, "Qt/Rectangle", 4, 7, "data")); + ModelNode childNode2(addNodeListChild(childNode, "QtQuick/Rectangle", 1, 0, "data")); childNode2.setId("childNode2"); - ModelNode childNode3(addNodeListChild(childNode2, "Qt/Rectangle", 4, 7, "data")); + ModelNode childNode3(addNodeListChild(childNode2, "QtQuick/Rectangle", 1, 0, "data")); childNode3.setId("childNode3"); - ModelNode childNode4(addNodeListChild(childNode3, "Qt/Rectangle", 4, 7, "data")); + ModelNode childNode4(addNodeListChild(childNode3, "QtQuick/Rectangle", 1, 0, "data")); childNode4.setId("childNode4"); QVERIFY(childNode.isValid()); @@ -213,7 +213,7 @@ void tst_TestCore::testRewriterView() testRewriterView->modelToTextMerger()->applyChanges(); - childNode = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + childNode = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(testRewriterView->modelToTextMerger()->isNodeScheduledForAddition(childNode)); testRewriterView->modelToTextMerger()->applyChanges(); @@ -233,10 +233,10 @@ void tst_TestCore::testRewriterView() void tst_TestCore::testRewriterErrors() { QPlainTextEdit textEdit; - textEdit.setPlainText("import Qt 4.7;\n\nItem {\n}\n"); + textEdit.setPlainText("import QtQuick 1.0;\n\nItem {\n}\n"); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -250,10 +250,10 @@ void tst_TestCore::testRewriterErrors() model->attachView(testRewriterView.data()); QVERIFY(testRewriterView->errors().isEmpty()); - textEdit.setPlainText("import Qt 4.7;\n\nError {\n}\n"); + textEdit.setPlainText("import QtQuick 1.0;\n\nError {\n}\n"); QVERIFY(!testRewriterView->errors().isEmpty()); - textEdit.setPlainText("import Qt 4.7;\n\nItem {\n}\n"); + textEdit.setPlainText("import QtQuick 1.0;\n\nItem {\n}\n"); QVERIFY(testRewriterView->errors().isEmpty()); } @@ -267,7 +267,7 @@ void tst_TestCore::saveEmptyCoreModel() textEdit1.setPlainText(file.readAll()); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item")); + QScopedPointer<Model> model1(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -279,10 +279,10 @@ void tst_TestCore::saveEmptyCoreModel() modifier1.save(&buffer); QPlainTextEdit textEdit2; - textEdit2.setPlainText("import Qt 4.7; Item{}"); + textEdit2.setPlainText("import QtQuick 1.0; Item{}"); NotIndentingTextEditModifier modifier2(&textEdit2); - QScopedPointer<Model> model2(Model::create("Qt/item")); + QScopedPointer<Model> model2(Model::create("QtQuick/item")); QScopedPointer<TestRewriterView> testRewriterView2(new TestRewriterView()); testRewriterView2->setTextModifier(&modifier2); @@ -302,17 +302,17 @@ void tst_TestCore::loadAttributesInCoreModel() textEdit1.setPlainText(file.readAll()); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item")); + QScopedPointer<Model> model1(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); model1->attachView(testRewriterView1.data()); QPlainTextEdit textEdit2; - textEdit2.setPlainText("import Qt 4.7; Item{}"); + textEdit2.setPlainText("import QtQuick 1.0; Item{}"); NotIndentingTextEditModifier modifier2(&textEdit2); - QScopedPointer<Model> model2(Model::create("Qt/item")); + QScopedPointer<Model> model2(Model::create("QtQuick/item")); QScopedPointer<TestRewriterView> testRewriterView2(new TestRewriterView()); testRewriterView2->setTextModifier(&modifier2); @@ -337,7 +337,7 @@ void tst_TestCore::saveAttributesInCoreModel() textEdit1.setPlainText(file.readAll()); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item")); + QScopedPointer<Model> model1(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -353,7 +353,7 @@ void tst_TestCore::saveAttributesInCoreModel() textEdit2.setPlainText(buffer.data()); NotIndentingTextEditModifier modifier2(&textEdit2); - QScopedPointer<Model> model2(Model::create("Qt/Item")); + QScopedPointer<Model> model2(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView2(new TestRewriterView()); testRewriterView2->setTextModifier(&modifier2); @@ -368,7 +368,7 @@ void tst_TestCore::testModelCreateRect() { try { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -376,7 +376,7 @@ void tst_TestCore::testModelCreateRect() model->attachView(view.data()); QVERIFY(view->rootModelNode().isValid()); - ModelNode childNode = addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(view->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(childNode.isValid()); QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode)); QVERIFY(childNode.parentProperty().parentModelNode() == view->rootModelNode()); @@ -404,7 +404,7 @@ void tst_TestCore::testModelCreateRect() void tst_TestCore::testRewriterDynamicProperties() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " property int i\n" @@ -431,7 +431,7 @@ void tst_TestCore::testRewriterDynamicProperties() textEdit1.setPlainText(qmlString); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item")); + QScopedPointer<Model> model1(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -521,10 +521,10 @@ void tst_TestCore::testRewriterDynamicProperties() // test model2text // QPlainTextEdit textEdit2; -// textEdit2.setPlainText("import Qt 4.7; Item{}"); +// textEdit2.setPlainText("import QtQuick 1.0; Item{}"); // NotIndentingTextEditModifier modifier2(&textEdit2); // -// QScopedPointer<Model> model2(Model::create("Qt/Item")); +// QScopedPointer<Model> model2(Model::create("QtQuick/Item")); // // QScopedPointer<TestRewriterView> testRewriterView2(new TestRewriterView()); // testRewriterView2->setTextModifier(&modifier2); @@ -538,7 +538,7 @@ void tst_TestCore::testRewriterDynamicProperties() void tst_TestCore::testRewriterGroupedProperties() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Text {\n" " font {\n" @@ -551,7 +551,7 @@ void tst_TestCore::testRewriterGroupedProperties() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier modifier1(&textEdit); - QScopedPointer<Model> model1(Model::create("Qt/Text")); + QScopedPointer<Model> model1(Model::create("QtQuick/Text")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -575,7 +575,7 @@ void tst_TestCore::testRewriterGroupedProperties() rootModelNode.removeProperty(QLatin1String("font.pointSize")); const QLatin1String expected("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Text {\n" "}\n"); @@ -586,7 +586,7 @@ void tst_TestCore::testRewriterGroupedProperties() void tst_TestCore::testRewriterPreserveOrder() { const QLatin1String qmlString1("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "width: 640\n" @@ -607,7 +607,7 @@ void tst_TestCore::testRewriterPreserveOrder() "}\n" "}\n"); const QLatin1String qmlString2("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "width: 640\n" @@ -633,7 +633,7 @@ void tst_TestCore::testRewriterPreserveOrder() textEdit.setPlainText(qmlString2); NotIndentingTextEditModifier modifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Text")); + QScopedPointer<Model> model(Model::create("QtQuick/Text")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&modifier); @@ -646,7 +646,7 @@ void tst_TestCore::testRewriterPreserveOrder() RewriterTransaction transaction = testRewriterView->beginRewriterTransaction(); - ModelNode newModelNode = testRewriterView->createModelNode("Qt/Rectangle", 4, 7); + ModelNode newModelNode = testRewriterView->createModelNode("QtQuick/Rectangle", 1, 0); newModelNode.setParentProperty(rootModelNode.nodeAbstractProperty("data")); @@ -668,7 +668,7 @@ void tst_TestCore::testRewriterPreserveOrder() textEdit.setPlainText(qmlString1); NotIndentingTextEditModifier modifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Text")); + QScopedPointer<Model> model(Model::create("QtQuick/Text")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&modifier); @@ -681,7 +681,7 @@ void tst_TestCore::testRewriterPreserveOrder() RewriterTransaction transaction = testRewriterView->beginRewriterTransaction(); - ModelNode newModelNode = testRewriterView->createModelNode("Qt/Rectangle", 4, 7); + ModelNode newModelNode = testRewriterView->createModelNode("QtQuick/Rectangle", 1, 0); newModelNode.setParentProperty(rootModelNode.nodeAbstractProperty("data")); @@ -702,7 +702,7 @@ void tst_TestCore::testRewriterPreserveOrder() void tst_TestCore::testRewriterActionCompression() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " id: root\n" @@ -722,7 +722,7 @@ void tst_TestCore::testRewriterActionCompression() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier modifier1(&textEdit); - QScopedPointer<Model> model1(Model::create("Qt/Rectangle")); + QScopedPointer<Model> model1(Model::create("QtQuick/Rectangle")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&modifier1); @@ -748,7 +748,7 @@ void tst_TestCore::testRewriterActionCompression() transaction.commit(); const QLatin1String expected("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " id: root\n" @@ -776,7 +776,7 @@ void tst_TestCore::testRewriterImports() textEdit.setPlainText(file.readAll()); NotIndentingTextEditModifier modifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); model->setFileUrl(QUrl::fromLocalFile(fileName)); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); @@ -787,7 +787,7 @@ void tst_TestCore::testRewriterImports() QVERIFY(model->imports().size() == 3); - // import Qt 4.7 + // import QtQuick 1.0 Import import = model->imports().at(0); QVERIFY(import.isLibraryImport()); QCOMPARE(import.url(), QString("Qt")); @@ -815,7 +815,7 @@ void tst_TestCore::testRewriterImports() void tst_TestCore::testRewriterChangeImports() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {}\n"); @@ -823,7 +823,7 @@ void tst_TestCore::testRewriterChangeImports() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier modifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Rectangle")); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView(0, RewriterView::Amend)); testRewriterView->setTextModifier(&modifier); @@ -838,7 +838,7 @@ void tst_TestCore::testRewriterChangeImports() model->addImport(webkitImport); const QLatin1String qmlWithImport("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "import QtWebKit 1.0\n" "\n" "Rectangle {}\n"); @@ -847,7 +847,7 @@ void tst_TestCore::testRewriterChangeImports() model->removeImport(webkitImport); QCOMPARE(model->imports().size(), 1); - QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7")); + QCOMPARE(model->imports().first(), Import::createLibraryImport("QtQuick", "1.0")); QCOMPARE(textEdit.toPlainText(), qmlString); @@ -859,7 +859,7 @@ void tst_TestCore::testRewriterChangeImports() model->addImport(webkitImport); const QLatin1String qmlWithAliasImport("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "import QtWebKit 1.0 as Web\n" "\n" "Rectangle {}\n"); @@ -868,7 +868,7 @@ void tst_TestCore::testRewriterChangeImports() model->removeImport(webkitImport); QCOMPARE(model->imports().size(), 1); - QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7")); + QCOMPARE(model->imports().first(), Import::createLibraryImport("QtQuick", "1.0")); QCOMPARE(textEdit.toPlainText(), qmlString); @@ -878,23 +878,23 @@ void tst_TestCore::testRewriterChangeImports() // textEdit.setPlainText(qmlWithImport); QCOMPARE(model->imports().size(), 2); - QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7")); + QCOMPARE(model->imports().first(), Import::createLibraryImport("QtQuick", "1.0")); QCOMPARE(model->imports().last(), Import::createLibraryImport("QtWebKit", "1.0")); textEdit.setPlainText(qmlWithAliasImport); QCOMPARE(model->imports().size(), 2); - QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7")); + QCOMPARE(model->imports().first(), Import::createLibraryImport("QtQuick", "1.0")); QCOMPARE(model->imports().last(), Import::createLibraryImport("QtWebKit", "1.0", "Web")); textEdit.setPlainText(qmlString); QCOMPARE(model->imports().size(), 1); - QCOMPARE(model->imports().first(), Import::createLibraryImport("Qt", "4.7")); + QCOMPARE(model->imports().first(), Import::createLibraryImport("QtQuick", "1.0")); } void tst_TestCore::testRewriterForGradientMagic() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " id: root\n" @@ -932,7 +932,7 @@ void tst_TestCore::testRewriterForGradientMagic() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier modifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Text")); + QScopedPointer<Model> model(Model::create("QtQuick/Text")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&modifier); @@ -948,7 +948,7 @@ void tst_TestCore::testRewriterForGradientMagic() myRect.variantProperty("rotation") = QVariant(45); QVERIFY(myRect.isValid()); - QScopedPointer<Model> model1(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model1(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model1.data()); QScopedPointer<TestView> view1(new TestView(model1.data())); @@ -956,7 +956,7 @@ void tst_TestCore::testRewriterForGradientMagic() QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Item {}"); + textEdit1.setPlainText("import QtQuick 1.0; Item {}"); NotIndentingTextEditModifier modifier1(&textEdit1); testRewriterView1->setTextModifier(&modifier1); @@ -982,7 +982,7 @@ void tst_TestCore::loadSubItems() textEdit1.setPlainText(file.readAll()); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item")); + QScopedPointer<Model> model1(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -1000,7 +1000,7 @@ void tst_TestCore::createInvalidCoreModel() void tst_TestCore::testModelCreateSubNode() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1012,7 +1012,7 @@ void tst_TestCore::testModelCreateSubNode() QCOMPARE(view->methodCalls(), expectedCalls); QVERIFY(view->rootModelNode().isValid()); - ModelNode childNode = addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(view->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(childNode.isValid()); QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode)); QVERIFY(childNode.parentProperty().parentModelNode() == view->rootModelNode()); @@ -1046,7 +1046,7 @@ void tst_TestCore::testModelCreateSubNode() void tst_TestCore::testTypicalRewriterOperations() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1075,7 +1075,7 @@ void tst_TestCore::testTypicalRewriterOperations() QCOMPARE(rootModelNode.bindingProperty("test").expression(), QString("parent.x")); - ModelNode childNode(addNodeListChild(rootModelNode, "Qt/Rectangle", 4 ,6, "data")); + ModelNode childNode(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 4 ,6, "data")); rootModelNode.nodeListProperty("test").reparentHere(childNode); QCOMPARE(childNode.parentProperty(), rootModelNode.nodeAbstractProperty("test")); QVERIFY(rootModelNode.property("test").isNodeAbstractProperty()); @@ -1095,7 +1095,7 @@ void tst_TestCore::testTypicalRewriterOperations() void tst_TestCore::testBasicStates() { - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" "id: root;\n" "Rectangle {\n" @@ -1134,7 +1134,7 @@ void tst_TestCore::testBasicStates() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1143,13 +1143,13 @@ void tst_TestCore::testBasicStates() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&textModifier); model->attachView(testRewriterView.data()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Rectangle")); QVERIFY(rootModelNode.hasProperty("data")); @@ -1246,7 +1246,7 @@ void tst_TestCore::testBasicStates() void tst_TestCore::testModelBasicOperations() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1267,8 +1267,8 @@ void tst_TestCore::testModelBasicOperations() QVERIFY(!rootModelNode.hasProperty("width")); QVERIFY(!rootModelNode.hasProperty("children")); - ModelNode childNode1(addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "children")); - ModelNode childNode2(addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data")); + ModelNode childNode1(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "children")); + ModelNode childNode2(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data")); QVERIFY(childNode1.isValid()); QVERIFY(childNode2.isValid()); @@ -1306,7 +1306,7 @@ void tst_TestCore::testModelBasicOperations() void tst_TestCore::testModelResolveIds() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1316,9 +1316,9 @@ void tst_TestCore::testModelResolveIds() ModelNode rootNode = view->rootModelNode(); rootNode.setId("rootNode"); - ModelNode childNode1(addNodeListChild(rootNode, "Qt/Rectangle", 4, 7, "children")); + ModelNode childNode1(addNodeListChild(rootNode, "QtQuick/Rectangle", 1, 0, "children")); - ModelNode childNode2(addNodeListChild(childNode1, "Qt/Rectangle", 4, 7, "children")); + ModelNode childNode2(addNodeListChild(childNode1, "QtQuick/Rectangle", 1, 0, "children")); childNode2.setId("childNode2"); childNode2.bindingProperty("test").setExpression("parent.parent"); @@ -1329,7 +1329,7 @@ void tst_TestCore::testModelResolveIds() childNode2.bindingProperty("test").setExpression("rootNode"); QCOMPARE(childNode2.bindingProperty("test").resolveToModelNode(), rootNode); - ModelNode childNode3(addNodeListChild(childNode2, "Qt/Rectangle", 4, 7, "children")); + ModelNode childNode3(addNodeListChild(childNode2, "QtQuick/Rectangle", 1, 0, "children")); childNode3.setId("childNode3"); childNode2.nodeProperty("front").setModelNode(childNode3); childNode2.bindingProperty("test").setExpression("childNode3.parent"); @@ -1364,7 +1364,7 @@ void tst_TestCore::testModelNodeListProperty() // // Test NodeListProperty API // - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1382,7 +1382,7 @@ void tst_TestCore::testModelNodeListProperty() QVERIFY(!rootChildren.isNodeListProperty()); QVERIFY(rootChildren.isEmpty()); - ModelNode rectNode = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode rectNode = view->createModelNode("QtQuick/Rectangle", 1, 0); rootChildren.reparentHere(rectNode); // @@ -1393,7 +1393,7 @@ void tst_TestCore::testModelNodeListProperty() QVERIFY(rootChildren.isNodeListProperty()); QVERIFY(!rootChildren.isEmpty()); - ModelNode mouseAreaNode = view->createModelNode("Qt/Item", 4, 7); + ModelNode mouseAreaNode = view->createModelNode("QtQuick/Item", 1, 0); NodeListProperty rectChildren = rectNode.nodeListProperty("children"); rectChildren.reparentHere(mouseAreaNode); @@ -1421,7 +1421,7 @@ void tst_TestCore::testModelNodeListProperty() void tst_TestCore::testBasicOperationsWithView() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1453,8 +1453,8 @@ void tst_TestCore::testBasicOperationsWithView() QCOMPARE(rootInstance.size().width(), 10.0); QCOMPARE(rootInstance.size().height(), 10.0); - ModelNode childNode(addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data")); - ModelNode childNode2(addNodeListChild(childNode, "Qt/Rectangle", 4, 7, "data")); + ModelNode childNode(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data")); + ModelNode childNode2(addNodeListChild(childNode, "QtQuick/Rectangle", 1, 0, "data")); QVERIFY(childNode2.parentProperty().parentModelNode() == childNode); QVERIFY(childNode.isValid()); @@ -1489,10 +1489,10 @@ void tst_TestCore::testBasicOperationsWithView() QVERIFY(!childInstance2.isValid()); } - childNode = addNodeListChild(rootModelNode, "Qt/Image", 4, 7, "data"); + childNode = addNodeListChild(rootModelNode, "QtQuick/Image", 1, 0, "data"); QVERIFY(childNode.isValid()); - QCOMPARE(childNode.type(), QString("Qt/Image")); - childNode2 = addNodeListChild(childNode, "Qt/Rectangle", 4, 7, "data"); + QCOMPARE(childNode.type(), QString("QtQuick/Image")); + childNode2 = addNodeListChild(childNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(childNode2.isValid()); childNode2.setParentProperty(rootModelNode, "data"); QVERIFY(childNode2.isValid()); @@ -1531,7 +1531,7 @@ void tst_TestCore::testBasicOperationsWithView() void tst_TestCore::testQmlModelView() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QmlModelView *view = new TestView(model.data()); @@ -1549,7 +1549,7 @@ void tst_TestCore::testQmlModelView() propertyList.append(qMakePair(QString("width"), QVariant(20))); propertyList.append(qMakePair(QString("height"), QVariant(20))); - QmlObjectNode node1 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); + QmlObjectNode node1 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); QVERIFY(node1.isValid()); QVERIFY(!node1.hasNodeParent()); @@ -1565,7 +1565,7 @@ void tst_TestCore::testQmlModelView() QVERIFY(node1.instanceParent() == view->rootQmlObjectNode()); - QmlObjectNode node2 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); + QmlObjectNode node2 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); QVERIFY(node2.isValid()); QVERIFY(!node2.hasNodeParent()); @@ -1593,12 +1593,12 @@ void tst_TestCore::testQmlModelView() QCOMPARE(node1.instanceValue("x").toInt(), 2); - QmlObjectNode node3 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); - QmlObjectNode node4 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); - QmlObjectNode node5 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); - QmlObjectNode node6 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); - QmlObjectNode node7 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); - QmlObjectNode node8 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); + QmlObjectNode node3 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); + QmlObjectNode node4 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); + QmlObjectNode node5 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); + QmlObjectNode node6 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); + QmlObjectNode node7 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); + QmlObjectNode node8 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); node3.setParentProperty(node2.nodeAbstractProperty("children")); node4.setParentProperty(node3.nodeAbstractProperty("children")); @@ -1626,12 +1626,12 @@ void tst_TestCore::testQmlModelView() QCOMPARE(node2.instanceValue("x").toInt(), 10); // is this right? or should it be a invalid qvariant? - node1 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); + node1 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); node1.setId("node1"); QCOMPARE(node2.instanceValue("x").toInt(), 20); - node3 = view->createQmlObjectNode("Qt/Rectangle", 4, 7, propertyList); + node3 = view->createQmlObjectNode("QtQuick/Rectangle", 1, 0, propertyList); node3.setParentProperty(node2.nodeAbstractProperty("children")); QCOMPARE(node3.instanceValue("width").toInt(), 20); node3.setVariantProperty("width", 0); @@ -1653,7 +1653,7 @@ void tst_TestCore::testQmlModelView() void tst_TestCore::testModelRemoveNode() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1666,7 +1666,7 @@ void tst_TestCore::testModelRemoveNode() QCOMPARE(view->rootModelNode().allDirectSubModelNodes().count(), 0); - ModelNode childNode = addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(view->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(childNode.isValid()); QCOMPARE(view->rootModelNode().allDirectSubModelNodes().count(), 1); QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode)); @@ -1678,7 +1678,7 @@ void tst_TestCore::testModelRemoveNode() QVERIFY(childInstance.parent() == nodeInstanceView->instanceForNode(view->rootModelNode())); } - ModelNode subChildNode = addNodeListChild(childNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode subChildNode = addNodeListChild(childNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(subChildNode.isValid()); QCOMPARE(childNode.allDirectSubModelNodes().count(), 1); QVERIFY(childNode.allDirectSubModelNodes().contains(subChildNode)); @@ -1709,7 +1709,7 @@ void tst_TestCore::testModelRemoveNode() QVERIFY(view->rootModelNode().isValid()); // delete node not in hierarchy - childNode = view->createModelNode("Qt/Item", 4, 7); + childNode = view->createModelNode("QtQuick/Item", 1, 0); childNode.destroy(); model->detachView(nodeInstanceView); @@ -1717,7 +1717,7 @@ void tst_TestCore::testModelRemoveNode() void tst_TestCore::reparentingNode() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); @@ -1734,7 +1734,7 @@ void tst_TestCore::reparentingNode() NodeInstanceView *nodeInstanceView = new NodeInstanceView(model.data()); model->attachView(nodeInstanceView); - ModelNode childNode = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); QCOMPARE(childNode.parentProperty().parentModelNode(), rootModelNode); QVERIFY(rootModelNode.allDirectSubModelNodes().contains(childNode)); @@ -1744,7 +1744,7 @@ void tst_TestCore::reparentingNode() QVERIFY(childInstance.parent() == nodeInstanceView->instanceForNode(view->rootModelNode())); } - ModelNode childNode2 = addNodeListChild(rootModelNode, "Qt/Item", 4, 7, "data"); + ModelNode childNode2 = addNodeListChild(rootModelNode, "QtQuick/Item", 1, 0, "data"); QCOMPARE(childNode2.parentProperty().parentModelNode(), rootModelNode); QVERIFY(rootModelNode.allDirectSubModelNodes().contains(childNode2)); @@ -1785,10 +1785,10 @@ void tst_TestCore::reparentingNode() void tst_TestCore::reparentingNodeLikeDragAndDrop() { QPlainTextEdit textEdit; - textEdit.setPlainText("import Qt 4.7;\n\nItem {\n}\n"); + textEdit.setPlainText("import QtQuick 1.0;\n\nItem {\n}\n"); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); @@ -1804,7 +1804,7 @@ void tst_TestCore::reparentingNodeLikeDragAndDrop() view->rootModelNode().setId("rootModelNode"); QCOMPARE(view->rootModelNode().id(), QString("rootModelNode")); - ModelNode rectNode = addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data"); + ModelNode rectNode = addNodeListChild(view->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data"); rectNode.setId("rect_1"); rectNode.variantProperty("x").setValue(20); rectNode.variantProperty("y").setValue(30); @@ -1813,7 +1813,7 @@ void tst_TestCore::reparentingNodeLikeDragAndDrop() RewriterTransaction transaction(view->beginRewriterTransaction()); - ModelNode textNode = addNodeListChild(view->rootModelNode(), "Qt/Text", 4, 7, "data"); + ModelNode textNode = addNodeListChild(view->rootModelNode(), "QtQuick/Text", 1, 0, "data"); QCOMPARE(textNode.parentProperty().parentModelNode(), view->rootModelNode()); QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(textNode)); @@ -1901,7 +1901,7 @@ void tst_TestCore::reparentingNodeLikeDragAndDrop() void tst_TestCore::testModelReorderSiblings() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1914,11 +1914,11 @@ void tst_TestCore::testModelReorderSiblings() ModelNode rootModelNode = view->rootModelNode(); QVERIFY(rootModelNode.isValid()); - ModelNode a = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode a = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(a.isValid()); - ModelNode b = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode b = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(b.isValid()); - ModelNode c = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode c = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(c.isValid()); { @@ -1952,7 +1952,7 @@ void tst_TestCore::testModelReorderSiblings() void tst_TestCore::testModelRootNode() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -1963,10 +1963,10 @@ void tst_TestCore::testModelRootNode() ModelNode rootModelNode = view->rootModelNode(); QVERIFY(rootModelNode.isValid()); QVERIFY(rootModelNode.isRootNode()); - ModelNode topChildNode = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode topChildNode = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(topChildNode.isValid()); QVERIFY(rootModelNode.isRootNode()); - ModelNode childNode = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(childNode.isValid()); QVERIFY(rootModelNode.isValid()); QVERIFY(rootModelNode.isRootNode()); @@ -1983,15 +1983,15 @@ void tst_TestCore::testModelRootNode() void tst_TestCore::reparentingNodeInModificationGroup() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); model->attachView(view.data()); - ModelNode childNode = addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode2 = addNodeListChild(view->rootModelNode(), "Qt/Item", 4, 7, "data"); + ModelNode childNode = addNodeListChild(view->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode2 = addNodeListChild(view->rootModelNode(), "QtQuick/Item", 1, 0, "data"); childNode.variantProperty("x").setValue(10); childNode.variantProperty("y").setValue(10); @@ -2033,7 +2033,7 @@ void tst_TestCore::reparentingNodeInModificationGroup() void tst_TestCore::testModelAddAndRemoveProperty() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2074,7 +2074,7 @@ void tst_TestCore::testModelAddAndRemoveProperty() void tst_TestCore::testModelViewNotification() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view1(new TestView(model.data())); @@ -2096,7 +2096,7 @@ void tst_TestCore::testModelViewNotification() QCOMPARE(view1->methodCalls(), expectedCalls); QCOMPARE(view2->methodCalls(), expectedCalls); - ModelNode childNode = addNodeListChild(view2->rootModelNode(), "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(view2->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data"); expectedCalls << TestView::MethodCall("nodeCreated", QStringList() << ""); expectedCalls << TestView::MethodCall("nodeReparented", QStringList() << "" << "data" << "" << "PropertiesAdded"); QCOMPARE(view1->methodCalls(), expectedCalls); @@ -2146,7 +2146,7 @@ void tst_TestCore::testModelViewNotification() void tst_TestCore::testRewriterTransaction() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2156,7 +2156,7 @@ void tst_TestCore::testRewriterTransaction() RewriterTransaction transaction = view->beginRewriterTransaction(); QVERIFY(transaction.isValid()); - ModelNode childNode = addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(view->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(childNode.isValid()); childNode.destroy(); @@ -2166,7 +2166,7 @@ void tst_TestCore::testRewriterTransaction() RewriterTransaction transaction2 = view->beginRewriterTransaction(); QVERIFY(transaction2.isValid()); - ModelNode childNode = addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(view->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(childNode.isValid()); childNode.destroy(); @@ -2193,7 +2193,7 @@ void tst_TestCore::testRewriterTransaction() void tst_TestCore::testRewriterId() { - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" "}\n"; @@ -2201,7 +2201,7 @@ void tst_TestCore::testRewriterId() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2216,16 +2216,16 @@ void tst_TestCore::testRewriterId() model->attachView(testRewriterView.data()); - QCOMPARE(rootModelNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Rectangle")); QVERIFY(rootModelNode.isValid()); - ModelNode newNode(view->createModelNode("Qt/Rectangle", 4, 7)); + ModelNode newNode(view->createModelNode("QtQuick/Rectangle", 1, 0)); newNode.setId("testId"); rootModelNode.nodeListProperty("data").reparentHere(newNode); - const QLatin1String expected("import Qt 4.7\n" + const QLatin1String expected("import QtQuick 1.0\n" "Rectangle {\n" "Rectangle {\n" " id: testId\n" @@ -2237,7 +2237,7 @@ void tst_TestCore::testRewriterId() void tst_TestCore::testRewriterNodeReparentingTransaction1() { - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" "}\n"; @@ -2245,7 +2245,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction1() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2254,7 +2254,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction1() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&textModifier); @@ -2262,12 +2262,12 @@ void tst_TestCore::testRewriterNodeReparentingTransaction1() QVERIFY(rootModelNode.isValid()); - ModelNode childNode1 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode2 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode3 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode4 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode1 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode2 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode3 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode4 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); - ModelNode reparentNode = addNodeListChild(childNode1, "Qt/Rectangle", 4, 7, "data"); + ModelNode reparentNode = addNodeListChild(childNode1, "QtQuick/Rectangle", 1, 0, "data"); RewriterTransaction rewriterTransaction = view->beginRewriterTransaction(); @@ -2282,7 +2282,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction1() void tst_TestCore::testRewriterNodeReparentingTransaction2() { - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" "}\n"; @@ -2290,7 +2290,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction2() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2299,7 +2299,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction2() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&textModifier); @@ -2307,8 +2307,8 @@ void tst_TestCore::testRewriterNodeReparentingTransaction2() QVERIFY(rootModelNode.isValid()); - ModelNode childNode1 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode2 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode1 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode2 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); childNode2.variantProperty("x") = 200; childNode2.variantProperty("y") = 50; @@ -2348,7 +2348,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction2() void tst_TestCore::testRewriterNodeReparentingTransaction3() { - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" "}\n"; @@ -2356,7 +2356,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction3() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2365,7 +2365,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction3() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&textModifier); @@ -2373,10 +2373,10 @@ void tst_TestCore::testRewriterNodeReparentingTransaction3() QVERIFY(rootModelNode.isValid()); - ModelNode childNode1 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode2 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode3 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode4 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode1 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode2 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode3 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode4 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); RewriterTransaction rewriterTransaction = view->beginRewriterTransaction(); @@ -2398,7 +2398,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction3() void tst_TestCore::testRewriterNodeReparentingTransaction4() { - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" "}\n"; @@ -2406,7 +2406,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction4() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2415,7 +2415,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction4() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&textModifier); @@ -2423,11 +2423,11 @@ void tst_TestCore::testRewriterNodeReparentingTransaction4() QVERIFY(rootModelNode.isValid()); - ModelNode childNode1 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode2 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode3 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode4 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); - ModelNode childNode5 = addNodeListChild(childNode2, "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode1 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode2 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode3 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode4 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); + ModelNode childNode5 = addNodeListChild(childNode2, "QtQuick/Rectangle", 1, 0, "data"); RewriterTransaction rewriterTransaction = view->beginRewriterTransaction(); @@ -2449,7 +2449,7 @@ void tst_TestCore::testRewriterNodeReparentingTransaction4() void tst_TestCore::testRewriterAddNodeTransaction() { - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" "}\n"; @@ -2457,7 +2457,7 @@ void tst_TestCore::testRewriterAddNodeTransaction() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2466,7 +2466,7 @@ void tst_TestCore::testRewriterAddNodeTransaction() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&textModifier); @@ -2475,11 +2475,11 @@ void tst_TestCore::testRewriterAddNodeTransaction() QVERIFY(rootModelNode.isValid()); - ModelNode childNode = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); RewriterTransaction rewriterTransaction = view->beginRewriterTransaction(); - ModelNode newNode = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode newNode = view->createModelNode("QtQuick/Rectangle", 1, 0); newNode.variantProperty("x") = 100; newNode.variantProperty("y") = 100; @@ -2491,7 +2491,7 @@ void tst_TestCore::testRewriterAddNodeTransaction() void tst_TestCore::testRewriterComponentId() { - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" " Component {\n" " id: testComponent\n" @@ -2504,7 +2504,7 @@ void tst_TestCore::testRewriterComponentId() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2517,17 +2517,17 @@ void tst_TestCore::testRewriterComponentId() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Rectangle")); ModelNode component(rootModelNode.allDirectSubModelNodes().first()); QVERIFY(component.isValid()); - QCOMPARE(component.type(), QString("Qt/Component")); + QCOMPARE(component.type(), QString("QtQuick/Component")); QCOMPARE(component.id(), QString("testComponent")); } void tst_TestCore::testRewriterTransactionRewriter() { - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" "}\n"; @@ -2535,7 +2535,7 @@ void tst_TestCore::testRewriterTransactionRewriter() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2544,7 +2544,7 @@ void tst_TestCore::testRewriterTransactionRewriter() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&textModifier); @@ -2557,7 +2557,7 @@ void tst_TestCore::testRewriterTransactionRewriter() { RewriterTransaction transaction = view->beginRewriterTransaction(); - childNode1 = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + childNode1 = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); childNode1.variantProperty("x") = 10; childNode1.variantProperty("y") = 10; } @@ -2569,7 +2569,7 @@ void tst_TestCore::testRewriterTransactionRewriter() { RewriterTransaction transaction = view->beginRewriterTransaction(); - childNode2 = addNodeListChild(childNode1, "Qt/Rectangle", 4, 7, "data"); + childNode2 = addNodeListChild(childNode1, "QtQuick/Rectangle", 1, 0, "data"); childNode2.destroy(); } @@ -2594,7 +2594,7 @@ void tst_TestCore::testRewriterPropertyDeclarations() // property variant myArray: [ Rectangle {} ] // property variant someGradient: Gradient {} - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Item {\n" " property int intProperty\n" " property bool boolProperty: true\n" @@ -2607,7 +2607,7 @@ void tst_TestCore::testRewriterPropertyDeclarations() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2625,7 +2625,7 @@ void tst_TestCore::testRewriterPropertyDeclarations() // ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QCOMPARE(rootModelNode.properties().size(), 4); @@ -2658,7 +2658,7 @@ void tst_TestCore::testRewriterPropertyAliases() // where type is (int | bool | double | real | string | url | color | date | variant) // - char qmlString[] = "import Qt 4.7\n" + char qmlString[] = "import QtQuick 1.0\n" "Item {\n" " property alias theText: t.text\n" " default alias property yPos: t.y\n" @@ -2669,7 +2669,7 @@ void tst_TestCore::testRewriterPropertyAliases() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2682,7 +2682,7 @@ void tst_TestCore::testRewriterPropertyAliases() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QList<AbstractProperty> properties = rootModelNode.properties(); QCOMPARE(properties.size(), 0); // TODO: How to represent alias properties? As Bindings? @@ -2691,7 +2691,7 @@ void tst_TestCore::testRewriterPropertyAliases() void tst_TestCore::testRewriterPositionAndOffset() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " id: root\n" @@ -2729,7 +2729,7 @@ void tst_TestCore::testRewriterPositionAndOffset() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2742,7 +2742,7 @@ void tst_TestCore::testRewriterPositionAndOffset() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Rectangle")); QString string = QString(qmlString).mid(testRewriterView->nodeOffset(rootNode), testRewriterView->nodeLength(rootNode)); const QString qmlExpected0("Rectangle {\n" @@ -2808,7 +2808,7 @@ void tst_TestCore::testRewriterPositionAndOffset() void tst_TestCore::testRewriterComponentTextModifier() { - const QString qmlString("import Qt 4.7\n" + const QString qmlString("import QtQuick 1.0\n" "Rectangle {\n" " id: root\n" " x: 10;\n" @@ -2831,7 +2831,7 @@ void tst_TestCore::testRewriterComponentTextModifier() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2844,7 +2844,7 @@ void tst_TestCore::testRewriterComponentTextModifier() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Rectangle")); ModelNode componentNode = rootNode.allDirectSubModelNodes().last(); @@ -2855,7 +2855,7 @@ void tst_TestCore::testRewriterComponentTextModifier() ComponentTextModifier componentTextModifier(&textModifier, componentStartOffset, componentEndOffset, rootStartOffset); - const QString qmlExpected("import Qt 4.7\n" + const QString qmlExpected("import QtQuick 1.0\n" " " " " " " @@ -2876,19 +2876,19 @@ void tst_TestCore::testRewriterComponentTextModifier() QCOMPARE(componentTextModifier.text(), qmlExpected); - QScopedPointer<Model> componentModel(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> componentModel(Model::create("QtQuick/Item", 1, 0)); QScopedPointer<TestRewriterView> testRewriterViewComponent(new TestRewriterView()); testRewriterViewComponent->setTextModifier(&componentTextModifier); componentModel->attachView(testRewriterViewComponent.data()); ModelNode componentrootNode = testRewriterViewComponent->rootModelNode(); QVERIFY(componentrootNode.isValid()); - QCOMPARE(componentrootNode.type(), QLatin1String("Qt/Component")); + QCOMPARE(componentrootNode.type(), QLatin1String("QtQuick/Component")); } void tst_TestCore::testRewriterPreserveType() { - const QString qmlString("import Qt 4.7\n" + const QString qmlString("import QtQuick 1.0\n" "Rectangle {\n" " id: root\n" " Text {\n" @@ -2901,7 +2901,7 @@ void tst_TestCore::testRewriterPreserveType() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2914,7 +2914,7 @@ void tst_TestCore::testRewriterPreserveType() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Rectangle")); ModelNode textNode = rootNode.allDirectSubModelNodes().first(); QCOMPARE(QVariant::Bool, textNode.variantProperty("font.bold").value().type()); @@ -2923,7 +2923,7 @@ void tst_TestCore::testRewriterPreserveType() textNode.variantProperty("font.bold") = QVariant(true); textNode.variantProperty("font.pointSize") = QVariant(13.0); - ModelNode newTextNode = addNodeListChild(rootNode, "Qt/Text", 4, 7, "data"); + ModelNode newTextNode = addNodeListChild(rootNode, "QtQuick/Text", 1, 0, "data"); newTextNode.variantProperty("font.bold") = QVariant(true); newTextNode.variantProperty("font.pointSize") = QVariant(13.0); @@ -2935,7 +2935,7 @@ void tst_TestCore::testRewriterPreserveType() void tst_TestCore::testRewriterForArrayMagic() { try { - const QLatin1String qmlString("import Qt 4.7\n" + const QLatin1String qmlString("import QtQuick 1.0\n" "\n" "Rectangle {\n" " states: State {\n" @@ -2946,7 +2946,7 @@ void tst_TestCore::testRewriterForArrayMagic() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -2959,16 +2959,16 @@ void tst_TestCore::testRewriterForArrayMagic() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); QVERIFY(rootNode.property(QLatin1String("states")).isNodeListProperty()); QmlItemNode rootItem(rootNode); QVERIFY(rootItem.isValid()); QmlModelState state1(rootItem.states().addState("s2")); - QCOMPARE(state1.modelNode().type(), QString("Qt/State")); + QCOMPARE(state1.modelNode().type(), QString("QtQuick/State")); - const QLatin1String expected("import Qt 4.7\n" + const QLatin1String expected("import QtQuick 1.0\n" "\n" "Rectangle {\n" " states: [\n" @@ -2989,7 +2989,7 @@ void tst_TestCore::testRewriterForArrayMagic() void tst_TestCore::testRewriterWithSignals() { - const QLatin1String qmlString("import Qt 4.7\n" + const QLatin1String qmlString("import QtQuick 1.0\n" "\n" "TextEdit {\n" " onTextChanged: { print(\"foo\"); }\n" @@ -2998,7 +2998,7 @@ void tst_TestCore::testRewriterWithSignals() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -3011,7 +3011,7 @@ void tst_TestCore::testRewriterWithSignals() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/TextEdit")); + QCOMPARE(rootNode.type(), QString("QtQuick/TextEdit")); QmlItemNode rootItem(rootNode); QVERIFY(rootItem.isValid()); @@ -3021,7 +3021,7 @@ void tst_TestCore::testRewriterWithSignals() void tst_TestCore::testRewriterNodeSliding() { - const QLatin1String qmlString("import Qt 4.7\n" + const QLatin1String qmlString("import QtQuick 1.0\n" "Rectangle {\n" " id: root\n" " Rectangle {\n" @@ -3041,7 +3041,7 @@ void tst_TestCore::testRewriterNodeSliding() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -3054,7 +3054,7 @@ void tst_TestCore::testRewriterNodeSliding() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Rectangle")); QCOMPARE(rootNode.id(), QLatin1String("root")); QCOMPARE(rootNode.nodeListProperty(QLatin1String("data")).toModelNodeList().at(0).id(), QLatin1String("rectangle1")); @@ -3073,7 +3073,7 @@ void tst_TestCore::testRewriterNodeSliding() void tst_TestCore::testRewriterExceptionHandling() { - const QLatin1String qmlString("import Qt 4.7\n" + const QLatin1String qmlString("import QtQuick 1.0\n" "Text {\n" "}"); @@ -3081,7 +3081,7 @@ void tst_TestCore::testRewriterExceptionHandling() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Text", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Text", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -3094,7 +3094,7 @@ void tst_TestCore::testRewriterExceptionHandling() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Text")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Text")); try { @@ -3105,7 +3105,7 @@ void tst_TestCore::testRewriterExceptionHandling() QFAIL("RewritingException should be thrown"); } catch (RewritingException &e) { QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Text")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Text")); QVERIFY(!rootNode.hasProperty("bla")); QVERIFY(!rootNode.hasProperty("text")); } @@ -3113,7 +3113,7 @@ void tst_TestCore::testRewriterExceptionHandling() void tst_TestCore::testRewriterFirstDefinitionInside() { - const QString qmlString("import Qt 4.7\n" + const QString qmlString("import QtQuick 1.0\n" "Rectangle {\n" " id: root\n" " x: 10;\n" @@ -3137,7 +3137,7 @@ void tst_TestCore::testRewriterFirstDefinitionInside() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -3150,7 +3150,7 @@ void tst_TestCore::testRewriterFirstDefinitionInside() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Rectangle")); ModelNode componentNode = rootNode.allDirectSubModelNodes().last(); @@ -3169,7 +3169,7 @@ void tst_TestCore::testRewriterFirstDefinitionInside() void tst_TestCore::testCopyModelRewriter1() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " id: root\n" @@ -3207,7 +3207,7 @@ void tst_TestCore::testCopyModelRewriter1() textEdit1.setPlainText(qmlString); NotIndentingTextEditModifier textModifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model1(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model1.data()); QScopedPointer<TestView> view1(new TestView(model1.data())); @@ -3220,13 +3220,13 @@ void tst_TestCore::testCopyModelRewriter1() ModelNode rootNode1 = view1->rootModelNode(); QVERIFY(rootNode1.isValid()); - QCOMPARE(rootNode1.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode1.type(), QLatin1String("QtQuick/Rectangle")); QPlainTextEdit textEdit2; textEdit2.setPlainText(qmlString); NotIndentingTextEditModifier textModifier2(&textEdit2); - QScopedPointer<Model> model2(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model2(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model2.data()); QScopedPointer<TestView> view2(new TestView(model2.data())); @@ -3239,7 +3239,7 @@ void tst_TestCore::testCopyModelRewriter1() ModelNode rootNode2 = view2->rootModelNode(); QVERIFY(rootNode2.isValid()); - QCOMPARE(rootNode2.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode2.type(), QLatin1String("QtQuick/Rectangle")); // @@ -3264,7 +3264,7 @@ void tst_TestCore::testCopyModelRewriter1() const QLatin1String expected( "\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " id: root\n" @@ -3339,7 +3339,7 @@ void tst_TestCore::testCopyModelRewriter1() void tst_TestCore::testCopyModelRewriter2() { const QLatin1String qmlString1("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "id: root\n" @@ -3379,7 +3379,7 @@ void tst_TestCore::testCopyModelRewriter2() const QLatin1String qmlString2("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "}"); @@ -3388,7 +3388,7 @@ void tst_TestCore::testCopyModelRewriter2() textEdit1.setPlainText(qmlString1); NotIndentingTextEditModifier textModifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model1(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model1.data()); QScopedPointer<TestView> view1(new TestView(model1.data())); @@ -3401,7 +3401,7 @@ void tst_TestCore::testCopyModelRewriter2() ModelNode rootNode1 = view1->rootModelNode(); QVERIFY(rootNode1.isValid()); - QCOMPARE(rootNode1.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode1.type(), QLatin1String("QtQuick/Rectangle")); // read in 2 @@ -3410,7 +3410,7 @@ void tst_TestCore::testCopyModelRewriter2() textEdit2.setPlainText(qmlString2); NotIndentingTextEditModifier textModifier2(&textEdit2); - QScopedPointer<Model> model2(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model2(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model2.data()); QScopedPointer<TestView> view2(new TestView(model2.data())); @@ -3422,7 +3422,7 @@ void tst_TestCore::testCopyModelRewriter2() ModelNode rootNode2 = view2->rootModelNode(); QVERIFY(rootNode2.isValid()); - QCOMPARE(rootNode2.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode2.type(), QLatin1String("QtQuick/Rectangle")); // @@ -3431,7 +3431,7 @@ void tst_TestCore::testCopyModelRewriter2() merger.replaceModel(rootNode1); QVERIFY(rootNode2.isValid()); - QCOMPARE(rootNode2.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode2.type(), QLatin1String("QtQuick/Rectangle")); QCOMPARE(textEdit2.toPlainText(), qmlString1); } @@ -3446,7 +3446,7 @@ void tst_TestCore::testSubComponentManager() textEdit.setPlainText(file.readAll()); NotIndentingTextEditModifier modifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); model->setFileUrl(QUrl::fromLocalFile(fileName)); QScopedPointer<SubComponentManager> subComponentManager(new SubComponentManager(model->metaInfo(), 0)); subComponentManager->update(QUrl::fromLocalFile(fileName), modifier.text().toUtf8()); @@ -3460,9 +3460,9 @@ void tst_TestCore::testSubComponentManager() QVERIFY(testRewriterView->rootModelNode().isValid()); - QVERIFY(model->metaInfo().nodeMetaInfo("Qt/Rectangle").properties(true).keys().contains("border.width")); + QVERIFY(model->metaInfo().nodeMetaInfo("QtQuick/Rectangle").properties(true).keys().contains("border.width")); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Pen")); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/Pen")); NodeMetaInfo myButtonMetaInfo = model->metaInfo().nodeMetaInfo("MyButton"); QVERIFY(myButtonMetaInfo.isValid()); QVERIFY(myButtonMetaInfo.properties(true).keys().contains("border.width")); @@ -3471,7 +3471,7 @@ void tst_TestCore::testSubComponentManager() void tst_TestCore::testAnchorsAndRewriting() { - const QString qmlString("import Qt 4.7\n" + const QString qmlString("import QtQuick 1.0\n" "Rectangle {\n" " id: root\n" " x: 10;\n" @@ -3494,7 +3494,7 @@ void tst_TestCore::testAnchorsAndRewriting() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -3507,7 +3507,7 @@ void tst_TestCore::testAnchorsAndRewriting() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Rectangle")); QmlItemNode rootItemNode = view->rootQmlItemNode(); QVERIFY(rootItemNode.isValid()); @@ -3532,7 +3532,7 @@ void tst_TestCore::testAnchorsAndRewriting() void tst_TestCore::testAnchorsAndRewritingCenter() { - const QString qmlString("import Qt 4.7\n" + const QString qmlString("import QtQuick 1.0\n" "Rectangle {\n" " id: root\n" " x: 10;\n" @@ -3555,7 +3555,7 @@ void tst_TestCore::testAnchorsAndRewritingCenter() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -3568,7 +3568,7 @@ void tst_TestCore::testAnchorsAndRewritingCenter() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Rectangle")); QmlItemNode rootItemNode = view->rootQmlItemNode(); QVERIFY(rootItemNode.isValid()); @@ -3582,7 +3582,7 @@ void tst_TestCore::testAnchorsAndRewritingCenter() void tst_TestCore::loadQml() { -char qmlString[] = "import Qt 4.7\n" +char qmlString[] = "import QtQuick 1.0\n" "Rectangle {\n" "id: root;\n" "width: 200;\n" @@ -3623,7 +3623,7 @@ char qmlString[] = "import Qt 4.7\n" textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -3632,14 +3632,14 @@ char qmlString[] = "import Qt 4.7\n" ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Item")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); testRewriterView->setTextModifier(&textModifier); model->attachView(testRewriterView.data()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootModelNode.type(), QString("QtQuick/Rectangle")); QCOMPARE(rootModelNode.id(), QString("root")); QCOMPARE(rootModelNode.variantProperty("width").value().toInt(), 200); QCOMPARE(rootModelNode.variantProperty("height").value().toInt(), 200); @@ -3649,7 +3649,7 @@ char qmlString[] = "import Qt 4.7\n" QCOMPARE(rootModelNode.nodeListProperty("data").toModelNodeList().count(), 3); ModelNode textNode1 = rootModelNode.nodeListProperty("data").toModelNodeList().first(); QVERIFY(textNode1.isValid()); - QCOMPARE(textNode1.type(), QString("Qt/Text")); + QCOMPARE(textNode1.type(), QString("QtQuick/Text")); QCOMPARE(textNode1.id(), QString("text1")); QCOMPARE(textNode1.variantProperty("text").value().toString(), QString("Hello World")); QVERIFY(textNode1.hasProperty("anchors.centerIn")); @@ -3665,13 +3665,13 @@ char qmlString[] = "import Qt 4.7\n" ModelNode rectNode = rootModelNode.nodeListProperty("data").toModelNodeList().at(1); QVERIFY(rectNode.isValid()); - QCOMPARE(rectNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rectNode.type(), QString("QtQuick/Rectangle")); QCOMPARE(rectNode.id(), QString("rectangle")); QVERIFY(rectNode.hasProperty("gradient")); QVERIFY(rectNode.property("gradient").isNodeProperty()); ModelNode gradientNode = rectNode.nodeProperty("gradient").modelNode(); QVERIFY(gradientNode.isValid()); - QCOMPARE(gradientNode.type(), QString("Qt/Gradient")); + QCOMPARE(gradientNode.type(), QString("QtQuick/Gradient")); QVERIFY(gradientNode.hasProperty("stops")); QVERIFY(gradientNode.property("stops").isNodeListProperty()); QCOMPARE(gradientNode.nodeListProperty("stops").toModelNodeList().count(), 2); @@ -3682,15 +3682,15 @@ char qmlString[] = "import Qt 4.7\n" QVERIFY(stop1.isValid()); QVERIFY(stop2.isValid()); - QCOMPARE(stop1.type(), QString("Qt/GradientStop")); - QCOMPARE(stop2.type(), QString("Qt/GradientStop")); + QCOMPARE(stop1.type(), QString("QtQuick/GradientStop")); + QCOMPARE(stop2.type(), QString("QtQuick/GradientStop")); QCOMPARE(stop1.variantProperty("position").value().toInt(), 0); QCOMPARE(stop2.variantProperty("position").value().toInt(), 1); ModelNode textNode2 = rootModelNode.nodeListProperty("data").toModelNodeList().last(); QVERIFY(textNode2.isValid()); - QCOMPARE(textNode2.type(), QString("Qt/Text")); + QCOMPARE(textNode2.type(), QString("QtQuick/Text")); QCOMPARE(textNode2.id(), QString("text2")); QCOMPARE(textNode2.variantProperty("width").value().toInt(), 80); QCOMPARE(textNode2.variantProperty("height").value().toInt(), 20); @@ -3701,17 +3701,17 @@ char qmlString[] = "import Qt 4.7\n" void tst_TestCore::testMetaInfo() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); // test whether default type is registered - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Item", 4, 7)); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/Item", 1, 0)); // test whether types from plugins are registered QVERIFY(model->metaInfo().hasNodeMetaInfo("QtWebKit/WebView", 1, 0)); // test whether non-qml type is registered - QVERIFY(model->metaInfo().hasNodeMetaInfo("QGraphicsObject", 4, 7)); // Qt 4.7 namespace + QVERIFY(model->metaInfo().hasNodeMetaInfo("QGraphicsObject", 1, 0)); // Qt 4.7 namespace QVERIFY(model->metaInfo().hasNodeMetaInfo("QGraphicsObject", 1, 0)); // webkit 1.0 namespace } @@ -3723,20 +3723,20 @@ void tst_TestCore::testMetaInfoSimpleType() // qmlRegisterType<QDeclarativeItem>("Qt",4,7,"Item") // - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Item", 4, 7)); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Item", 4, 7)); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/Item", 1, 0)); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/Item", 1, 0)); - NodeMetaInfo itemMetaInfo = model->metaInfo().nodeMetaInfo("Qt/Item", 4, 7); - NodeMetaInfo itemMetaInfo2 = model->metaInfo().nodeMetaInfo("Qt/Item", 4, 7); + NodeMetaInfo itemMetaInfo = model->metaInfo().nodeMetaInfo("QtQuick/Item", 1, 0); + NodeMetaInfo itemMetaInfo2 = model->metaInfo().nodeMetaInfo("QtQuick/Item", 1, 0); QCOMPARE(itemMetaInfo, itemMetaInfo2); QVERIFY(itemMetaInfo.isValid()); - QCOMPARE(itemMetaInfo.typeName(), QLatin1String("Qt/Item")); - QCOMPARE(itemMetaInfo.majorVersion(), 4); - QCOMPARE(itemMetaInfo.minorVersion(), 7); + QCOMPARE(itemMetaInfo.typeName(), QLatin1String("QtQuick/Item")); + QCOMPARE(itemMetaInfo.majorVersion(), 1); + QCOMPARE(itemMetaInfo.minorVersion(), 0); // super classes NodeMetaInfo graphicsObjectInfo = itemMetaInfo.directSuperClass(); @@ -3745,17 +3745,15 @@ void tst_TestCore::testMetaInfoSimpleType() QCOMPARE(graphicsObjectInfo.majorVersion(), -1); QCOMPARE(graphicsObjectInfo.minorVersion(), -1); - QCOMPARE(itemMetaInfo.superClasses().size(), 2); // QGraphicsObject, Qt/QtObject - QVERIFY(itemMetaInfo.isSubclassOf("QGraphicsObject", 4, 7)); - QVERIFY(itemMetaInfo.isSubclassOf("Qt/QtObject", 4, 7)); + QCOMPARE(itemMetaInfo.superClasses().size(), 2); // QGraphicsObject, QtQuick/QtObject + QVERIFY(itemMetaInfo.isSubclassOf("QGraphicsObject", 1, 0)); + QVERIFY(itemMetaInfo.isSubclassOf("QtQuick/QtObject", 1, 0)); // availableInVersion - QVERIFY(itemMetaInfo.availableInVersion(4, 7)); - QVERIFY(itemMetaInfo.availableInVersion(4, 8)); - QVERIFY(itemMetaInfo.availableInVersion(5, 0)); + QVERIFY(itemMetaInfo.availableInVersion(1, 0)); QVERIFY(itemMetaInfo.availableInVersion(-1, -1)); - QVERIFY(!itemMetaInfo.availableInVersion(4, 6)); - QVERIFY(!itemMetaInfo.availableInVersion(3, 7)); + QVERIFY(!itemMetaInfo.availableInVersion(0, 8)); + QVERIFY(!itemMetaInfo.availableInVersion(0, 9)); } void tst_TestCore::testMetaInfoUncreatableType() @@ -3765,23 +3763,23 @@ void tst_TestCore::testMetaInfoUncreatableType() // qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("Qt",4,7,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class")); // - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Animation")); - NodeMetaInfo animationTypeInfo = model->metaInfo().nodeMetaInfo("Qt/Animation", 4, 7); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/Animation")); + NodeMetaInfo animationTypeInfo = model->metaInfo().nodeMetaInfo("QtQuick/Animation", 1, 0); QVERIFY(animationTypeInfo.isValid()); QVERIFY(animationTypeInfo.isValid()); - QCOMPARE(animationTypeInfo.typeName(), QLatin1String("Qt/Animation")); - QCOMPARE(animationTypeInfo.majorVersion(), 4); - QCOMPARE(animationTypeInfo.minorVersion(), 7); + QCOMPARE(animationTypeInfo.typeName(), QLatin1String("QtQuick/Animation")); + QCOMPARE(animationTypeInfo.majorVersion(), 1); + QCOMPARE(animationTypeInfo.minorVersion(), 0); NodeMetaInfo qObjectTypeInfo = animationTypeInfo.directSuperClass(); QVERIFY(qObjectTypeInfo.isValid()); - QCOMPARE(qObjectTypeInfo.typeName(), QLatin1String("Qt/QtObject")); - QCOMPARE(qObjectTypeInfo.majorVersion(), 4); - QCOMPARE(qObjectTypeInfo.minorVersion(), 7); + QCOMPARE(qObjectTypeInfo.typeName(), QLatin1String("QtQuick/QtObject")); + QCOMPARE(qObjectTypeInfo.majorVersion(), 1); + QCOMPARE(qObjectTypeInfo.minorVersion(), 0); QCOMPARE(animationTypeInfo.superClasses().size(), 1); } @@ -3792,11 +3790,11 @@ void tst_TestCore::testMetaInfoExtendedType() // qmlRegisterExtendedType<QGraphicsWidget,QDeclarativeGraphicsWidget>("Qt",4,7,"QGraphicsWidget"); // - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/QGraphicsWidget")); - NodeMetaInfo graphicsWidgetTypeInfo = model->metaInfo().nodeMetaInfo("Qt/QGraphicsWidget", 4, 7); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/QGraphicsWidget")); + NodeMetaInfo graphicsWidgetTypeInfo = model->metaInfo().nodeMetaInfo("QtQuick/QGraphicsWidget", 1, 0); QVERIFY(graphicsWidgetTypeInfo.isValid()); QVERIFY(graphicsWidgetTypeInfo.hasProperty("layout")); // from QGraphicsWidgetDeclarativeUI QVERIFY(graphicsWidgetTypeInfo.hasProperty("font")); // from QGraphicsWidget @@ -3822,13 +3820,13 @@ void tst_TestCore::testMetaInfoCustomType() { // Test type registered with qmlRegisterCustomType: // - // qmlRegisterCustomType<QDeclarativePropertyChanges>("Qt", 4, 7, "PropertyChanges", new QDeclarativePropertyChangesParser); + // qmlRegisterCustomType<QDeclarativePropertyChanges>("Qt", 1, 0, "PropertyChanges", new QDeclarativePropertyChangesParser); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/PropertyChanges")); - NodeMetaInfo propertyChangesInfo = model->metaInfo().nodeMetaInfo("Qt/PropertyChanges", 4, 7); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/PropertyChanges")); + NodeMetaInfo propertyChangesInfo = model->metaInfo().nodeMetaInfo("QtQuick/PropertyChanges", 1, 0); QVERIFY(propertyChangesInfo.isValid()); QVERIFY(propertyChangesInfo.hasProperty("target")); // from QDeclarativePropertyChanges QVERIFY(propertyChangesInfo.hasProperty("restoreEntryValues")); // from QDeclarativePropertyChanges @@ -3847,14 +3845,14 @@ void tst_TestCore::testMetaInfoCustomType() void tst_TestCore::testMetaInfoEnums() { - QScopedPointer<Model> model(Model::create("Qt/Text")); + QScopedPointer<Model> model(Model::create("QtQuick/Text")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); model->attachView(view.data()); - QCOMPARE(view->rootModelNode().metaInfo().typeName(), QString("Qt/Text")); + QCOMPARE(view->rootModelNode().metaInfo().typeName(), QString("QtQuick/Text")); QVERIFY(view->rootModelNode().metaInfo().hasProperty("transformOrigin")); @@ -3871,14 +3869,14 @@ void tst_TestCore::testMetaInfoEnums() void tst_TestCore::testMetaInfoProperties() { - QScopedPointer<Model> model(Model::create("Qt/Text")); + QScopedPointer<Model> model(Model::create("QtQuick/Text")); QVERIFY(model.data()); - NodeMetaInfo textNodeMetaInfo = model->metaInfo().nodeMetaInfo("Qt/TextEdit", 4, 7); + NodeMetaInfo textNodeMetaInfo = model->metaInfo().nodeMetaInfo("QtQuick/TextEdit", 1, 0); QVERIFY(textNodeMetaInfo.hasProperty("text")); // QDeclarativeTextEdit QVERIFY(textNodeMetaInfo.hasProperty("parent")); // QDeclarativeItem QVERIFY(textNodeMetaInfo.hasProperty("x")); // QGraphicsObject - QVERIFY(textNodeMetaInfo.hasProperty("objectName")); // Qt/QObject + QVERIFY(textNodeMetaInfo.hasProperty("objectName")); // QtQuick/QObject QVERIFY(!textNodeMetaInfo.hasProperty("bla")); QVERIFY(textNodeMetaInfo.property("text").isValid()); @@ -3891,18 +3889,18 @@ void tst_TestCore::testMetaInfoProperties() void tst_TestCore::testMetaInfoDotProperties() { - QScopedPointer<Model> model(Model::create("Qt/Text")); + QScopedPointer<Model> model(Model::create("QtQuick/Text")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); model->attachView(view.data()); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Text")); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/Text")); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Pen")); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/Pen")); - QCOMPARE(view->rootModelNode().metaInfo().typeName(), QString("Qt/Text")); + QCOMPARE(view->rootModelNode().metaInfo().typeName(), QString("QtQuick/Text")); QVERIFY(!view->rootModelNode().metaInfo().property("text").isValueType()); QVERIFY(view->rootModelNode().metaInfo().hasProperty("font")); QVERIFY(view->rootModelNode().metaInfo().property("font").isValueType()); @@ -3914,7 +3912,7 @@ void tst_TestCore::testMetaInfoDotProperties() QVERIFY(view->rootModelNode().metaInfo().hasProperty("font.pointSize", true)); QVERIFY(view->rootModelNode().metaInfo().property("font.pointSize", true).isValid()); - ModelNode rectNode(addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data")); + ModelNode rectNode(addNodeListChild(view->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data")); QVERIFY(rectNode.metaInfo().properties(true).keys().contains("pos.x")); @@ -3933,15 +3931,15 @@ void tst_TestCore::testMetaInfoDotProperties() void tst_TestCore::testMetaInfoListProperties() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); model->attachView(view.data()); - QVERIFY(model->metaInfo().hasNodeMetaInfo("Qt/Item")); - QCOMPARE(view->rootModelNode().metaInfo().typeName(), QString("Qt/Item")); + QVERIFY(model->metaInfo().hasNodeMetaInfo("QtQuick/Item")); + QCOMPARE(view->rootModelNode().metaInfo().typeName(), QString("QtQuick/Item")); QVERIFY(view->rootModelNode().metaInfo().hasProperty("states")); QVERIFY(view->rootModelNode().metaInfo().property("states").isListProperty()); @@ -3965,10 +3963,10 @@ void tst_TestCore::testMetaInfoListProperties() void tst_TestCore::testStatesRewriter() { QPlainTextEdit textEdit; - textEdit.setPlainText("import Qt 4.7; Item {}\n"); + textEdit.setPlainText("import QtQuick 1.0; Item {}\n"); NotIndentingTextEditModifier modifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); @@ -4012,10 +4010,10 @@ void tst_TestCore::testStatesRewriter() void tst_TestCore::testGradientsRewriter() { QPlainTextEdit textEdit; - textEdit.setPlainText("\nimport Qt 4.7\n\nItem {\n}\n"); + textEdit.setPlainText("\nimport QtQuick 1.0\n\nItem {\n}\n"); NotIndentingTextEditModifier modifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); @@ -4031,9 +4029,9 @@ void tst_TestCore::testGradientsRewriter() QVERIFY(rootModelNode.isValid()); - ModelNode rectNode(addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data")); + ModelNode rectNode(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data")); - const QLatin1String expected1("\nimport Qt 4.7\n" + const QLatin1String expected1("\nimport QtQuick 1.0\n" "\n" "Item {\n" "Rectangle {\n" @@ -4041,11 +4039,11 @@ void tst_TestCore::testGradientsRewriter() "}\n"); QCOMPARE(textEdit.toPlainText(), expected1); - ModelNode gradientNode(addNodeChild(rectNode, "Qt/Gradient", 4, 7, "gradient")); + ModelNode gradientNode(addNodeChild(rectNode, "QtQuick/Gradient", 1, 0, "gradient")); QVERIFY(rectNode.hasNodeProperty("gradient")); - const QLatin1String expected2("\nimport Qt 4.7\n" + const QLatin1String expected2("\nimport QtQuick 1.0\n" "\n" "Item {\n" "Rectangle {\n" @@ -4062,11 +4060,11 @@ void tst_TestCore::testGradientsRewriter() propertyList.append(qMakePair(QString("position"), QVariant::fromValue(0))); propertyList.append(qMakePair(QString("color"), QVariant::fromValue(QColor(Qt::red)))); - ModelNode gradientStop1(gradientNode.view()->createModelNode("Qt/GradientStop", 4, 7, propertyList)); + ModelNode gradientStop1(gradientNode.view()->createModelNode("QtQuick/GradientStop", 1, 0, propertyList)); QVERIFY(gradientStop1.isValid()); stops.reparentHere(gradientStop1); - const QLatin1String expected3("\nimport Qt 4.7\n" + const QLatin1String expected3("\nimport QtQuick 1.0\n" "\n" "Item {\n" "Rectangle {\n" @@ -4085,11 +4083,11 @@ void tst_TestCore::testGradientsRewriter() propertyList.append(qMakePair(QString("position"), QVariant::fromValue(0.5))); propertyList.append(qMakePair(QString("color"), QVariant::fromValue(QColor(Qt::blue)))); - ModelNode gradientStop2(gradientNode.view()->createModelNode("Qt/GradientStop", 4, 7, propertyList)); + ModelNode gradientStop2(gradientNode.view()->createModelNode("QtQuick/GradientStop", 1, 0, propertyList)); QVERIFY(gradientStop2.isValid()); stops.reparentHere(gradientStop2); - const QLatin1String expected4("\nimport Qt 4.7\n" + const QLatin1String expected4("\nimport QtQuick 1.0\n" "\n" "Item {\n" "Rectangle {\n" @@ -4113,11 +4111,11 @@ void tst_TestCore::testGradientsRewriter() propertyList.append(qMakePair(QString("position"), QVariant::fromValue(0.8))); propertyList.append(qMakePair(QString("color"), QVariant::fromValue(QColor(Qt::yellow)))); - ModelNode gradientStop3(gradientNode.view()->createModelNode("Qt/GradientStop", 4, 7, propertyList)); + ModelNode gradientStop3(gradientNode.view()->createModelNode("QtQuick/GradientStop", 1, 0, propertyList)); QVERIFY(gradientStop3.isValid()); stops.reparentHere(gradientStop3); - const QLatin1String expected5("\nimport Qt 4.7\n" + const QLatin1String expected5("\nimport QtQuick 1.0\n" "\n" "Item {\n" "Rectangle {\n" @@ -4144,7 +4142,7 @@ void tst_TestCore::testGradientsRewriter() gradientNode.removeProperty("stops"); - const QLatin1String expected6("\nimport Qt 4.7\n" + const QLatin1String expected6("\nimport QtQuick 1.0\n" "\n" "Item {\n" "Rectangle {\n" @@ -4161,7 +4159,7 @@ void tst_TestCore::testGradientsRewriter() propertyList.append(qMakePair(QString("position"), QVariant::fromValue(0))); propertyList.append(qMakePair(QString("color"), QVariant::fromValue(QColor(Qt::blue)))); - gradientStop1 = gradientNode.view()->createModelNode("Qt/GradientStop", 4, 7, propertyList); + gradientStop1 = gradientNode.view()->createModelNode("QtQuick/GradientStop", 1, 0, propertyList); QVERIFY(gradientStop1.isValid()); stops.reparentHere(gradientStop1); @@ -4169,7 +4167,7 @@ void tst_TestCore::testGradientsRewriter() void tst_TestCore::testQmlModelStates() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); @@ -4202,7 +4200,7 @@ void tst_TestCore::testQmlModelStates() void tst_TestCore::testInstancesStates() { // -// import Qt 4.7 +// import QtQuick 1.0 // // Rectangle { // Text { @@ -4230,7 +4228,7 @@ void tst_TestCore::testInstancesStates() // } // - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); @@ -4241,28 +4239,28 @@ void tst_TestCore::testInstancesStates() // ModelNode rootNode = view->rootModelNode(); - ModelNode textNode = view->createModelNode("Qt/Text", 4, 7); + ModelNode textNode = view->createModelNode("QtQuick/Text", 1, 0); textNode.setId("targetObject"); textNode.variantProperty("text").setValue("base state"); rootNode.nodeListProperty("data").reparentHere(textNode); - ModelNode propertyChanges1Node = view->createModelNode("Qt/PropertyChanges", 4, 7); + ModelNode propertyChanges1Node = view->createModelNode("QtQuick/PropertyChanges", 1, 0); propertyChanges1Node.bindingProperty("target").setExpression("targetObject"); propertyChanges1Node.variantProperty("x").setValue(10); propertyChanges1Node.variantProperty("text").setValue("state1"); - ModelNode state1Node = view->createModelNode("Qt/State", 4, 7); + ModelNode state1Node = view->createModelNode("QtQuick/State", 1, 0); state1Node.variantProperty("name").setValue("state1"); state1Node.nodeListProperty("changes").reparentHere(propertyChanges1Node); rootNode.nodeListProperty("states").reparentHere(state1Node); - ModelNode propertyChanges2Node = view->createModelNode("Qt/PropertyChanges", 4, 7); + ModelNode propertyChanges2Node = view->createModelNode("QtQuick/PropertyChanges", 1, 0); propertyChanges2Node.bindingProperty("target").setExpression("targetObject"); propertyChanges2Node.variantProperty("text").setValue("state2"); - ModelNode state2Node = view->createModelNode("Qt/State", 4, 7); + ModelNode state2Node = view->createModelNode("QtQuick/State", 1, 0); state2Node.variantProperty("name").setValue("state2"); state2Node.nodeListProperty("changes").reparentHere(propertyChanges2Node); @@ -4359,7 +4357,7 @@ void tst_TestCore::testInstancesStates() // // move property changes of current state out of state - ModelNode state3Node = view->createModelNode("Qt/State", 4, 7); + ModelNode state3Node = view->createModelNode("QtQuick/State", 1, 0); QDeclarativeListReference changes(state1, "changes"); QCOMPARE(changes.count(), 1); state3Node.nodeListProperty("changes").reparentHere(propertyChanges1Node); @@ -4382,7 +4380,7 @@ void tst_TestCore::testInstancesStates() textNode.variantProperty("text").setValue("base state"); // expressions - ModelNode textNode2 = view->createModelNode("Qt/Text", 4, 7); + ModelNode textNode2 = view->createModelNode("QtQuick/Text", 1, 0); textNode2.setId("targetObject2"); textNode2.variantProperty("text").setValue("textNode2"); @@ -4442,7 +4440,7 @@ void tst_TestCore::testInstancesStates() void tst_TestCore::testStates() { // -// import Qt 4.7 +// import QtQuick 1.0 // // Rectangle { // Text { @@ -4461,7 +4459,7 @@ void tst_TestCore::testStates() // } // - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); @@ -4470,7 +4468,7 @@ void tst_TestCore::testStates() // build up model ModelNode rootNode = view->rootModelNode(); - ModelNode textNode = view->createModelNode("Qt/Text", 4, 7); + ModelNode textNode = view->createModelNode("QtQuick/Text", 1, 0); textNode.setId("targetObject"); textNode.variantProperty("text").setValue("base state"); @@ -4486,7 +4484,7 @@ void tst_TestCore::testStates() QVERIFY(textItem.isValid()); QmlModelState state1(rootItem.states().addState("state 1")); //add state "state 1" - QCOMPARE(state1.modelNode().type(), QString("Qt/State")); + QCOMPARE(state1.modelNode().type(), QString("QtQuick/State")); QVERIFY(view->currentState().isBaseState()); @@ -4519,7 +4517,7 @@ void tst_TestCore::testStates() QCOMPARE(changes.modelNode().variantProperty("text").value(), QVariant("state 1")); QCOMPARE(changes.modelNode().bindingProperty("target").expression(), QString("targetObject")); QCOMPARE(changes.target(), textNode); - QCOMPARE(changes.modelNode().type(), QString("Qt/PropertyChanges")); + QCOMPARE(changes.modelNode().type(), QString("QtQuick/PropertyChanges")); QCOMPARE(changes.modelNode().parentProperty().name(), QString("changes")); QCOMPARE(changes.modelNode().parentProperty().parentModelNode(), state1.modelNode()); @@ -4538,7 +4536,7 @@ void tst_TestCore::testStates() void tst_TestCore::testStatesBaseState() { // -// import Qt 4.7 +// import QtQuick 1.0 // // Rectangle { // Text { @@ -4557,7 +4555,7 @@ void tst_TestCore::testStatesBaseState() // } // - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); @@ -4566,7 +4564,7 @@ void tst_TestCore::testStatesBaseState() // build up model ModelNode rootNode = view->rootModelNode(); - ModelNode textNode = view->createModelNode("Qt/Text", 4, 7); + ModelNode textNode = view->createModelNode("QtQuick/Text", 1, 0); textNode.setId("targetObject"); textNode.variantProperty("text").setValue("base state"); @@ -4582,7 +4580,7 @@ void tst_TestCore::testStatesBaseState() QVERIFY(textItem.isValid()); QmlModelState state1(rootItem.states().addState("state 1")); //add state "state 1" - QCOMPARE(state1.modelNode().type(), QString("Qt/State")); + QCOMPARE(state1.modelNode().type(), QString("QtQuick/State")); QVERIFY(view->currentState().isBaseState()); @@ -4592,7 +4590,7 @@ void tst_TestCore::testStatesBaseState() QVERIFY(textItem.propertyAffectedByCurrentState("text")); QCOMPARE(textItem.instanceValue("text"), QVariant("state 1")); - ModelNode newNode = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode newNode = view->createModelNode("QtQuick/Rectangle", 1, 0); QVERIFY(!QmlObjectNode(newNode).currentState().isBaseState()); view->setCurrentState(view->baseState()); //set currentState base state @@ -4614,13 +4612,13 @@ void tst_TestCore::testStatesBaseState() void tst_TestCore::testInstancesIdResolution() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); model->attachView(view.data()); - // import Qt 4.7 + // import QtQuick 1.0 // // Rectangle { // id: root @@ -4638,7 +4636,7 @@ void tst_TestCore::testInstancesIdResolution() rootNode.variantProperty("width").setValue(100); rootNode.variantProperty("height").setValue(100); - ModelNode item1Node = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode item1Node = view->createModelNode("QtQuick/Rectangle", 1, 0); item1Node.setId("item1"); item1Node.bindingProperty("width").setExpression("root.width"); item1Node.bindingProperty("height").setExpression("item2.height"); @@ -4658,7 +4656,7 @@ void tst_TestCore::testInstancesIdResolution() // height: root.height // } - ModelNode item2Node = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode item2Node = view->createModelNode("QtQuick/Rectangle", 1, 0); item2Node.setId("item2"); item2Node.bindingProperty("width").setExpression("root.width / 2"); item2Node.bindingProperty("height").setExpression("root.height"); @@ -4683,7 +4681,7 @@ void tst_TestCore::testInstancesIdResolution() // height: 80 // } - ModelNode item3Node = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode item3Node = view->createModelNode("QtQuick/Rectangle", 1, 0); item3Node.setId("item3"); item3Node.variantProperty("height").setValue(80); rootNode.nodeListProperty("data").reparentHere(item3Node); @@ -4701,16 +4699,16 @@ void tst_TestCore::testInstancesNotInScene() // test whether deleting an instance which is not in the scene crashes // - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); model->attachView(view.data()); - ModelNode node1 = view->createModelNode("Qt/Item", 4, 7); + ModelNode node1 = view->createModelNode("QtQuick/Item", 1, 0); node1.setId("node1"); - ModelNode node2 = view->createModelNode("Qt/Item", 4, 7); + ModelNode node2 = view->createModelNode("QtQuick/Item", 1, 0); node2.setId("node2"); node1.nodeListProperty("children").reparentHere(node2); @@ -4722,21 +4720,21 @@ void tst_TestCore::testInstancesBindingsInStatesStress() { //This is a stress test to provoke a crash for (int j=0;j<20;j++) { - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); model->attachView(view.data()); - ModelNode node1 = view->createModelNode("Qt/Item", 4, 7); + ModelNode node1 = view->createModelNode("QtQuick/Item", 1, 0); node1.setId("node1"); view->rootModelNode().nodeListProperty("children").reparentHere(node1); - ModelNode node2 = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode node2 = view->createModelNode("QtQuick/Rectangle", 1, 0); node2.setId("node2"); - ModelNode node3 = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode node3 = view->createModelNode("QtQuick/Rectangle", 1, 0); node3.setId("node3"); node1.nodeListProperty("children").reparentHere(node2); @@ -4827,21 +4825,21 @@ void tst_TestCore::testInstancesPropertyChangeTargets() //this tests checks if a change of the target of a CropertyChange //node is handled correctly - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); model->attachView(view.data()); - ModelNode node1 = view->createModelNode("Qt/Item", 4, 7); + ModelNode node1 = view->createModelNode("QtQuick/Item", 1, 0); node1.setId("node1"); view->rootModelNode().nodeListProperty("children").reparentHere(node1); - ModelNode node2 = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode node2 = view->createModelNode("QtQuick/Rectangle", 1, 0); node2.setId("node2"); - ModelNode node3 = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode node3 = view->createModelNode("QtQuick/Rectangle", 1, 0); node3.setId("node3"); node1.nodeListProperty("children").reparentHere(node2); @@ -4933,21 +4931,21 @@ void tst_TestCore::testInstancesPropertyChangeTargets() void tst_TestCore::testInstancesDeletePropertyChanges() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); model->attachView(view.data()); - ModelNode node1 = view->createModelNode("Qt/Item", 4, 7); + ModelNode node1 = view->createModelNode("QtQuick/Item", 1, 0); node1.setId("node1"); view->rootModelNode().nodeListProperty("children").reparentHere(node1); - ModelNode node2 = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode node2 = view->createModelNode("QtQuick/Rectangle", 1, 0); node2.setId("node2"); - ModelNode node3 = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode node3 = view->createModelNode("QtQuick/Rectangle", 1, 0); node3.setId("node3"); node1.nodeListProperty("children").reparentHere(node2); @@ -5022,7 +5020,7 @@ void tst_TestCore::testInstancesDeletePropertyChanges() void tst_TestCore::testInstancesChildrenLowLevel() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<NodeInstanceView> view(new NodeInstanceView); @@ -5034,11 +5032,11 @@ void tst_TestCore::testInstancesChildrenLowLevel() rootModelNode.setId("rootModelNode"); - ModelNode childNode1 = addNodeListChild(rootModelNode, "Qt/Text", 4, 7, "data"); + ModelNode childNode1 = addNodeListChild(rootModelNode, "QtQuick/Text", 1, 0, "data"); QVERIFY(childNode1.isValid()); childNode1.setId("childNode1"); - ModelNode childNode2 = addNodeListChild(rootModelNode, "Qt/TextEdit", 4, 7, "data"); + ModelNode childNode2 = addNodeListChild(rootModelNode, "QtQuick/TextEdit", 1, 0, "data"); QVERIFY(childNode2.isValid()); childNode2.setId("childNode2"); @@ -5112,7 +5110,7 @@ void tst_TestCore::testInstancesChildrenLowLevel() void tst_TestCore::testInstancesResourcesLowLevel() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<NodeInstanceView> view(new NodeInstanceView); @@ -5124,15 +5122,15 @@ void tst_TestCore::testInstancesResourcesLowLevel() rootModelNode.setId("rootModelNode"); - ModelNode childNode1 = addNodeListChild(rootModelNode, "Qt/Text", 4, 7, "data"); + ModelNode childNode1 = addNodeListChild(rootModelNode, "QtQuick/Text", 1, 0, "data"); QVERIFY(childNode1.isValid()); childNode1.setId("childNode1"); - ModelNode childNode2 = addNodeListChild(rootModelNode, "Qt/TextEdit", 4, 7, "data"); + ModelNode childNode2 = addNodeListChild(rootModelNode, "QtQuick/TextEdit", 1, 0, "data"); QVERIFY(childNode2.isValid()); childNode2.setId("childNode2"); - ModelNode listModel = addNodeListChild(rootModelNode, "Qt/ListModel", 4, 7, "data"); + ModelNode listModel = addNodeListChild(rootModelNode, "QtQuick/ListModel", 1, 0, "data"); QVERIFY(listModel.isValid()); listModel.setId("listModel"); @@ -5188,6 +5186,8 @@ void tst_TestCore::testInstancesResourcesLowLevel() QCOMPARE(listReferenceData.at(1), child1Item); QCOMPARE(listReferenceData.at(2), child2Item); + QSKIP("This crashes", SkipAll); //### todo might be critical in the future + listReferenceChildren.clear(); QCOMPARE(listReferenceData.count(), 1); @@ -5209,7 +5209,7 @@ void tst_TestCore::testInstancesResourcesLowLevel() QCOMPARE(listReferenceData.at(1), child1Item); QCOMPARE(listReferenceData.at(2), child2Item); - ModelNode listModel2 = addNodeListChild(rootModelNode, "Qt/ListModel", 4, 7, "data"); + ModelNode listModel2 = addNodeListChild(rootModelNode, "QtQuick/ListModel", 1, 0, "data"); QVERIFY(listModel2.isValid()); listModel2.setId("listModel2"); @@ -5257,7 +5257,7 @@ void tst_TestCore::testInstancesResourcesLowLevel() void tst_TestCore::testInstancesFlickableLowLevel() { - QScopedPointer<Model> model(Model::create("Qt/Flickable", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Flickable", 1, 0)); QVERIFY(model.data()); QScopedPointer<NodeInstanceView> view(new NodeInstanceView); @@ -5269,15 +5269,15 @@ void tst_TestCore::testInstancesFlickableLowLevel() rootModelNode.setId("rootModelNode"); - ModelNode childNode1 = addNodeListChild(rootModelNode, "Qt/Text", 4, 7, "flickableData"); + ModelNode childNode1 = addNodeListChild(rootModelNode, "QtQuick/Text", 1, 0, "flickableData"); QVERIFY(childNode1.isValid()); childNode1.setId("childNode1"); - ModelNode childNode2 = addNodeListChild(rootModelNode, "Qt/TextEdit", 4, 7, "flickableData"); + ModelNode childNode2 = addNodeListChild(rootModelNode, "QtQuick/TextEdit", 1, 0, "flickableData"); QVERIFY(childNode2.isValid()); childNode2.setId("childNode2"); - ModelNode listModel = addNodeListChild(rootModelNode, "Qt/ListModel", 4, 7, "flickableData"); + ModelNode listModel = addNodeListChild(rootModelNode, "QtQuick/ListModel", 1, 0, "flickableData"); QVERIFY(listModel.isValid()); listModel.setId("listModel"); @@ -5345,7 +5345,7 @@ void tst_TestCore::testInstancesFlickableLowLevel() void tst_TestCore::testInstancesReorderChildrenLowLevel() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<NodeInstanceView> view(new NodeInstanceView); @@ -5357,23 +5357,23 @@ void tst_TestCore::testInstancesReorderChildrenLowLevel() rootModelNode.setId("rootModelNode"); - ModelNode childNode1 = addNodeListChild(rootModelNode, "Qt/Text", 4, 7, "data"); + ModelNode childNode1 = addNodeListChild(rootModelNode, "QtQuick/Text", 1, 0, "data"); QVERIFY(childNode1.isValid()); childNode1.setId("childNode1"); - ModelNode childNode2 = addNodeListChild(rootModelNode, "Qt/TextEdit", 4, 7, "data"); + ModelNode childNode2 = addNodeListChild(rootModelNode, "QtQuick/TextEdit", 1, 0, "data"); QVERIFY(childNode2.isValid()); childNode2.setId("childNode2"); - ModelNode listModel = addNodeListChild(rootModelNode, "Qt/ListModel", 4, 7, "data"); + ModelNode listModel = addNodeListChild(rootModelNode, "QtQuick/ListModel", 1, 0, "data"); QVERIFY(listModel.isValid()); listModel.setId("listModel"); - ModelNode childNode3 = addNodeListChild(rootModelNode, "Qt/TextEdit", 4, 7, "data"); + ModelNode childNode3 = addNodeListChild(rootModelNode, "QtQuick/TextEdit", 1, 0, "data"); QVERIFY(childNode3.isValid()); childNode3.setId("childNode3"); - ModelNode childNode4 = addNodeListChild(rootModelNode, "Qt/TextEdit", 4, 7, "data"); + ModelNode childNode4 = addNodeListChild(rootModelNode, "QtQuick/TextEdit", 1, 0, "data"); QVERIFY(childNode4.isValid()); childNode4.setId("childNode4"); @@ -5444,7 +5444,7 @@ void tst_TestCore::testInstancesReorderChildrenLowLevel() void tst_TestCore::testQmlModelStatesInvalidForRemovedNodes() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -5461,11 +5461,11 @@ void tst_TestCore::testQmlModelStatesInvalidForRemovedNodes() QVERIFY(state1.isValid()); QCOMPARE(state1.name(), QString("state1")); - ModelNode childNode = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(childNode.isValid()); childNode.setId("childNode"); - ModelNode subChildNode = addNodeListChild(childNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode subChildNode = addNodeListChild(childNode, "QtQuick/Rectangle", 1, 0, "data"); QVERIFY(subChildNode.isValid()); subChildNode.setId("subChildNode"); @@ -5485,7 +5485,7 @@ void tst_TestCore::testInstancesAttachToExistingModel() // Test attaching nodeinstanceview to an existing model // - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -5493,7 +5493,7 @@ void tst_TestCore::testInstancesAttachToExistingModel() model->attachView(view.data()); ModelNode rootNode = view->rootModelNode(); - ModelNode rectangleNode = addNodeListChild(rootNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode rectangleNode = addNodeListChild(rootNode, "QtQuick/Rectangle", 1, 0, "data"); rectangleNode.variantProperty("width").setValue(100); @@ -5518,7 +5518,7 @@ void tst_TestCore::testInstancesAttachToExistingModel() void tst_TestCore::testQmlModelAddMultipleStates() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -5549,7 +5549,7 @@ void tst_TestCore::testQmlModelAddMultipleStates() void tst_TestCore::testQmlModelRemoveStates() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle", 1, 0)); QScopedPointer<TestView> view(new TestView(model.data())); QVERIFY(view.data()); @@ -5579,10 +5579,10 @@ void tst_TestCore::testQmlModelRemoveStates() void tst_TestCore::testQmlModelStateWithName() { QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Rectangle { id: theRect; width: 100; states: [ State { name: \"a\"; PropertyChanges { target: theRect; width: 200; } } ] }\n"); + textEdit1.setPlainText("import QtQuick 1.0; Rectangle { id: theRect; width: 100; states: [ State { name: \"a\"; PropertyChanges { target: theRect; width: 200; } } ] }\n"); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item")); + QScopedPointer<Model> model1(Model::create("QtQuick/Item")); TestRewriterView *testRewriterView1 = new TestRewriterView(model1.data()); testRewriterView1->setTextModifier(&modifier1); @@ -5604,7 +5604,7 @@ void tst_TestCore::testQmlModelStateWithName() view->setCurrentState(rootNode.states().allStates().at(0)); rootNode.setVariantProperty("width", 112); - const QLatin1String expected1("import Qt 4.7; Rectangle { id: theRect; width: 100; states: [ State { name: \"a\"; PropertyChanges { target: theRect; width: 112 } } ] }\n"); + const QLatin1String expected1("import QtQuick 1.0; Rectangle { id: theRect; width: 100; states: [ State { name: \"a\"; PropertyChanges { target: theRect; width: 112 } } ] }\n"); QCOMPARE(textEdit1.toPlainText(), expected1); QVERIFY(!rootNode.isInBaseState()); @@ -5624,10 +5624,10 @@ void tst_TestCore::testQmlModelStateWithName() void tst_TestCore::testRewriterAutomaticSemicolonAfterChangedProperty() { QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Rectangle {\n width: 640\n height: 480\n}\n"); + textEdit1.setPlainText("import QtQuick 1.0; Rectangle {\n width: 640\n height: 480\n}\n"); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item")); + QScopedPointer<Model> model1(Model::create("QtQuick/Item")); TestRewriterView *testRewriterView1 = new TestRewriterView(model1.data()); testRewriterView1->setTextModifier(&modifier1); @@ -5644,7 +5644,7 @@ void tst_TestCore::testRewriterAutomaticSemicolonAfterChangedProperty() void tst_TestCore::defaultPropertyValues() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -5654,12 +5654,12 @@ void tst_TestCore::defaultPropertyValues() QCOMPARE(view->rootModelNode().variantProperty("x").value().toDouble(), 0.0); QCOMPARE(view->rootModelNode().variantProperty("width").value().toDouble(), 0.0); - ModelNode rectNode(addNodeListChild(view->rootModelNode(), "Qt/Rectangle", 4, 7, "data")); + ModelNode rectNode(addNodeListChild(view->rootModelNode(), "QtQuick/Rectangle", 1, 0, "data")); QCOMPARE(rectNode.variantProperty("y").value().toDouble(), 0.0); QCOMPARE(rectNode.variantProperty("width").value().toDouble(), 0.0); - ModelNode imageNode(addNodeListChild(view->rootModelNode(), "Qt/Image", 4, 7, "data")); + ModelNode imageNode(addNodeListChild(view->rootModelNode(), "QtQuick/Image", 1, 0, "data")); QCOMPARE(imageNode.variantProperty("y").value().toDouble(), 0.0); QCOMPARE(imageNode.variantProperty("width").value().toDouble(), 0.0); @@ -5668,10 +5668,10 @@ void tst_TestCore::defaultPropertyValues() void tst_TestCore::testModelPropertyValueTypes() { QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Rectangle { width: 100; radius: 1.5; color: \"red\"; }"); + textEdit1.setPlainText("import QtQuick 1.0; Rectangle { width: 100; radius: 1.5; color: \"red\"; }"); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model1(Model::create("Qt/Item")); + QScopedPointer<Model> model1(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -5689,7 +5689,7 @@ void tst_TestCore::testModelPropertyValueTypes() void tst_TestCore::testModelNodeInHierarchy() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -5697,9 +5697,9 @@ void tst_TestCore::testModelNodeInHierarchy() model->attachView(view.data()); QVERIFY(view->rootModelNode().isInHierarchy()); - ModelNode node1 = addNodeListChild(view->rootModelNode(), "Qt/Item", 4, 7, "data"); + ModelNode node1 = addNodeListChild(view->rootModelNode(), "QtQuick/Item", 1, 0, "data"); QVERIFY(node1.isInHierarchy()); - ModelNode node2 = view->createModelNode("Qt/Item", 4, 7); + ModelNode node2 = view->createModelNode("QtQuick/Item", 1, 0); QVERIFY(!node2.isInHierarchy()); node2.nodeListProperty("data").reparentHere(node1); QVERIFY(!node2.isInHierarchy()); @@ -5710,11 +5710,11 @@ void tst_TestCore::testModelNodeInHierarchy() void tst_TestCore::testModelNodeIsAncestorOf() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); // - // import Qt 4.7 + // import QtQuick 1.0 // Item { // Item { // id: item2 @@ -5732,11 +5732,11 @@ void tst_TestCore::testModelNodeIsAncestorOf() model->attachView(view.data()); view->rootModelNode().setId("item1"); - ModelNode item2 = addNodeListChild(view->rootModelNode(), "Qt/Item", 4, 7, "data"); + ModelNode item2 = addNodeListChild(view->rootModelNode(), "QtQuick/Item", 1, 0, "data"); item2.setId("item2"); - ModelNode item3 = addNodeListChild(view->rootModelNode(), "Qt/Item", 4, 7, "data"); + ModelNode item3 = addNodeListChild(view->rootModelNode(), "QtQuick/Item", 1, 0, "data"); item3.setId("item3"); - ModelNode item4 = addNodeListChild(item3, "Qt/Item", 4, 7, "data"); + ModelNode item4 = addNodeListChild(item3, "QtQuick/Item", 1, 0, "data"); item4.setId("item4"); QVERIFY(view->rootModelNode().isAncestorOf(item2)); @@ -5749,7 +5749,7 @@ void tst_TestCore::testModelNodeIsAncestorOf() void tst_TestCore::testModelDefaultProperties() { - QScopedPointer<Model> model(Model::create("Qt/Rectangle")); + QScopedPointer<Model> model(Model::create("QtQuick/Rectangle")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -5765,10 +5765,10 @@ void tst_TestCore::testModelDefaultProperties() void tst_TestCore::loadAnchors() { QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Item { width: 100; height: 100; Rectangle { anchors.left: parent.left; anchors.horizontalCenter: parent.horizontalCenter; anchors.rightMargin: 20; }}"); + textEdit1.setPlainText("import QtQuick 1.0; Item { width: 100; height: 100; Rectangle { anchors.left: parent.left; anchors.horizontalCenter: parent.horizontalCenter; anchors.rightMargin: 20; }}"); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -5804,10 +5804,10 @@ void tst_TestCore::loadAnchors() void tst_TestCore::changeAnchors() { QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Item { width: 100; height: 100; Rectangle { anchors.left: parent.left; anchors.horizontalCenter: parent.horizontalCenter; anchors.rightMargin: 20; }}"); + textEdit1.setPlainText("import QtQuick 1.0; Item { width: 100; height: 100; Rectangle { anchors.left: parent.left; anchors.horizontalCenter: parent.horizontalCenter; anchors.rightMargin: 20; }}"); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -5865,10 +5865,10 @@ void tst_TestCore::changeAnchors() void tst_TestCore::anchorToSibling() { QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Item { Rectangle {} Rectangle { id: secondChild } }"); + textEdit1.setPlainText("import QtQuick 1.0; Item { Rectangle {} Rectangle { id: secondChild } }"); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -5909,10 +5909,10 @@ void tst_TestCore::anchorToSibling() void tst_TestCore::removeFillAnchorByDetaching() { QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Item { width: 100; height: 100; Rectangle { id: child; anchors.fill: parent } }"); + textEdit1.setPlainText("import QtQuick 1.0; Item { width: 100; height: 100; Rectangle { id: child; anchors.fill: parent } }"); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -5989,10 +5989,10 @@ void tst_TestCore::removeFillAnchorByDetaching() void tst_TestCore::removeFillAnchorByChanging() { QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Item { width: 100; height: 100; Rectangle { id: child; anchors.fill: parent } }"); + textEdit1.setPlainText("import QtQuick 1.0; Item { width: 100; height: 100; Rectangle { id: child; anchors.fill: parent } }"); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -6069,7 +6069,7 @@ void tst_TestCore::removeFillAnchorByChanging() void tst_TestCore::testModelBindings() { - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); NodeInstanceView *nodeInstanceView = new NodeInstanceView(model.data()); @@ -6089,7 +6089,7 @@ void tst_TestCore::testModelBindings() QCOMPARE(rootInstance.size().width(), 200.0); QCOMPARE(rootInstance.size().height(), 100.0); - ModelNode childNode = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode childNode = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); childNode.variantProperty("width") = 100; childNode.variantProperty("height") = 100; @@ -6127,7 +6127,7 @@ void tst_TestCore::testModelBindings() void tst_TestCore::testModelDynamicProperties() { - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); TestView *testView = new TestView(model.data()); @@ -6171,7 +6171,7 @@ void tst_TestCore::testModelDynamicProperties() void tst_TestCore::testModelSliding() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6180,10 +6180,10 @@ void tst_TestCore::testModelSliding() ModelNode rootModelNode(view->rootModelNode()); - ModelNode rect00(addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data")); - ModelNode rect01(addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data")); - ModelNode rect02(addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data")); - ModelNode rect03(addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data")); + ModelNode rect00(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data")); + ModelNode rect01(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data")); + ModelNode rect02(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data")); + ModelNode rect03(addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data")); QVERIFY(rect00.isValid()); QVERIFY(rect01.isValid()); @@ -6239,13 +6239,13 @@ void tst_TestCore::testModelSliding() void tst_TestCore::testRewriterChangeId() { - const char* qmlString = "import Qt 4.7\nRectangle { }"; + const char* qmlString = "import QtQuick 1.0\nRectangle { }"; QPlainTextEdit textEdit; textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6264,25 +6264,25 @@ void tst_TestCore::testRewriterChangeId() QCOMPARE(rootModelNode.id(), QString("rectId")); - QString expected = "import Qt 4.7\n" + QString expected = "import QtQuick 1.0\n" "Rectangle { id: rectId }"; QCOMPARE(textEdit.toPlainText(), expected); // change id for node outside of hierarchy - ModelNode node = view->createModelNode("Qt/Item", 4, 7); + ModelNode node = view->createModelNode("QtQuick/Item", 1, 0); node.setId("myId"); } void tst_TestCore::testRewriterRemoveId() { - const char* qmlString = "import Qt 4.7\nRectangle { id: rect }"; + const char* qmlString = "import QtQuick 1.0\nRectangle { id: rect }"; QPlainTextEdit textEdit; textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6300,7 +6300,7 @@ void tst_TestCore::testRewriterRemoveId() // // remove id in text // - const char* qmlString2 = "import Qt 4.7\nRectangle { }"; + const char* qmlString2 = "import QtQuick 1.0\nRectangle { }"; textEdit.setPlainText(qmlString2); QCOMPARE(rootModelNode.id(), QString()); @@ -6308,13 +6308,13 @@ void tst_TestCore::testRewriterRemoveId() void tst_TestCore::testRewriterChangeValueProperty() { - const char* qmlString = "import Qt 4.7\nRectangle { x: 10; y: 10 }"; + const char* qmlString = "import QtQuick 1.0\nRectangle { x: 10; y: 10 }"; QPlainTextEdit textEdit; textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6337,14 +6337,14 @@ void tst_TestCore::testRewriterChangeValueProperty() // change property for node outside of hierarchy PropertyListType properties; properties.append(QPair<QString,QVariant>("x", 10)); - ModelNode node = view->createModelNode("Qt/Item", 4, 7, properties); + ModelNode node = view->createModelNode("QtQuick/Item", 1, 0, properties); node.variantProperty("x").setValue(20); } void tst_TestCore::testRewriterRemoveValueProperty() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "Rectangle {\n" " x: 10\n" " y: 10;\n" @@ -6354,7 +6354,7 @@ void tst_TestCore::testRewriterRemoveValueProperty() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6375,7 +6375,7 @@ void tst_TestCore::testRewriterRemoveValueProperty() rootModelNode.removeProperty("x"); const QLatin1String expected("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "Rectangle {\n" " y: 10;\n" "}\n"); @@ -6384,19 +6384,19 @@ void tst_TestCore::testRewriterRemoveValueProperty() // remove property for node outside of hierarchy PropertyListType properties; properties.append(QPair<QString,QVariant>("x", 10)); - ModelNode node = view->createModelNode("Qt/Item", 4, 7, properties); + ModelNode node = view->createModelNode("QtQuick/Item", 1, 0, properties); node.removeProperty("x"); } void tst_TestCore::testRewriterSignalProperty() { - const char* qmlString = "import Qt 4.7\nRectangle { onColorChanged: {} }"; + const char* qmlString = "import QtQuick 1.0\nRectangle { onColorChanged: {} }"; QPlainTextEdit textEdit; textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6416,13 +6416,13 @@ void tst_TestCore::testRewriterSignalProperty() void tst_TestCore::testRewriterObjectTypeProperty() { - const char* qmlString = "import Qt 4.7\nRectangle { x: 10; y: 10 }"; + const char* qmlString = "import QtQuick 1.0\nRectangle { x: 10; y: 10 }"; QPlainTextEdit textEdit; textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6436,11 +6436,11 @@ void tst_TestCore::testRewriterObjectTypeProperty() ModelNode rootModelNode(view->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootModelNode.type(), QLatin1String("QtQuick/Rectangle")); - view->changeRootNodeType(QLatin1String("Qt/Text"), 4, 7); + view->changeRootNodeType(QLatin1String("QtQuick/Text"), 1, 0); - QCOMPARE(rootModelNode.type(), QLatin1String("Qt/Text")); + QCOMPARE(rootModelNode.type(), QLatin1String("QtQuick/Text")); } void tst_TestCore::testRewriterPropertyChanges() @@ -6450,7 +6450,7 @@ void tst_TestCore::testRewriterPropertyChanges() // Use a slightly more complicated example so that target properties are not resolved in default scope const char* qmlString - = "import Qt 4.7\n" + = "import QtQuick 1.0\n" "Rectangle {\n" " Text {\n" " id: targetObj\n" @@ -6470,7 +6470,7 @@ void tst_TestCore::testRewriterPropertyChanges() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6483,7 +6483,7 @@ void tst_TestCore::testRewriterPropertyChanges() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); QVERIFY(rootNode.propertyNames().contains(QLatin1String("data"))); QVERIFY(rootNode.propertyNames().contains(QLatin1String("states"))); QCOMPARE(rootNode.propertyNames().count(), 2); @@ -6494,7 +6494,7 @@ void tst_TestCore::testRewriterPropertyChanges() ModelNode stateNode = statesProperty.toModelNodeList().first(); QVERIFY(stateNode.isValid()); - QCOMPARE(stateNode.type(), QString("Qt/State")); + QCOMPARE(stateNode.type(), QString("QtQuick/State")); QCOMPARE(stateNode.propertyNames(), QStringList("changes")); NodeListProperty stateChangesProperty = stateNode.property("changes").toNodeListProperty(); @@ -6521,13 +6521,13 @@ void tst_TestCore::testRewriterListModel() try { // ListModel uses a custom parser - const char* qmlString = "import Qt 4.7; ListModel {\n ListElement {\n age: 12\n} \n}"; + const char* qmlString = "import QtQuick 1.0; ListModel {\n ListElement {\n age: 12\n} \n}"; QPlainTextEdit textEdit; textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); @@ -6556,7 +6556,7 @@ void tst_TestCore::testRewriterListModel() void tst_TestCore::testRewriterAddProperty() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "}"); @@ -6564,7 +6564,7 @@ void tst_TestCore::testRewriterAddProperty() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6577,7 +6577,7 @@ void tst_TestCore::testRewriterAddProperty() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); rootNode.variantProperty(QLatin1String("x")).setValue(123); @@ -6586,7 +6586,7 @@ void tst_TestCore::testRewriterAddProperty() QCOMPARE(rootNode.variantProperty(QLatin1String("x")).value(), QVariant(123)); const QLatin1String expected("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "x: 123\n" @@ -6597,7 +6597,7 @@ void tst_TestCore::testRewriterAddProperty() void tst_TestCore::testRewriterAddPropertyInNestedObject() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Rectangle {\n" @@ -6608,7 +6608,7 @@ void tst_TestCore::testRewriterAddPropertyInNestedObject() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6621,18 +6621,18 @@ void tst_TestCore::testRewriterAddPropertyInNestedObject() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Rectangle")); ModelNode childNode = rootNode.nodeListProperty(QLatin1String("data")).toModelNodeList().at(0); QVERIFY(childNode.isValid()); - QCOMPARE(childNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(childNode.type(), QLatin1String("QtQuick/Rectangle")); QCOMPARE(childNode.id(), QLatin1String("rectangle1")); childNode.variantProperty(QLatin1String("x")).setValue(10); childNode.variantProperty(QLatin1String("y")).setValue(10); const QLatin1String expected("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Rectangle {\n" @@ -6646,7 +6646,7 @@ void tst_TestCore::testRewriterAddPropertyInNestedObject() void tst_TestCore::testRewriterAddObjectDefinition() { - const QLatin1String qmlString("import Qt 4.7\n" + const QLatin1String qmlString("import QtQuick 1.0\n" "\n" "Rectangle {\n" "}"); @@ -6654,7 +6654,7 @@ void tst_TestCore::testRewriterAddObjectDefinition() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6667,20 +6667,20 @@ void tst_TestCore::testRewriterAddObjectDefinition() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); - ModelNode childNode = view->createModelNode("Qt/MouseArea", 4, 7); + ModelNode childNode = view->createModelNode("QtQuick/MouseArea", 1, 0); rootNode.nodeAbstractProperty(QLatin1String("data")).reparentHere(childNode); QCOMPARE(rootNode.nodeProperty(QLatin1String("data")).toNodeListProperty().toModelNodeList().size(), 1); childNode = rootNode.nodeProperty(QLatin1String("data")).toNodeListProperty().toModelNodeList().at(0); - QCOMPARE(childNode.type(), QString(QLatin1String("Qt/MouseArea"))); + QCOMPARE(childNode.type(), QString(QLatin1String("QtQuick/MouseArea"))); } void tst_TestCore::testRewriterAddStatesArray() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "}"); @@ -6688,7 +6688,7 @@ void tst_TestCore::testRewriterAddStatesArray() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6700,13 +6700,13 @@ void tst_TestCore::testRewriterAddStatesArray() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); - ModelNode stateNode = view->createModelNode("Qt/State", 4, 7); + ModelNode stateNode = view->createModelNode("QtQuick/State", 1, 0); rootNode.nodeListProperty(QLatin1String("states")).reparentHere(stateNode); const QString expected1 = QLatin1String("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "states: [\n" @@ -6716,11 +6716,11 @@ void tst_TestCore::testRewriterAddStatesArray() "}"); QCOMPARE(textEdit.toPlainText(), expected1); - ModelNode stateNode2 = view->createModelNode("Qt/State", 4, 7); + ModelNode stateNode2 = view->createModelNode("QtQuick/State", 1, 0); rootNode.nodeListProperty(QLatin1String("states")).reparentHere(stateNode2); const QString expected2 = QLatin1String("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "states: [\n" @@ -6736,7 +6736,7 @@ void tst_TestCore::testRewriterAddStatesArray() void tst_TestCore::testRewriterRemoveStates() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " states: [\n" @@ -6750,7 +6750,7 @@ void tst_TestCore::testRewriterRemoveStates() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6762,7 +6762,7 @@ void tst_TestCore::testRewriterRemoveStates() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); NodeListProperty statesProperty = rootNode.nodeListProperty(QLatin1String("states")); QVERIFY(statesProperty.isValid()); @@ -6772,7 +6772,7 @@ void tst_TestCore::testRewriterRemoveStates() state.destroy(); const QLatin1String expected1("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " states: [\n" @@ -6786,7 +6786,7 @@ void tst_TestCore::testRewriterRemoveStates() state.destroy(); const QLatin1String expected2("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "}"); @@ -6796,7 +6796,7 @@ void tst_TestCore::testRewriterRemoveStates() void tst_TestCore::testRewriterRemoveObjectDefinition() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " MouseArea {\n" @@ -6808,7 +6808,7 @@ void tst_TestCore::testRewriterRemoveObjectDefinition() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6821,24 +6821,24 @@ void tst_TestCore::testRewriterRemoveObjectDefinition() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); QCOMPARE(rootNode.nodeProperty(QLatin1String("data")).toNodeListProperty().toModelNodeList().size(), 2); ModelNode childNode = rootNode.nodeProperty(QLatin1String("data")).toNodeListProperty().toModelNodeList().at(1); - QCOMPARE(childNode.type(), QString(QLatin1String("Qt/MouseArea"))); + QCOMPARE(childNode.type(), QString(QLatin1String("QtQuick/MouseArea"))); childNode.destroy(); QCOMPARE(rootNode.nodeProperty(QLatin1String("data")).toNodeListProperty().toModelNodeList().size(), 1); childNode = rootNode.nodeProperty(QLatin1String("data")).toNodeListProperty().toModelNodeList().at(0); - QCOMPARE(childNode.type(), QString(QLatin1String("Qt/MouseArea"))); + QCOMPARE(childNode.type(), QString(QLatin1String("QtQuick/MouseArea"))); childNode.destroy(); QVERIFY(!rootNode.hasProperty(QLatin1String("data"))); const QString expected = QLatin1String("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " // some comment here\n" @@ -6846,9 +6846,9 @@ void tst_TestCore::testRewriterRemoveObjectDefinition() QCOMPARE(textEdit.toPlainText(), expected); // don't crash when deleting nodes not in any hierarchy - ModelNode node1 = view->createModelNode("Qt/Rectangle", 4, 7); - ModelNode node2 = addNodeListChild(node1, "Qt/Item", 4, 7, "data"); - ModelNode node3 = addNodeListChild(node2, "Qt/Item", 4, 7, "data"); + ModelNode node1 = view->createModelNode("QtQuick/Rectangle", 1, 0); + ModelNode node2 = addNodeListChild(node1, "QtQuick/Item", 1, 0, "data"); + ModelNode node3 = addNodeListChild(node2, "QtQuick/Item", 1, 0, "data"); node3.destroy(); node1.destroy(); @@ -6857,7 +6857,7 @@ void tst_TestCore::testRewriterRemoveObjectDefinition() void tst_TestCore::testRewriterRemoveScriptBinding() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " x: 10; // some comment\n" @@ -6867,7 +6867,7 @@ void tst_TestCore::testRewriterRemoveScriptBinding() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6880,7 +6880,7 @@ void tst_TestCore::testRewriterRemoveScriptBinding() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); QCOMPARE(rootNode.properties().size(), 2); QVERIFY(rootNode.hasProperty(QLatin1String("x"))); @@ -6897,7 +6897,7 @@ void tst_TestCore::testRewriterRemoveScriptBinding() QCOMPARE(rootNode.properties().size(), 0); const QString expected = QLatin1String("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " // some comment\n" @@ -6908,7 +6908,7 @@ void tst_TestCore::testRewriterRemoveScriptBinding() void tst_TestCore::testRewriterNodeReparenting() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Item {\n" @@ -6920,7 +6920,7 @@ void tst_TestCore::testRewriterNodeReparenting() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -6933,15 +6933,15 @@ void tst_TestCore::testRewriterNodeReparenting() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); ModelNode itemNode = rootNode.nodeListProperty("data").toModelNodeList().at(0); QVERIFY(itemNode.isValid()); - QCOMPARE(itemNode.type(), QLatin1String("Qt/Item")); + QCOMPARE(itemNode.type(), QLatin1String("QtQuick/Item")); ModelNode mouseArea = itemNode.nodeListProperty("data").toModelNodeList().at(0); QVERIFY(mouseArea.isValid()); - QCOMPARE(mouseArea.type(), QLatin1String("Qt/MouseArea")); + QCOMPARE(mouseArea.type(), QLatin1String("QtQuick/MouseArea")); rootNode.nodeListProperty("data").reparentHere(mouseArea); @@ -6949,7 +6949,7 @@ void tst_TestCore::testRewriterNodeReparenting() QCOMPARE(rootNode.nodeListProperty("data").toModelNodeList().size(), 2); QString expected = "\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Item {\n" @@ -6961,9 +6961,9 @@ void tst_TestCore::testRewriterNodeReparenting() QCOMPARE(textEdit.toPlainText(), expected); // reparenting outside of the hierarchy - ModelNode node1 = view->createModelNode("Qt/Rectangle", 4, 7); - ModelNode node2 = view->createModelNode("Qt/Item", 4, 7); - ModelNode node3 = view->createModelNode("Qt/Item", 4, 7); + ModelNode node1 = view->createModelNode("QtQuick/Rectangle", 1, 0); + ModelNode node2 = view->createModelNode("QtQuick/Item", 1, 0); + ModelNode node3 = view->createModelNode("QtQuick/Item", 1, 0); node2.nodeListProperty("data").reparentHere(node3); node1.nodeListProperty("data").reparentHere(node2); @@ -6971,7 +6971,7 @@ void tst_TestCore::testRewriterNodeReparenting() rootNode.nodeListProperty("data").reparentHere(node1); expected = "\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Item {\n" @@ -6991,11 +6991,11 @@ void tst_TestCore::testRewriterNodeReparenting() QCOMPARE(textEdit.toPlainText(), expected); // reparent out of the hierarchy - ModelNode node4 = view->createModelNode("Qt/Rectangle", 4, 7); + ModelNode node4 = view->createModelNode("QtQuick/Rectangle", 1, 0); node4.nodeListProperty("data").reparentHere(node1); expected = "\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Item {\n" @@ -7011,7 +7011,7 @@ void tst_TestCore::testRewriterNodeReparenting() void tst_TestCore::testRewriterNodeReparentingWithTransaction() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " id: rootItem\n" @@ -7028,7 +7028,7 @@ void tst_TestCore::testRewriterNodeReparentingWithTransaction() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -7041,17 +7041,17 @@ void tst_TestCore::testRewriterNodeReparentingWithTransaction() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QLatin1String("QtQuick/Rectangle")); QCOMPARE(rootNode.id(), QLatin1String("rootItem")); ModelNode item1Node = rootNode.nodeListProperty("data").toModelNodeList().at(0); QVERIFY(item1Node.isValid()); - QCOMPARE(item1Node.type(), QLatin1String("Qt/Item")); + QCOMPARE(item1Node.type(), QLatin1String("QtQuick/Item")); QCOMPARE(item1Node.id(), QLatin1String("firstItem")); ModelNode item2Node = rootNode.nodeListProperty("data").toModelNodeList().at(1); QVERIFY(item2Node.isValid()); - QCOMPARE(item2Node.type(), QLatin1String("Qt/Item")); + QCOMPARE(item2Node.type(), QLatin1String("QtQuick/Item")); QCOMPARE(item2Node.id(), QLatin1String("secondItem")); RewriterTransaction transaction = testRewriterView->beginRewriterTransaction(); @@ -7062,7 +7062,7 @@ void tst_TestCore::testRewriterNodeReparentingWithTransaction() transaction.commit(); const QLatin1String expected("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " id: rootItem\n" @@ -7081,7 +7081,7 @@ void tst_TestCore::testRewriterNodeReparentingWithTransaction() void tst_TestCore::testRewriterMovingInOut() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "}"); @@ -7089,7 +7089,7 @@ void tst_TestCore::testRewriterMovingInOut() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -7102,13 +7102,13 @@ void tst_TestCore::testRewriterMovingInOut() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); - ModelNode newNode = view->createModelNode("Qt/MouseArea", 4, 7); + ModelNode newNode = view->createModelNode("QtQuick/MouseArea", 1, 0); rootNode.nodeListProperty(QLatin1String("data")).reparentHere(newNode); const QLatin1String expected1("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "MouseArea {\n" @@ -7127,7 +7127,7 @@ void tst_TestCore::testRewriterMovingInOut() newNode.destroy(); const QLatin1String expected2("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "}"); @@ -7137,7 +7137,7 @@ void tst_TestCore::testRewriterMovingInOut() void tst_TestCore::testRewriterMovingInOutWithTransaction() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "}"); @@ -7145,7 +7145,7 @@ void tst_TestCore::testRewriterMovingInOutWithTransaction() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -7158,11 +7158,11 @@ void tst_TestCore::testRewriterMovingInOutWithTransaction() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); RewriterTransaction transaction = view->beginRewriterTransaction(); - ModelNode newNode = view->createModelNode("Qt/MouseArea", 4, 7); + ModelNode newNode = view->createModelNode("QtQuick/MouseArea", 1, 0); rootNode.nodeListProperty(QLatin1String("data")).reparentHere(newNode); #define move(node, x, y) {\ @@ -7178,7 +7178,7 @@ void tst_TestCore::testRewriterMovingInOutWithTransaction() transaction.commit(); const QLatin1String expected2("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" "}"); @@ -7188,7 +7188,7 @@ void tst_TestCore::testRewriterMovingInOutWithTransaction() void tst_TestCore::testRewriterComplexMovingInOut() { const QLatin1String qmlString("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Item {\n" @@ -7198,7 +7198,7 @@ void tst_TestCore::testRewriterComplexMovingInOut() textEdit.setPlainText(qmlString); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -7211,14 +7211,14 @@ void tst_TestCore::testRewriterComplexMovingInOut() ModelNode rootNode = view->rootModelNode(); QVERIFY(rootNode.isValid()); - QCOMPARE(rootNode.type(), QString("Qt/Rectangle")); + QCOMPARE(rootNode.type(), QString("QtQuick/Rectangle")); ModelNode itemNode = rootNode.nodeListProperty(QLatin1String("data")).toModelNodeList().at(0); - ModelNode newNode = view->createModelNode("Qt/MouseArea", 4, 7); + ModelNode newNode = view->createModelNode("QtQuick/MouseArea", 1, 0); rootNode.nodeListProperty(QLatin1String("data")).reparentHere(newNode); const QLatin1String expected1("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Item {\n" @@ -7238,7 +7238,7 @@ void tst_TestCore::testRewriterComplexMovingInOut() move(newNode, 3, 3); const QLatin1String expected2("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Item {\n" @@ -7254,7 +7254,7 @@ void tst_TestCore::testRewriterComplexMovingInOut() itemNode.nodeListProperty(QLatin1String("data")).reparentHere(newNode); const QLatin1String expected3("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Item {\n" @@ -7274,7 +7274,7 @@ void tst_TestCore::testRewriterComplexMovingInOut() newNode.destroy(); const QLatin1String expected4("\n" - "import Qt 4.7\n" + "import QtQuick 1.0\n" "\n" "Rectangle {\n" " Item {\n" @@ -7286,10 +7286,10 @@ void tst_TestCore::testRewriterComplexMovingInOut() void tst_TestCore::removeCenteredInAnchorByDetaching() { QPlainTextEdit textEdit1; - textEdit1.setPlainText("import Qt 4.7; Item { Rectangle { id: child; anchors.centerIn: parent } }"); + textEdit1.setPlainText("import QtQuick 1.0; Item { Rectangle { id: child; anchors.centerIn: parent } }"); NotIndentingTextEditModifier modifier1(&textEdit1); - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QScopedPointer<TestRewriterView> testRewriterView1(new TestRewriterView()); testRewriterView1->setTextModifier(&modifier1); @@ -7340,7 +7340,7 @@ void tst_TestCore::removeCenteredInAnchorByDetaching() void tst_TestCore::changePropertyBinding() { - QScopedPointer<Model> model(Model::create("Qt/Item")); + QScopedPointer<Model> model(Model::create("QtQuick/Item")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView(model.data())); @@ -7349,7 +7349,7 @@ void tst_TestCore::changePropertyBinding() ModelNode rootModelNode(view->rootModelNode()); rootModelNode.variantProperty("width") = 20; - ModelNode firstChild = addNodeListChild(rootModelNode, "Qt/Rectangle", 4, 7, "data"); + ModelNode firstChild = addNodeListChild(rootModelNode, "QtQuick/Rectangle", 1, 0, "data"); firstChild.bindingProperty("width").setExpression(QString("parent.width")); firstChild.variantProperty("height")= 10; QVERIFY(firstChild.isValid()); @@ -7389,7 +7389,7 @@ void tst_TestCore::loadTestFiles() textEdit.setPlainText(QString(file.readAll())); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); @@ -7400,7 +7400,7 @@ void tst_TestCore::loadTestFiles() QVERIFY(model.data()); ModelNode rootModelNode(testRewriterView->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QLatin1String("Qt/Item")); + QCOMPARE(rootModelNode.type(), QLatin1String("QtQuick/Item")); QVERIFY(rootModelNode.allDirectSubModelNodes().isEmpty()); } @@ -7412,7 +7412,7 @@ void tst_TestCore::loadTestFiles() textEdit.setPlainText(QString(file.readAll())); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); @@ -7423,14 +7423,14 @@ void tst_TestCore::loadTestFiles() QVERIFY(model.data()); ModelNode rootModelNode(testRewriterView->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootModelNode.type(), QLatin1String("QtQuick/Rectangle")); QCOMPARE(rootModelNode.allDirectSubModelNodes().count(), 1); QCOMPARE(rootModelNode.variantProperty("width").value().toInt(), 200); QCOMPARE(rootModelNode.variantProperty("height").value().toInt(), 200); ModelNode textNode(rootModelNode.allDirectSubModelNodes().first()); QVERIFY(textNode.isValid()); - QCOMPARE(textNode.type(), QLatin1String("Qt/Text")); + QCOMPARE(textNode.type(), QLatin1String("QtQuick/Text")); QCOMPARE(textNode.variantProperty("x").value().toInt(), 66); QCOMPARE(textNode.variantProperty("y").value().toInt(), 93); } @@ -7442,7 +7442,7 @@ void tst_TestCore::loadTestFiles() textEdit.setPlainText(QString(file.readAll())); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); @@ -7453,7 +7453,7 @@ void tst_TestCore::loadTestFiles() QVERIFY(model.data()); ModelNode rootModelNode(testRewriterView->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootModelNode.type(), QLatin1String("QtQuick/Rectangle")); QCOMPARE(rootModelNode.allDirectSubModelNodes().count(), 4); QCOMPARE(rootModelNode.variantProperty("width").value().toInt(), 200); QCOMPARE(rootModelNode.variantProperty("height").value().toInt(), 200); @@ -7464,14 +7464,14 @@ void tst_TestCore::loadTestFiles() ModelNode textNode(rootModelNode.nodeListProperty("data").toModelNodeList().first()); QVERIFY(textNode.isValid()); QCOMPARE(textNode.id(), QLatin1String("text")); - QCOMPARE(textNode.type(), QLatin1String("Qt/Text")); + QCOMPARE(textNode.type(), QLatin1String("QtQuick/Text")); QCOMPARE(textNode.variantProperty("x").value().toInt(), 66); QCOMPARE(textNode.variantProperty("y").value().toInt(), 93); ModelNode imageNode(rootModelNode.nodeListProperty("data").toModelNodeList().last()); QVERIFY(imageNode.isValid()); QCOMPARE(imageNode.id(), QLatin1String("image1")); - QCOMPARE(imageNode.type(), QLatin1String("Qt/Image")); + QCOMPARE(imageNode.type(), QLatin1String("QtQuick/Image")); QCOMPARE(imageNode.variantProperty("x").value().toInt(), 41); QCOMPARE(imageNode.variantProperty("y").value().toInt(), 46); QCOMPARE(imageNode.variantProperty("source").value().toUrl(), QUrl("images/qtcreator.png")); @@ -7491,7 +7491,7 @@ void tst_TestCore::loadTestFiles() textEdit.setPlainText(QString(file.readAll())); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); @@ -7503,12 +7503,12 @@ void tst_TestCore::loadTestFiles() QVERIFY(model.data()); ModelNode rootModelNode(testRewriterView->rootModelNode()); QVERIFY(rootModelNode.isValid()); - QCOMPARE(rootModelNode.type(), QLatin1String("Qt/Rectangle")); + QCOMPARE(rootModelNode.type(), QLatin1String("QtQuick/Rectangle")); QVERIFY(!rootModelNode.allDirectSubModelNodes().isEmpty()); } } -static QString rectWithGradient = "import Qt 4.7\n" +static QString rectWithGradient = "import QtQuick 1.0\n" "Rectangle {\n" " gradient: Gradient {\n" " id: pGradient\n" @@ -7528,7 +7528,7 @@ void tst_TestCore::loadGradient() textEdit.setPlainText(rectWithGradient); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); @@ -7547,7 +7547,7 @@ void tst_TestCore::loadGradient() QVERIFY(gradientProperty.isNodeProperty()); ModelNode gradientPropertyModelNode = gradientProperty.toNodeProperty().modelNode(); QVERIFY(gradientPropertyModelNode.isValid()); - QCOMPARE(gradientPropertyModelNode.type(), QString("Qt/Gradient")); + QCOMPARE(gradientPropertyModelNode.type(), QString("QtQuick/Gradient")); QCOMPARE(gradientPropertyModelNode.allDirectSubModelNodes().size(), 2); AbstractProperty stopsProperty = gradientPropertyModelNode.property("stops"); @@ -7560,7 +7560,7 @@ void tst_TestCore::loadGradient() ModelNode pOne = stops.first(); ModelNode pTwo = stops.last(); - QCOMPARE(pOne.type(), QString("Qt/GradientStop")); + QCOMPARE(pOne.type(), QString("QtQuick/GradientStop")); QCOMPARE(pOne.id(), QString("pOne")); QCOMPARE(pOne.allDirectSubModelNodes().size(), 0); QCOMPARE(pOne.propertyNames().size(), 2); @@ -7569,7 +7569,7 @@ void tst_TestCore::loadGradient() QCOMPARE(pOne.variantProperty("color").value().type(), QVariant::Color); QCOMPARE(pOne.variantProperty("color").value().value<QColor>(), QColor("lightsteelblue")); - QCOMPARE(pTwo.type(), QString("Qt/GradientStop")); + QCOMPARE(pTwo.type(), QString("QtQuick/GradientStop")); QCOMPARE(pTwo.id(), QString("pTwo")); QCOMPARE(pTwo.allDirectSubModelNodes().size(), 0); QCOMPARE(pTwo.propertyNames().size(), 2); @@ -7582,8 +7582,8 @@ void tst_TestCore::loadGradient() { ModelNode gradientNode = rootModelNode.allDirectSubModelNodes().last(); QVERIFY(gradientNode.isValid()); - QVERIFY(!gradientNode.metaInfo().isSubclassOf("Qt/Item", -1, -1)); - QCOMPARE(gradientNode.type(), QString("Qt/Gradient")); + QVERIFY(!gradientNode.metaInfo().isSubclassOf("QtQuick/Item", -1, -1)); + QCOMPARE(gradientNode.type(), QString("QtQuick/Gradient")); QCOMPARE(gradientNode.id(), QString("secondGradient")); QCOMPARE(gradientNode.allDirectSubModelNodes().size(), 2); @@ -7597,7 +7597,7 @@ void tst_TestCore::loadGradient() ModelNode nOne = stops.first(); ModelNode nTwo = stops.last(); - QCOMPARE(nOne.type(), QString("Qt/GradientStop")); + QCOMPARE(nOne.type(), QString("QtQuick/GradientStop")); QCOMPARE(nOne.id(), QString("nOne")); QCOMPARE(nOne.allDirectSubModelNodes().size(), 0); QCOMPARE(nOne.propertyNames().size(), 2); @@ -7606,7 +7606,7 @@ void tst_TestCore::loadGradient() QCOMPARE(nOne.variantProperty("color").value().type(), QVariant::Color); QCOMPARE(nOne.variantProperty("color").value().value<QColor>(), QColor("blue")); - QCOMPARE(nTwo.type(), QString("Qt/GradientStop")); + QCOMPARE(nTwo.type(), QString("QtQuick/GradientStop")); QCOMPARE(nTwo.id(), QString("nTwo")); QCOMPARE(nTwo.allDirectSubModelNodes().size(), 0); QCOMPARE(nTwo.propertyNames().size(), 2); @@ -7624,7 +7624,7 @@ void tst_TestCore::changeGradientId() textEdit.setPlainText(rectWithGradient); NotIndentingTextEditModifier textModifier(&textEdit); - QScopedPointer<Model> model(Model::create("Qt/Item", 4, 7)); + QScopedPointer<Model> model(Model::create("QtQuick/Item", 1, 0)); QVERIFY(model.data()); QScopedPointer<TestRewriterView> testRewriterView(new TestRewriterView()); @@ -7657,7 +7657,7 @@ void tst_TestCore::changeGradientId() firstStop.destroy(); QVERIFY(!firstStop.isValid()); - ModelNode gradientStop = addNodeListChild(gradientNode, "Qt/GradientStop", 4, 7, "stops"); + ModelNode gradientStop = addNodeListChild(gradientNode, "QtQuick/GradientStop", 1, 0, "stops"); gradientStop.variantProperty("position") = 0.5; gradientStop.variantProperty("color") = QColor("yellow"); diff --git a/tests/auto/qml/qmldesigner/data/fx/attributes.qml b/tests/auto/qml/qmldesigner/data/fx/attributes.qml index e2d4ed37c412613b1cdbf693eb5f61121921ea37..d58d77908b5c223dd2fd1ff9d2d7e034fbf847d6 100644 --- a/tests/auto/qml/qmldesigner/data/fx/attributes.qml +++ b/tests/auto/qml/qmldesigner/data/fx/attributes.qml @@ -1,4 +1,4 @@ -import Qt 4.7 +import QtQuick 1.0 Item { id: id; diff --git a/tests/auto/qml/qmldesigner/data/fx/empty.qml b/tests/auto/qml/qmldesigner/data/fx/empty.qml index dd9e9ea19308e2bb439e1a4c61b163d862753e97..f6760b6a9fa35ce82f23e450b6ed3169b53740fb 100644 --- a/tests/auto/qml/qmldesigner/data/fx/empty.qml +++ b/tests/auto/qml/qmldesigner/data/fx/empty.qml @@ -1,4 +1,4 @@ -import Qt 4.7 +import QtQuick 1.0 Item { } diff --git a/tests/auto/qml/qmldesigner/data/fx/helloworld.qml b/tests/auto/qml/qmldesigner/data/fx/helloworld.qml index bc17ab1b27d85d324bb58526d268e504e7989654..d225c43630641a563d92442cbbf859c2f14f60f4 100644 --- a/tests/auto/qml/qmldesigner/data/fx/helloworld.qml +++ b/tests/auto/qml/qmldesigner/data/fx/helloworld.qml @@ -1,4 +1,4 @@ -import Qt 4.7 +import QtQuick 1.0 Rectangle { width: 200 diff --git a/tests/auto/qml/qmldesigner/data/fx/properties.qml b/tests/auto/qml/qmldesigner/data/fx/properties.qml index 12b79f63f8043b108a6cc17355e2ea628fc41070..e9078ff8e76038dcb7b10337365dde2b0ef3dc71 100644 --- a/tests/auto/qml/qmldesigner/data/fx/properties.qml +++ b/tests/auto/qml/qmldesigner/data/fx/properties.qml @@ -1,4 +1,4 @@ -import Qt 4.7 +import QtQuick 1.0 Item { property bool pushed diff --git a/tests/auto/qml/qmldesigner/data/fx/states.qml b/tests/auto/qml/qmldesigner/data/fx/states.qml index 2e50ca9b7be4f11e7593d160b511ad461f54a3ce..836e0ca0173bdcd8075910490908e3e619e97052 100644 --- a/tests/auto/qml/qmldesigner/data/fx/states.qml +++ b/tests/auto/qml/qmldesigner/data/fx/states.qml @@ -1,4 +1,4 @@ -import Qt 4.7 +import QtQuick 1.0 Rectangle { id: rect diff --git a/tests/auto/qml/qmldesigner/data/fx/topitem.qml b/tests/auto/qml/qmldesigner/data/fx/topitem.qml index 244a7ac6f3e97c671c6000b9cbcdd37f3d45b115..84ef3c829c8f0ec359524f3e994e6ee0d1e2b840 100644 --- a/tests/auto/qml/qmldesigner/data/fx/topitem.qml +++ b/tests/auto/qml/qmldesigner/data/fx/topitem.qml @@ -1,5 +1,5 @@ -import Qt 4.7 -import Qt 4.7 as Qt46 +import QtQuick 1.0 +import QtQuick 1.0 as Qt46 import "subitems" import "subitems" as Subdir diff --git a/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp b/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp index 5e1f4c29e70c1b663bef5d368ffb244435fd2d98..9b0d05d12e6b397bfefa8f72e9333f5d5c6c49ce 100644 --- a/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp +++ b/tests/auto/qml/qmleditor/qmlcodeformatter/tst_qmlcodeformatter.cpp @@ -31,6 +31,7 @@ private Q_SLOTS: void ifStatementWithoutBraces2(); void ifStatementWithBraces1(); void ifStatementWithBraces2(); + void ifStatementWithBraces3(); void ifStatementMixed(); void ifStatementAndComments(); void ifStatementLongCondition(); @@ -543,6 +544,18 @@ void tst_QMLCodeFormatter::ifStatementWithBraces2() checkIndent(data); } +void tst_QMLCodeFormatter::ifStatementWithBraces3() +{ + QList<Line> data; + data << Line("function foo() {") + << Line(" if (a) {") + << Line(" continue") + << Line(" }") + << Line(" var foo") + << Line("}"); + checkIndent(data); +} + void tst_QMLCodeFormatter::ifStatementMixed() { QList<Line> data; diff --git a/tests/manual/cplusplus-tools/cplusplus-tools.pro b/tests/manual/cplusplus-tools/cplusplus-tools.pro new file mode 100644 index 0000000000000000000000000000000000000000..5645f72ff0c8edbdc5abb4bd4b7da8d83cff64bd --- /dev/null +++ b/tests/manual/cplusplus-tools/cplusplus-tools.pro @@ -0,0 +1,24 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2010-10-01T13:24:32 +# +#------------------------------------------------- + +QT += core + +QT -= gui + +TARGET = cplusplus-tools +CONFIG += console +CONFIG -= app_bundle + +TEMPLATE = app + + +SOURCES += main.cpp \ + dummy.cpp \ + detail/source.cpp + +HEADERS += \ + dummy.h \ + detail/header.h diff --git a/tests/manual/cplusplus-tools/detail/header.h b/tests/manual/cplusplus-tools/detail/header.h new file mode 100644 index 0000000000000000000000000000000000000000..2bce9d04bc4eb43fce453cc2db78015f807c7a21 --- /dev/null +++ b/tests/manual/cplusplus-tools/detail/header.h @@ -0,0 +1,30 @@ +#ifndef HEADER_H +#define HEADER_H + +#include <QtGlobal> + +QT_BEGIN_NAMESPACE +class QString; +QT_END_NAMESPACE + +struct A {}; +struct B : virtual A {}; +struct C : virtual A {}; +struct D : B, C {}; + +inline int freefunc1() +{ return 1; } + +int freefunc2(int); +int freefunc2(double); +int freefunc2(const QString &); + +template <class T> +void freefunc3(T) +{} + +template <class T> +void freefunc3(T, int) +{} + +#endif //HEADER_H diff --git a/tests/manual/cplusplus-tools/detail/source.cpp b/tests/manual/cplusplus-tools/detail/source.cpp new file mode 100644 index 0000000000000000000000000000000000000000..81af534013d6143e25b0fa5045e662dce71059b6 --- /dev/null +++ b/tests/manual/cplusplus-tools/detail/source.cpp @@ -0,0 +1,19 @@ +#include "header.h" +#include "dummy.h" + +#include <QtCore/QString> + +int xi = 10; + +int freefunc2(int a) { return a; } + +int freefunc2(double) +{ return 1; } + +int freefunc2(const QString &) +{ return 1; } + +void here() { + test::Dummy d; + d; +} diff --git a/tests/manual/cplusplus-tools/dummy.cpp b/tests/manual/cplusplus-tools/dummy.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4700050d44c461fafb5d2553ae885a102da729b4 --- /dev/null +++ b/tests/manual/cplusplus-tools/dummy.cpp @@ -0,0 +1,32 @@ +#include "dummy.h" +#include "detail/header.h" + +using namespace test; + +extern int xi; + +Dummy::Dummy() +{} + +Dummy::Dummy(int) +{ + xi = 0; + freefunc2(1.0); +} + +void Dummy::bla(int) +{} + +void Dummy::bla(const QString &) +{} + +void Dummy::bla(const QString &) const +{} + +void Dummy::bla(int, const QString &) const +{} + +void Dummy::sfunc() +{} + +const double Dummy::PI = 3.14; diff --git a/tests/manual/cplusplus-tools/dummy.h b/tests/manual/cplusplus-tools/dummy.h new file mode 100644 index 0000000000000000000000000000000000000000..0ae7756ad4dccc6bcd5da2980f39aa91e9f3b80c --- /dev/null +++ b/tests/manual/cplusplus-tools/dummy.h @@ -0,0 +1,50 @@ +#ifndef DUMMY_H +#define DUMMY_H + +#include <QString> + +namespace test { + +class Dummy +{ +public: + Dummy(); + Dummy(int a); + + typedef int INT; + + enum Values { + v1, + v2, + v3 + }; + + static const int ONE = 1; + static const double PI; + + static void sfunc(); + + struct Internal + { + QString one; + typedef double DOUBLE; + }; + + void bla(int); + void bla(const QString &); + void bla(const QString &) const; + void bla(int, const QString &) const; + + void foo(int) const {} + void foo(const QString &) const {} + + QString one; +}; + +class ChildDummy : public Dummy {}; + +class GrandChildDummy : public Dummy {}; + +} // namespace test + +#endif // DUMMY_H diff --git a/tests/manual/cplusplus-tools/main.cpp b/tests/manual/cplusplus-tools/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6e5948a8338c68e51b1e4cbe5754acbfdd17e5a6 --- /dev/null +++ b/tests/manual/cplusplus-tools/main.cpp @@ -0,0 +1,175 @@ +/* + * Below are some basic test suggestions. Trying them in a larger + * project (Qt Creator, for example) is also valid. + */ + +/* + Folow includes + */ +#include <QDebug> +#include <QtCore/QString> +#include <iostream> +#include <vector> +#include <cstdio> +//#include <Windows.h> +//#include <linux/version.h> +#include "dummy.h" +#include "detail/header.h" + +/* + Complete includes + */ +//#include <QDe +//#include <QtCor +//#include <QtCore/QXmlStream + +//#include <ios +//#include <vec +//#include <cstd + +//#include <Win +//#include <lin + +//#include "dum +//#include "deta +//#include "detail/hea + + +using namespace test; + +int fi = 10; +extern int xi; +const int ci = 1; + +namespace { +int ai = 100; +int afunc() { + return fi * xi + ai + ci; +} +} + +/* + Follow symbols + - Expect some issues when finding the best function overload and with templates. + - Try using a local namespace directive instead of the global one. + */ +using namespace test; +void testFollowSymbols() +{ + //using namespace test; + + Dummy dummy; + Dummy::sfunc(); + Dummy::ONE; + Dummy::PI; + dummy.bla(fi); + dummy.bla("bla"); + dummy.one = "one"; + Dummy::Internal internal; + internal.one = "one"; + Dummy::INT i; + Dummy::Values V; + Dummy::v1; + freefunc1(); + freefunc2(10); + freefunc2("s"); + freefunc3(dummy); + freefunc3(dummy, 10); + freefunc3(10, 10); + freefunc3(1.0); + afunc(); + i; + V; +} + +/* + Complete symbols + - Check function arguments. + */ +void testCompleteSymbols() +{ + test::Dummy dummy; + test::Dummy::Internal internal; + +// in +// Dum +// Dummy::s +// Dummy::O +// Dummy::P +// dummy. +// dummy.b +// dummy.bla( +// dummy.o +// Dummy::In +// internal.o +// Dummy::Internal:: +// freefunc2 +// using namespace st +// afun +} + +/* + Complete snippets + */ +void testCompleteSnippets() +{ +// for +// class +// whil +} + +/* + Find usages + - Go to other files for more options. + */ +void testFindUsages() +{ + Dummy(); + Dummy::sfunc(); + Dummy::ONE; + xi; + fi; + ci; + ai; + afunc(); + freefunc1(); + freefunc2("s"); +} + +/* + Rename + - Compile to make sure. + - Go to other files for more options. + */ +void testRename() +{ + fi; + ci; + ai; + afunc(); + testCompleteSnippets(); +} + +/* + Type hierarchy + */ +void testTypeHierarchy() +{ + test::GrandChildDummy(); + D(); +} + +/* + Switch declaration/definition + - Use methods from Dummy. + */ + +/* + Switch header/source + - Use dummy.h and dummy.cpp. + */ + +int main() +{ + return 0; +} diff --git a/tests/manual/fakevim/fakevim.pro b/tests/manual/fakevim/fakevim.pro index b6a887707629495129d3d4be95f0a58a64802ad9..b36e53421dacfdff2151ed1178a81fe2390be6af 100644 --- a/tests/manual/fakevim/fakevim.pro +++ b/tests/manual/fakevim/fakevim.pro @@ -1,24 +1,20 @@ - FAKEVIMHOME = ../../../src/plugins/fakevim UTILSDIR = ../../../src/libs DEFINES += QTCREATOR_UTILS_STATIC_LIB + +include(../../../src/libs/utils/utils-lib.pri) + SOURCES += \ main.cpp \ $$FAKEVIMHOME/fakevimhandler.cpp \ $$FAKEVIMHOME/fakevimactions.cpp \ - $$FAKEVIMHOME/fakevimsyntax.cpp \ - $$UTILSDIR/utils/savedaction.cpp \ - $$UTILSDIR/utils/pathchooser.cpp \ - $$UTILSDIR/utils/basevalidatinglineedit.cpp \ + $$FAKEVIMHOME/fakevimsyntax.cpp HEADERS += \ $$FAKEVIMHOME/fakevimhandler.h \ $$FAKEVIMHOME/fakevimactions.h \ - $$FAKEVIMHOME/fakevimsyntax.h \ - $$UTILSDIR/utils/savedaction.h \ - $$UTILSDIR/utils/pathchooser.h \ - $$UTILSDIR/utils/basevalidatinglineedit.h \ + $$FAKEVIMHOME/fakevimsyntax.h INCLUDEPATH += $$FAKEVIMHOME $$UTILSDIR diff --git a/tests/manual/gdbdebugger/simple/simple_gdbtest_app.cpp b/tests/manual/gdbdebugger/simple/simple_gdbtest_app.cpp index 41d978636e3b75564262a49b087812f359e4b135..9e2bc9ec9e9ac4cec1011d45e59e1acd21e606bc 100644 --- a/tests/manual/gdbdebugger/simple/simple_gdbtest_app.cpp +++ b/tests/manual/gdbdebugger/simple/simple_gdbtest_app.cpp @@ -937,13 +937,13 @@ void testPlugin() QLibrary lib(dir + "/libsimple_gdbtest_plugin.dylib"); #endif #ifdef Q_OS_WIN - QLibrary lib(dir + "/libsimple_gdbtest_plugin.dll"); + QLibrary lib(dir + "/debug/simple_gdbtest_plugin.dll"); #endif #ifdef Q_OS_SYMBIAN QLibrary lib(dir + "/libsimple_gdbtest_plugin.dll"); #endif int (*foo)() = (int(*)()) lib.resolve("pluginTest"); - qDebug() << "library resolve: " << foo; + qDebug() << "library resolve: " << foo << lib.fileName(); if (foo) { int res = foo(); res += 1; @@ -2093,6 +2093,7 @@ int main(int argc, char *argv[]) Q_UNUSED(s); Q_UNUSED(w); + return 0; } QT_BEGIN_NAMESPACE diff --git a/tests/manual/qmlstandalone/main.cpp b/tests/manual/qmlstandalone/main.cpp index f6eaf4778ea7254b2cba213d209f35ed97373332..03a40925871719a50a6e4a8a32fb761c088203b9 100644 --- a/tests/manual/qmlstandalone/main.cpp +++ b/tests/manual/qmlstandalone/main.cpp @@ -52,8 +52,7 @@ bool QmlStandaloneApp::generateFiles(QString *errorMessage) const && writeFile(generateFile(QmlAppGeneratedFileInfo::AppViewerHFile, errorMessage), path(AppViewerH)) && writeFile(generateFile(QmlAppGeneratedFileInfo::SymbianSvgIconFile, errorMessage), path(SymbianSvgIcon)) && writeFile(generateFile(QmlAppGeneratedFileInfo::MaemoPngIconFile, errorMessage), path(MaemoPngIcon)) - && writeFile(generateFile(QmlAppGeneratedFileInfo::DesktopFile, errorMessage), path(Desktop)) - && writeFile(generateFile(QmlAppGeneratedFileInfo::DeploymentPriFile, errorMessage), path(DeploymentPri)); + && writeFile(generateFile(QmlAppGeneratedFileInfo::DesktopFile, errorMessage), path(Desktop)); } QString AbstractMobileApp::templatesRoot() diff --git a/tests/manual/ssh/main.cpp b/tests/manual/ssh/main.cpp index 3a17c436fa3efe26e09c389bdbfa6ad4149cef1b..46f74603ea8b083225589b89216e27340b9a8f21 100644 --- a/tests/manual/ssh/main.cpp +++ b/tests/manual/ssh/main.cpp @@ -27,12 +27,12 @@ public: if (m_connection->createSftpChannel()) qDebug("Error: Unconnected SSH connection creates SFTP channel."); - SshConnectionParameters noHost; + SshConnectionParameters noHost=SshConnectionParameters(SshConnectionParameters::DefaultProxy); noHost.host = QLatin1String("hgdfxgfhgxfhxgfchxgcf"); noHost.port = 12345; noHost.timeout = 10; - SshConnectionParameters noUser; + SshConnectionParameters noUser=SshConnectionParameters(SshConnectionParameters::DefaultProxy); noUser.host = QLatin1String("localhost"); noUser.port = 22; noUser.timeout = 30; @@ -40,7 +40,7 @@ public: noUser.uname = QLatin1String("dumdidumpuffpuff"); noUser.uname = QLatin1String("whatever"); - SshConnectionParameters wrongPwd; + SshConnectionParameters wrongPwd=SshConnectionParameters(SshConnectionParameters::DefaultProxy); wrongPwd.host = QLatin1String("localhost"); wrongPwd.port = 22; wrongPwd.timeout = 30; @@ -48,7 +48,7 @@ public: wrongPwd.uname = QLatin1String("root"); noUser.uname = QLatin1String("thiscantpossiblybeapasswordcanit"); - SshConnectionParameters invalidKeyFile; + SshConnectionParameters invalidKeyFile=SshConnectionParameters(SshConnectionParameters::DefaultProxy); invalidKeyFile.host = QLatin1String("localhost"); invalidKeyFile.port = 22; invalidKeyFile.timeout = 30;