Commit cd5f9f6f authored by Eike Ziller's avatar Eike Ziller

Merge remote-tracking branch 'origin/3.5'

Change-Id: I7b3ef276d438ff0f184a649153e8aeec08a9f8c9
parents b1401173 aa8998cf
doc/images/qtcreator-build-steps.png

22.2 KB | W: | H:

doc/images/qtcreator-build-steps.png

19.1 KB | W: | H:

doc/images/qtcreator-build-steps.png
doc/images/qtcreator-build-steps.png
doc/images/qtcreator-build-steps.png
doc/images/qtcreator-build-steps.png
  • 2-up
  • Swipe
  • Onion skin
doc/images/qtcreator-kits.png

27.3 KB | W: | H:

doc/images/qtcreator-kits.png

17.6 KB | W: | H:

doc/images/qtcreator-kits.png
doc/images/qtcreator-kits.png
doc/images/qtcreator-kits.png
doc/images/qtcreator-kits.png
  • 2-up
  • Swipe
  • Onion skin
doc/images/qtcreator-options-qbs.png

21.5 KB | W: | H:

doc/images/qtcreator-options-qbs.png

16.9 KB | W: | H:

doc/images/qtcreator-options-qbs.png
doc/images/qtcreator-options-qbs.png
doc/images/qtcreator-options-qbs.png
doc/images/qtcreator-options-qbs.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -44,7 +44,9 @@ ...@@ -44,7 +44,9 @@
\l{http://clang-analyzer.llvm.org/available_checks.html}{Available Checkers}. \l{http://clang-analyzer.llvm.org/available_checks.html}{Available Checkers}.
To suppress diagnostics, select \uicontrol {Suppress This Diagnostic} in the To suppress diagnostics, select \uicontrol {Suppress This Diagnostic} in the
context menu. context menu. To view the suppression list for a project and to remove
diagnostics from it, select \uicontrol {Clang Static Analyzer Settings} in
the \uicontrol Projects mode.
\section1 Setting Up Clang Static Analyzer \section1 Setting Up Clang Static Analyzer
......
...@@ -67,6 +67,8 @@ ...@@ -67,6 +67,8 @@
\l{http://developer.android.com/tools/sdk/ndk/index.html} \l{http://developer.android.com/tools/sdk/ndk/index.html}
{Android NDK} from Google. {Android NDK} from Google.
\note Android Studio is currently not supported by \QC.
\li On Windows, you also need the following: \li On Windows, you also need the following:
\list \list
......
...@@ -291,6 +291,7 @@ ...@@ -291,6 +291,7 @@
\li In the \uicontrol Application group, you can give the application a name and \li In the \uicontrol Application group, you can give the application a name and
select an icon for it. The three icon fields can contain different versions select an icon for it. The three icon fields can contain different versions
of the icon with low, medium, and high DPI values, from left to right. of the icon with low, medium, and high DPI values, from left to right.
You can also give an activity a name and select the activity to run.
\li In the \uicontrol Permissions field, you can specify the permissions that your \li In the \uicontrol Permissions field, you can specify the permissions that your
application needs. Users are asked to grant the permissions when they application needs. Users are asked to grant the permissions when they
......
...@@ -55,20 +55,22 @@ ...@@ -55,20 +55,22 @@
developers working on the same projects. developers working on the same projects.
For example, if you work on a project and need to switch to another project 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 and then close the for a while, you can clone the current session to save it under a name and
project and all the files in it. Everything that you open after saving the create a new session for the other project. Everything that you open after
session becomes a part of a new session. When you want to return to working switching to the new session becomes a part of it. When you want to return
on the first project, open the saved session. \QC opens the projects and to working on the first project, switch to the saved session. \QC opens the
files that belong to the session. projects and files that belong to the session.
To create a new session or remove existing sessions, select \uicontrol File > To save a session under a new name, select \uicontrol File >
\uicontrol{Session Manager}. \uicontrol {Session Manager} > \uicontrol Clone.
To create a new session, select \uicontrol File >
\uicontrol {Session Manager} > \uicontrol New.
\image qtcreator-session-manager.png \image qtcreator-session-manager.png
To switch between sessions, choose \uicontrol {File > Session Manager}. If you do To switch between sessions, choose \uicontrol {File > Session Manager} >
not create or select a session, \QC always uses the default session, which \uicontrol {Switch to}.
was created the last time you exited \QC.
When you launch \QC, a list of existing sessions is displayed in the When you launch \QC, a list of existing sessions is displayed in the
\uicontrol Welcome mode. \uicontrol Welcome mode.
......
...@@ -486,6 +486,11 @@ ...@@ -486,6 +486,11 @@
To determine whether the keywords in the whole project or in the current To determine whether the keywords in the whole project or in the current
file are displayed by default, select \uicontrol {Scanning scope}. file are displayed by default, select \uicontrol {Scanning scope}.
To exclude files from scanning, select \uicontrol {To-Do Settings} in the
\uicontrol Projects mode. Select \uicontrol Add and enter a regular
expression that matches the path to files to exclude. Use a forward slash
(/) as a separator in the path also on Windows.
The Todo plugin is disabled by default. To enable the plugin, select The Todo plugin is disabled by default. To enable the plugin, select
\uicontrol Help > \uicontrol {About Plugins} > \uicontrol Utilities > \uicontrol Help > \uicontrol {About Plugins} > \uicontrol Utilities >
\uicontrol Todo and restart \uicontrol Todo and restart
......
...@@ -722,6 +722,12 @@ ...@@ -722,6 +722,12 @@
deselect the \uicontrol Load check box for the \uicontrol Perforce plugin in the deselect the \uicontrol Load check box for the \uicontrol Perforce plugin in the
\uicontrol {Version Control} group. \uicontrol {Version Control} group.
In the Perforce options, you can specify workspace details:
\uicontrol {P4 user}, \uicontrol {P4 client}, and \uicontrol {P4 port}. To
specify the details individually for several projects, use configuration
files instead. Create a \c {p4config.txt} configuration file for each
project in the top level project directory.
The \uicontrol Perforce submenu contains the following additional items: The \uicontrol Perforce submenu contains the following additional items:
\table \table
......
...@@ -39,13 +39,20 @@ ...@@ -39,13 +39,20 @@
Since \QC 1.1, CMake configuration files are supported. Since \QC 1.3, the Since \QC 1.1, CMake configuration files are supported. Since \QC 1.3, the
Microsoft tool chain is supported if the CMake version is at least 2.8. Microsoft tool chain is supported if the CMake version is at least 2.8.
\section1 Setting the Path for CMake \QC automatically detects the CMake executable specified in the \c PATH.
You can add paths to other CMake executables and use them in different
build and run \l{glossary-buildandrun-kit}{kits}.
You can set the path for the CMake executable in \uicontrol Tools > \section1 Adding CMake Tools
\uicontrol Options > \uicontrol {Build & Run} > \uicontrol CMake.
To specify paths to CMake executables, select \uicontrol Tools >
\uicontrol Options > \uicontrol {Build & Run} > \uicontrol CMake >
\uicontrol Add.
\image qtcreator-cmakeexecutable.png \image qtcreator-cmakeexecutable.png
\section1 Opening CMake Projects
\note Before you open a CMake project, you must modify the \c {PATH} \note Before you open a CMake project, you must modify the \c {PATH}
environment variable to include the bin folders of \c mingw and Qt. environment variable to include the bin folders of \c mingw and Qt.
...@@ -60,8 +67,6 @@ ...@@ -60,8 +67,6 @@
C:\Qt\Tools\QtCreator\qtcreator.exe C:\Qt\Tools\QtCreator\qtcreator.exe
\endcode \endcode
\section1 Opening CMake Projects
To open a CMake project: To open a CMake project:
\list 1 \list 1
...@@ -103,6 +108,9 @@ ...@@ -103,6 +108,9 @@
\QC supports multiple build configurations. You can change the build \QC supports multiple build configurations. You can change the build
directory after the initial import. directory after the initial import.
The build and run kit that you select determines which CMake tool is used
for building. For more information, see \l {Adding Kits}.
\section1 Running CMake Projects \section1 Running CMake Projects
\QC automatically adds \uicontrol {Run Configurations} for all targets \QC automatically adds \uicontrol {Run Configurations} for all targets
......
...@@ -155,8 +155,8 @@ ...@@ -155,8 +155,8 @@
\image qtcreator-options-qbs.png \image qtcreator-options-qbs.png
To add keys and values to a build profile that is associated with a build You can modify a build profile that is associated with a build and run kit
and run kit: by editing the values of the keys generated by \QC and by adding new values:
\list 1 \list 1
...@@ -166,12 +166,21 @@ ...@@ -166,12 +166,21 @@
\li Select \uicontrol Edit to edit the profile associated with the kit. \li Select \uicontrol Edit to edit the profile associated with the kit.
\li Select \uicontrol Add to add keys and values to the profile. \li Select \uicontrol Add to add keys and values to the profile or to
Spefify keys as: \c <module_name>.<property_name>. Specify the modify existing values.
values as JSON literals.
\li In the \uicontrol Key column, spefify the key to add or modify as:
\c <module_name>.<property_name>.
\li In the \uicontrol Value column, specify a value as a JSON literal.
\li Click \uicontrol OK.
\endlist \endlist
The values that you have modified are displayed in red in the
\uicontrol {Profile properties} field.
For a list of available keys and values, see the For a list of available keys and values, see the
\l{http://doc.qt.io/qbs/list-of-modules.html}{List of Modules} in the \l{http://doc.qt.io/qbs/list-of-modules.html}{List of Modules} in the
Qbs Manual. Qbs Manual.
......
...@@ -114,6 +114,10 @@ ...@@ -114,6 +114,10 @@
the build step and add a custom build step that specifies another shell the build step and add a custom build step that specifies another shell
command. command.
To generate debug symbols also for applications compiled in release mode,
select the \uicontrol {Generate separate debug info} check box. For more
information, see \l{Using the CPU Usage Analyzer}.
\QC is integrated to \l{http://doc.qt.io/QtQuickCompiler/} \QC is integrated to \l{http://doc.qt.io/QtQuickCompiler/}
{Qt Quick Compiler} (commercial only) that enables you to compile QML source {Qt Quick Compiler} (commercial only) that enables you to compile QML source
code into the final binary. This code into the final binary. This
......
...@@ -88,6 +88,11 @@ ...@@ -88,6 +88,11 @@
\li \l{Specifying Dependencies}{Dependencies} \li \l{Specifying Dependencies}{Dependencies}
\li \l{Using Clang Static Analyzer}{Clang Static Analyzer Settings}
(commercial only)
\li \l{To-Do List}{To-Do Settings} (experimental)
\endlist \endlist
Use the \uicontrol Build and \uicontrol Run buttons to switch between the build and Use the \uicontrol Build and \uicontrol Run buttons to switch between the build and
......
...@@ -114,6 +114,11 @@ ...@@ -114,6 +114,11 @@
configuration that should be used by qmake. If you leave this field configuration that should be used by qmake. If you leave this field
empty, the default mkspec of the selected Qt version is used. empty, the default mkspec of the selected Qt version is used.
\li In the \uicontrol {CMake Tool} field, select the CMake tool to use
for building the project. Select \uicontrol Manage to add installed
CMake tools to the list. For more information, see
\l{Adding CMake Tools}.
\endlist \endlist
*/ */
...@@ -469,7 +469,7 @@ ...@@ -469,7 +469,7 @@
\section2 Previewing Component Size \section2 Previewing Component Size
The width and height of the root item in a QML file determine the size of The width and height of the root item in a QML file determine the size of
the component. You can reuse component, such as buttons, in different the component. You can reuse components, such as buttons, in different
sizes in other QML files and design screens for use with different device sizes in other QML files and design screens for use with different device
profiles, screen resolution, or screen orientation. The component size profiles, screen resolution, or screen orientation. The component size
might also be zero (0,0) if its final size is determined by property might also be zero (0,0) if its final size is determined by property
......
...@@ -39,7 +39,12 @@ ...@@ -39,7 +39,12 @@
\note GIMP does not support grouping, and therefore, each layer is exported \note GIMP does not support grouping, and therefore, each layer is exported
as an item in GIMP. as an item in GIMP.
You can open the QML file in \QC for editing. If you edit the file in Adobe You can open the QML file in \QC for editing. By default, the export scripts
generate Qt Quick 1 files. To edit the files in \QMLD, change the import
statements in the export scripts to import Qt Quick 2. Or, you can change
the import statement in each file after generating the files.
If you edit the file in Adobe
Photoshop and export it to the same directory again, any changes you made in Photoshop and export it to the same directory again, any changes you made in
\QC are overwritten. However, you can re-export graphical assets without \QC are overwritten. However, you can re-export graphical assets without
recreating the QML code. recreating the QML code.
...@@ -114,13 +119,21 @@ ...@@ -114,13 +119,21 @@
\list 1 \list 1
\li Download the export script, \e{Export QML.jx}, from \li Clone the repository that contains the export script,
\l{https://code.qt.io/cgit/qt-labs/photoshop-qmlexporter.git/} \e{Export QML.jx}, from
{code.qt.io}. \l{https://codereview.qt-project.org/#/admin/projects/qt-labs/photoshop-qmlexporter}
{Qt Code Review}.
\note Read the README.txt file in the repository for latest \note Read the README.txt file in the repository for latest
information about the script. information about the script.
\li To generate QML files that you can edit in \QMLD, edit the import
statement in \e {Export QML.jx}. For example:
\code
qmlfile.write("import QtQuick 2.5\n");
\endcode
\li Double-click the export script to add the export command to the \li Double-click the export script to add the export command to the
\uicontrol Scripts menu. You can also copy the script file to the Adobe \uicontrol Scripts menu. You can also copy the script file to the Adobe
Photoshop scripts directory (typically, \c{\Presets\Scripts} in the Photoshop scripts directory (typically, \c{\Presets\Scripts} in the
...@@ -160,21 +173,12 @@ ...@@ -160,21 +173,12 @@
The script has been tested to work on GIMP 2. You can download GIMP 2 from The script has been tested to work on GIMP 2. You can download GIMP 2 from
\l{http://www.gimp.org/downloads/}{GIMP Downloads}. \l{http://www.gimp.org/downloads/}{GIMP Downloads}.
To use the export script on Microsoft Windows, you also need to install the
GIMP Python extension (Python, PyCairo, PyGobject, PyGTK). However, GIMP is
not officially supported on Windows, so we cannot guarantee that this will
work.
\list 1 \list 1
\li On Microsoft Windows, you must first add Python support to your GIMP \li Clone the repository that contains the export script,
installation, as instructed in \e qmlexporter.py, from
\l {http://www.gimpusers.com/tutorials/install-python-for-gimp-2-6-windows} \l{https://codereview.qt-project.org/#/admin/projects/qt-labs/gimp-qmlexporter}
{Tutorial: Installing Python for GIMP 2.6 (Windows)}. {Qt Code Review}.
\li Download the export script, \e qmlexporter.py, from
\l{https://code.qt.io/cgit/qt-labs/gimp-qmlexporter.git/}
{code.qt.io}.
\note Read the INSTALL.txt in the repository for latest information \note Read the INSTALL.txt in the repository for latest information
about the script. about the script.
...@@ -186,6 +190,13 @@ ...@@ -186,6 +190,13 @@
On Linux, run the following command: \c {chmod u+rx} On Linux, run the following command: \c {chmod u+rx}
\li To generate QML files that you can edit in \QMLD, edit the import
statement in \e qmlexporter.py. For example:
\code
f.write('import QtQuick 2.5\n')
\endcode
\li Restart GIMP to have the export command added to the \uicontrol File menu. \li Restart GIMP to have the export command added to the \uicontrol File menu.
\li Choose \uicontrol {File > Export to QML} to export the design to a QML \li Choose \uicontrol {File > Export to QML} to export the design to a QML
......
function llvmConfig(qbs) var File = loadExtension("qbs.File")
var MinimumLLVMVersion = "3.6.0"
function isSuitableLLVMConfig(llvmConfigCandidate, qtcFunctions, processOutputReader)
{
if (File.exists(llvmConfigCandidate)) {
var candidateVersion = version(llvmConfigCandidate, processOutputReader);
if (candidateVersion && candidateVersion.length)
return qtcFunctions.versionIsAtLeast(candidateVersion, MinimumLLVMVersion)
}
return false;
}
function llvmConfig(qbs, qtcFunctions, processOutputReader)
{ {
var llvmInstallDirFromEnv = qbs.getEnv("LLVM_INSTALL_DIR") var llvmInstallDirFromEnv = qbs.getEnv("LLVM_INSTALL_DIR")
var llvmConfigVariants = [ var llvmConfigVariants = [
...@@ -10,7 +23,7 @@ function llvmConfig(qbs) ...@@ -10,7 +23,7 @@ function llvmConfig(qbs)
if (llvmInstallDirFromEnv) { if (llvmInstallDirFromEnv) {
for (var i = 0; i < llvmConfigVariants.length; ++i) { for (var i = 0; i < llvmConfigVariants.length; ++i) {
var variant = llvmInstallDirFromEnv + "/bin/" + llvmConfigVariants[i]; var variant = llvmInstallDirFromEnv + "/bin/" + llvmConfigVariants[i];
if (File.exists(variant)) if (isSuitableLLVMConfig(variant, qtcFunctions, processOutputReader))
return variant; return variant;
} }
} }
...@@ -22,7 +35,7 @@ function llvmConfig(qbs) ...@@ -22,7 +35,7 @@ function llvmConfig(qbs)
for (var i = 0; i < llvmConfigVariants.length; ++i) { for (var i = 0; i < llvmConfigVariants.length; ++i) {
for (var j = 0; j < pathList.length; ++j) { for (var j = 0; j < pathList.length; ++j) {
var variant = pathList[j] + "/" + llvmConfigVariants[i]; var variant = pathList[j] + "/" + llvmConfigVariants[i];
if (File.exists(variant)) if (isSuitableLLVMConfig(variant, qtcFunctions, processOutputReader))
return variant; return variant;
} }
} }
......
...@@ -58,7 +58,6 @@ Project { ...@@ -58,7 +58,6 @@ Project {
"QT_NO_CAST_FROM_ASCII" "QT_NO_CAST_FROM_ASCII"
].concat(testsEnabled ? ["WITH_TESTS"] : []) ].concat(testsEnabled ? ["WITH_TESTS"] : [])
qbsSearchPaths: "qbs" qbsSearchPaths: "qbs"
property bool enableQbsJavaSupport: false
references: [ references: [
"src/src.qbs", "src/src.qbs",
......
...@@ -28,44 +28,35 @@ ...@@ -28,44 +28,35 @@
** **
****************************************************************************/ ****************************************************************************/
#define QT_NO_META_MACROS // Include qobjectdefs.h from Qt ...
#include_next <qobjectdefs.h>
#if defined(QT_NO_KEYWORDS) #pragma clang diagnostic push
# define QT_NO_EMIT #pragma clang diagnostic ignored "-Wmacro-redefined"
#else
# ifndef QT_NO_SIGNALS_SLOTS_KEYWORDS // ...and redefine macros for tagging signals/slots
# define signals public __attribute__((annotate("qt_signal"))) #ifdef signals
# define slots __attribute__((annotate("qt_slot"))) # define signals public __attribute__((annotate("qt_signal")))
# endif #endif
#ifdef slots
# define slots __attribute__((annotate("qt_slot")))
#endif
#ifdef Q_SIGNALS
# define Q_SIGNALS public __attribute__((annotate("qt_signal")))
#endif
#ifdef Q_SLOTS
# define Q_SLOTS slots __attribute__((annotate("qt_slot")))
#endif #endif
#define Q_SIGNALS public __attribute__((annotate("qt_signal")))
#define Q_SLOTS slots __attribute__((annotate("qt_slot")))
#define Q_SIGNAL __attribute__((annotate("qt_signal")))
#define Q_SLOT __attribute__((annotate("qt_slot")))
#define Q_PRIVATE_SLOT(d, signature)
#define Q_EMIT #ifdef Q_SIGNAL
#ifndef QT_NO_EMIT # define Q_SIGNAL __attribute__((annotate("qt_signal")))
# define emit
#endif #endif
#define Q_CLASSINFO(name, value)
#define Q_PLUGIN_METADATA(x)
#define Q_INTERFACES(x)
#define Q_PROPERTY(text)
#define Q_PRIVATE_PROPERTY(d, text)
#define Q_REVISION(v)
#define Q_OVERRIDE(text)
#define Q_ENUMS(x)
#define Q_FLAGS(x)
#define Q_ENUM(x)
#define Q_FLAG(x)
#define Q_SCRIPTABLE
#define Q_INVOKABLE
#define Q_GADGET \ #ifdef Q_SLOT
public: \ # define Q_SLOT __attribute__((annotate("qt_slot")))
static const QMetaObject staticMetaObject; \ #endif
private:
#define SIGNAL(a) #a #pragma clang diagnostic pop
#define SLOT(a) #a
...@@ -41,7 +41,7 @@ def qdump__boost__bimaps__bimap(d, value): ...@@ -41,7 +41,7 @@ def qdump__boost__bimaps__bimap(d, value):
def qdump__boost__optional(d, value): def qdump__boost__optional(d, value):
if int(value["m_initialized"]) == 0: if int(value["m_initialized"]) == 0:
d.putValue("<uninitialized>") d.putSpecialValue(SpecialUninitializedValue)
d.putNumChild(0) d.putNumChild(0)
else: else:
type = d.templateArgument(value.type, 0) type = d.templateArgument(value.type, 0)
......
...@@ -46,8 +46,11 @@ def extractPointerType(d, value): ...@@ -46,8 +46,11 @@ def extractPointerType(d, value):
try: try:
return readLiteral(d, value["_name"]) + postfix return readLiteral(d, value["_name"]) + postfix
except: except:
if str(value.type.unqualified().target()) == "CPlusPlus::IntegerType": typeName = str(value.type.unqualified().target())
if typeName == "CPlusPlus::IntegerType":
return "int" + postfix return "int" + postfix
elif typeName == "CPlusPlus::VoidType":
return "void" + postfix
return "<unsupported>" return "<unsupported>"
def readTemplateName(d, value): def readTemplateName(d, value):
......
...@@ -129,8 +129,18 @@ Hex2EncodedFloat4, \ ...@@ -129,8 +129,18 @@ Hex2EncodedFloat4, \
Hex2EncodedFloat8, \ Hex2EncodedFloat8, \
IPv6AddressAndHexScopeId, \ IPv6AddressAndHexScopeId, \
Hex2EncodedUtf8WithoutQuotes, \ Hex2EncodedUtf8WithoutQuotes, \
DateTimeInternal \ DateTimeInternal, \
= range(30) SpecialEmptyValue, \
SpecialUninitializedValue, \
SpecialInvalidValue, \
SpecialNotAccessibleValue, \
SpecialItemCountValue, \
SpecialMinimumItemCountValue, \
SpecialNotCallableValue, \
SpecialNullReferenceValue, \
SpecialOptimizedOutValue, \
SpecialEmptyStructureValue, \
= range(40)
# Display modes. Keep that synchronized with DebuggerDisplay in watchutils.h # Display modes. Keep that synchronized with DebuggerDisplay in watchutils.h
StopDisplay, \ StopDisplay, \
...@@ -292,7 +302,7 @@ class Children: ...@@ -292,7 +302,7 @@ class Children:
if self.d.passExceptions: if self.d.passExceptions:
showException("CHILDREN", exType, exValue, exTraceBack) showException("CHILDREN", exType, exValue, exTraceBack)
self.d.putNumChild(0) self.d.putNumChild(0)
self.d.putValue("<not accessible>") self.d.putSpecialValue(SpecialNotAccessibleValue)
if not self.d.currentMaxNumChild is None: if not self.d.currentMaxNumChild is None:
if self.d.currentMaxNumChild < self.d.currentNumChild: if self.d.currentMaxNumChild < self.d.currentNumChild:
self.d.put('{name="<incomplete>",value="",type="",numchild="0"},') self.d.put('{name="<incomplete>",value="",type="",numchild="0"},')
...@@ -692,7 +702,7 @@ class DumperBase: ...@@ -692,7 +702,7 @@ class DumperBase: