forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/4.2' into 4.3
Conflicts: doc/src/qtcreator.qdoc tests/system/suite_general/suite.conf Change-Id: Ia298b177d6920a1d853e342b62cf98f7c48a278a
This commit is contained in:
37
dist/changes-4.2.2.md
vendored
37
dist/changes-4.2.2.md
vendored
@@ -7,6 +7,14 @@ you can check out from the public Git repository. For example:
|
||||
git clone git://code.qt.io/qt-creator/qt-creator.git
|
||||
git log --cherry-pick --pretty=oneline v4.2.1..v4.2.2
|
||||
|
||||
All Projects
|
||||
|
||||
* Fixed available kits after selecting Qt 5.8 as minimal required version
|
||||
in wizard (QTCREATORBUG-17574)
|
||||
* Fixed that `Run in terminal` was sometimes ignored (QTCREATORBUG-17608)
|
||||
* Fixed that `This file is not part of any project` was shown in editor after
|
||||
adding new file to project (QTCREATORBUG-17743)
|
||||
|
||||
Qt Support
|
||||
|
||||
* Fixed ABI detection of static Qt builds
|
||||
@@ -14,6 +22,18 @@ Qt Support
|
||||
Qbs Projects
|
||||
|
||||
* Fixed duplicate include paths (QTCREATORBUG-17381)
|
||||
* Fixed that generated object files where shown in Locator and Advanced Search
|
||||
(QTCREATORBUG-17382)
|
||||
|
||||
C++ Support
|
||||
|
||||
* Fixed that inline namespaces were used in generated code (QTCREATORBUG-16086)
|
||||
|
||||
Debugging
|
||||
|
||||
* GDB
|
||||
* Fixed performance regression when resolving enum names
|
||||
(QTCREATORBUG-17598)
|
||||
|
||||
Version Control Systems
|
||||
|
||||
@@ -23,3 +43,20 @@ Version Control Systems
|
||||
when using `git grep`
|
||||
* Fixed discarding changes before performing other actions (such as Pull)
|
||||
(QTCREATORBUG-17156)
|
||||
|
||||
Platform Specific
|
||||
|
||||
Android
|
||||
|
||||
* Fixed that installing package with lower version number than already installed
|
||||
package silently failed (QTCREATORBUG-17789)
|
||||
* Fixed crash when re-running application after stopping it (QTCREATORBUG-17691)
|
||||
|
||||
iOS
|
||||
|
||||
* Fixed running applications on devices with iOS 10.1 and later
|
||||
(QTCREATORBUG-17818)
|
||||
|
||||
BareMetal
|
||||
|
||||
* Fixed debugging with OpenOCD in TCP/IP mode on Windows (QTCREATORBUG-17765)
|
||||
|
||||
@@ -10,7 +10,6 @@ defines = Q_QDOC \
|
||||
Q_BYTE_ORDER \
|
||||
QT_DEPRECATED \
|
||||
Q_NO_USING_KEYWORD \
|
||||
__cplusplus \
|
||||
$QTC_LICENSE_TYPE
|
||||
__cplusplus
|
||||
|
||||
versionsym = QT_VERSION_STR
|
||||
|
||||
@@ -38,27 +38,26 @@ sourcedirs = . \
|
||||
headers.fileextensions = "*.h"
|
||||
sources.fileextensions = "*.cpp *.qdoc"
|
||||
|
||||
imagedirs = $SRCDIR/api/images $SRCDIR/images $SRCDIR/templates/images
|
||||
outputdir = $OUTDIR
|
||||
exampledirs = $SRCDIR/api/examples
|
||||
imagedirs = ../api/images ../images ../templates/images
|
||||
exampledirs = ../api/examples
|
||||
|
||||
indexes += $QDOC_INDEX_DIR/qtwidgets/qtwidgets.index \
|
||||
$QDOC_INDEX_DIR/qtcore/qtcore.index \
|
||||
$QDOC_INDEX_DIR/qtqml/qtqml.index \
|
||||
$QDOC_INDEX_DIR/qtquick/qtquick.index \
|
||||
$QDOC_INDEX_DIR/qmake/qmake.index \
|
||||
$QDOC_INDEX_DIR/qtdesigner/qtdesigner.index \
|
||||
$QDOC_INDEX_DIR/qtdoc/qtdoc.index \
|
||||
$QDOC_INDEX_DIR/qtgui/qtgui.index \
|
||||
$QDOC_INDEX_DIR/qthelp/qthelp.index \
|
||||
$QDOC_INDEX_DIR/qtquickcontrols/qtquickcontrols.index \
|
||||
$QDOC_INDEX_DIR/qtquicklayouts/qtquicklayouts.index \
|
||||
$QDOC_INDEX_DIR/qtlinguist/qtlinguist.index \
|
||||
$QDOC_INDEX_DIR/qtscript/qtscript.index \
|
||||
$QDOC_INDEX_DIR/qtsensors/qtsensors.index \
|
||||
$QDOC_INDEX_DIR/qtuitools/qtuitools.index \
|
||||
$QDOC_INDEX_DIR/qtwebkit/qtwebkit.index \
|
||||
$QDOC_INDEX_DIR/qtxml/qtxml.index
|
||||
depends += qtwidgets \
|
||||
qtcore \
|
||||
qtqml \
|
||||
qtquick \
|
||||
qmake \
|
||||
qtdesigner \
|
||||
qtdoc \
|
||||
qtgui \
|
||||
qthelp \
|
||||
qtquickcontrols \
|
||||
qtquicklayouts \
|
||||
qtlinguist \
|
||||
qtscript \
|
||||
qtsensors \
|
||||
qtuitools \
|
||||
qtwebkit \
|
||||
qtxml
|
||||
|
||||
include(macros.qdocconf)
|
||||
include(qt-cpp-ignore.qdocconf)
|
||||
|
||||
@@ -3,51 +3,49 @@ description = "Qt Creator Manual"
|
||||
url = http://doc.qt.io/qtcreator
|
||||
|
||||
headerdirs =
|
||||
sourcedirs = $SRCDIR/src
|
||||
imagedirs = $SRCDIR/images \
|
||||
$SRCDIR/templates/images \
|
||||
$SRCDIR/../src/libs/qmleditorwidgets/images \
|
||||
$SRCDIR/../src/libs/utils/images \
|
||||
$SRCDIR/../src/plugins/android/images \
|
||||
$SRCDIR/../src/plugins/autotest/images \
|
||||
$SRCDIR/../src/plugins/classview/images \
|
||||
$SRCDIR/../src/plugins/coreplugin/images \
|
||||
$SRCDIR/../src/plugins/debugger/images \
|
||||
$SRCDIR/../src/plugins/diffeditor/images \
|
||||
$SRCDIR/../src/plugins/help/images \
|
||||
$SRCDIR/../src/plugins/projectexplorer/images \
|
||||
$SRCDIR/../src/plugins/qmldesigner/components/formeditor \
|
||||
$SRCDIR/../src/plugins/qmldesigner/components/navigator \
|
||||
$SRCDIR/../src/plugins/scxmleditor/common/images \
|
||||
$SRCDIR/../src/plugins/texteditor/images
|
||||
sourcedirs = ../src
|
||||
imagedirs = ../images \
|
||||
../templates/images \
|
||||
../../src/libs/qmleditorwidgets/images \
|
||||
../../src/libs/utils/images \
|
||||
../../src/plugins/android/images \
|
||||
../../src/plugins/autotest/images \
|
||||
../../src/plugins/classview/images \
|
||||
../../src/plugins/coreplugin/images \
|
||||
../../src/plugins/debugger/images \
|
||||
../../src/plugins/diffeditor/images \
|
||||
../../src/plugins/help/images \
|
||||
../../src/plugins/projectexplorer/images \
|
||||
../../src/plugins/qmldesigner/components/formeditor \
|
||||
../../src/plugins/qmldesigner/components/navigator \
|
||||
../../src/plugins/scxmleditor/common/images \
|
||||
../../src/plugins/texteditor/images
|
||||
|
||||
outputdir = $OUTDIR
|
||||
exampledirs = $SRCDIR/examples
|
||||
exampledirs = ../examples
|
||||
examples.fileextensions += *.qml *.svg
|
||||
|
||||
HTML.extraimages = images/commercial.png
|
||||
qhp.QtCreator.extraFiles = images/commercial.png
|
||||
|
||||
|
||||
indexes += $QDOC_INDEX_DIR/qtwidgets/qtwidgets.index \
|
||||
$QDOC_INDEX_DIR/qtcore/qtcore.index \
|
||||
$QDOC_INDEX_DIR/qtqml/qtqml.index \
|
||||
$QDOC_INDEX_DIR/qtquick/qtquick.index \
|
||||
$QDOC_INDEX_DIR/qmake/qmake.index \
|
||||
$QDOC_INDEX_DIR/qtdesigner/qtdesigner.index \
|
||||
$QDOC_INDEX_DIR/qtdoc/qtdoc.index \
|
||||
$QDOC_INDEX_DIR/qtgui/qtgui.index \
|
||||
$QDOC_INDEX_DIR/qthelp/qthelp.index \
|
||||
$QDOC_INDEX_DIR/qtquickcontrols/qtquickcontrols.index \
|
||||
$QDOC_INDEX_DIR/qtquickcontrols2/qtquickcontrols2.index \
|
||||
$QDOC_INDEX_DIR/qtquickextras/qtquickextras.index \
|
||||
$QDOC_INDEX_DIR/qtlinguist/qtlinguist.index \
|
||||
$QDOC_INDEX_DIR/qtscript/qtscript.index \
|
||||
$QDOC_INDEX_DIR/qtscxml/qtscxml.index \
|
||||
$QDOC_INDEX_DIR/qtsensors/qtsensors.index \
|
||||
$QDOC_INDEX_DIR/qttestlib/qttestlib.index \
|
||||
$QDOC_INDEX_DIR/qtuitools/qtuitools.index \
|
||||
$QDOC_INDEX_DIR/qtxml/qtxml.index
|
||||
depends += qtwidgets \
|
||||
qtcore \
|
||||
qtqml \
|
||||
qtquick \
|
||||
qmake \
|
||||
qtdesigner \
|
||||
qtdoc \
|
||||
qtgui \
|
||||
qthelp \
|
||||
qtquickcontrols \
|
||||
qtquickcontrols2 \
|
||||
qtquickextras \
|
||||
qtlinguist \
|
||||
qtscript \
|
||||
qtscxml \
|
||||
qtsensors \
|
||||
qttestlib \
|
||||
qtuitools \
|
||||
qtxml
|
||||
|
||||
include(macros.qdocconf)
|
||||
include(qt-cpp-ignore.qdocconf)
|
||||
@@ -67,7 +65,7 @@ qhp.QtCreator.indexRoot =
|
||||
|
||||
qhp.QtCreator.subprojects = manual
|
||||
qhp.QtCreator.subprojects.manual.title = Qt Creator Manual
|
||||
qhp.QtCreator.subprojects.manual.indexTitle = Qt Creator Manual
|
||||
qhp.QtCreator.subprojects.manual.indexTitle = Qt Creator TOC
|
||||
qhp.QtCreator.subprojects.manual.type = manual
|
||||
|
||||
# Doxygen compatibility commands
|
||||
|
||||
90
doc/doc.pri
90
doc/doc.pri
@@ -1,89 +1,9 @@
|
||||
HELPGENERATOR = $$shell_path($$[QT_INSTALL_BINS]/qhelpgenerator) -platform minimal
|
||||
QDOC_BIN = $$shell_path($$[QT_INSTALL_BINS]/qdoc)
|
||||
QDOC_GLOBAL = QT_INSTALL_DOCS=$$[QT_INSTALL_DOCS/src] QDOC_INDEX_DIR=$$[QT_INSTALL_DOCS]
|
||||
COMPAT =
|
||||
build_online_docs: \
|
||||
QTC_DOCS = $$PWD/qtcreator-online.qdocconf $$PWD/api/qtcreator-dev-online.qdocconf
|
||||
else: \
|
||||
QTC_DOCS = $$PWD/qtcreator.qdocconf $$PWD/api/qtcreator-dev.qdocconf
|
||||
|
||||
VERSION_TAG = $$replace(QTCREATOR_VERSION, "[-.]", )
|
||||
|
||||
isEmpty(LICENSE_TYPE):LICENSE_TYPE=opensource
|
||||
|
||||
# unset the installdir for qdoc, so we force generation
|
||||
# of URLs for the links to the Qt documentation
|
||||
QMAKE_DOCS_INSTALLDIR =
|
||||
|
||||
defineReplace(cmdEnv) {
|
||||
!equals(QMAKE_DIR_SEP, /): 1 ~= s,^(.*)$,(set \\1) &&,g
|
||||
return("$$1")
|
||||
}
|
||||
|
||||
defineReplace(qdoc) {
|
||||
return("$$cmdEnv(SRCDIR=$$PWD OUTDIR=$$1 QTC_VERSION=$$QTCREATOR_VERSION QTC_VERSION_TAG=$$VERSION_TAG QTC_LICENSE_TYPE=$$LICENSE_TYPE $$QDOC_GLOBAL) $$QDOC_BIN")
|
||||
}
|
||||
|
||||
QHP_FILE = $$OUT_PWD/doc/html/qtcreator.qhp
|
||||
QCH_FILE = $$IDE_DOC_PATH/qtcreator.qch
|
||||
|
||||
HELP_DEP_FILES = $$PWD/src/qtcreator.qdoc \
|
||||
$$PWD/config/macros.qdocconf \
|
||||
$$PWD/config/qt-cpp-ignore.qdocconf \
|
||||
$$PWD/config/qt-defines.qdocconf
|
||||
|
||||
html_docs.commands = $$qdoc($$OUT_PWD/doc/html) $$PWD/qtcreator.qdocconf
|
||||
html_docs.depends += $$HELP_DEP_FILES
|
||||
html_docs.files = $$QHP_FILE
|
||||
|
||||
html_docs_online.commands = $$qdoc($$OUT_PWD/doc/html) $$PWD/qtcreator-online.qdocconf
|
||||
html_docs_online.depends += $$HELP_DEP_FILES
|
||||
|
||||
qch_docs.commands = $$HELPGENERATOR -o \"$$QCH_FILE\" $$QHP_FILE
|
||||
qch_docs.depends += html_docs
|
||||
|
||||
DEV_QHP_FILE = $$OUT_PWD/doc/html-dev/qtcreator-dev.qhp
|
||||
DEV_QCH_FILE = $$IDE_DOC_PATH/qtcreator-dev.qch
|
||||
|
||||
DEV_HELP_DEP_FILES = \
|
||||
$$PWD/api/qtcreator-api.qdoc \
|
||||
$$PWD/api/coding-style.qdoc \
|
||||
$$PWD/api/external-tool-spec.qdoc \
|
||||
$$PWD/api/qtcreator-dev.qdoc \
|
||||
$$PWD/api/qtcreator-dev-wizards.qdoc \
|
||||
$$PWD/api/creating-plugins.qdoc \
|
||||
$$PWD/api/getting-and-building.qdoc \
|
||||
$$PWD/api/first-plugin.qdoc \
|
||||
$$PWD/api/plugin-metadata.qdoc \
|
||||
$$PWD/api/plugin-lifecycle.qdoc \
|
||||
$$PWD/api/pluginmanager.qdoc \
|
||||
$$PWD/api/qtcreator-documentation.qdoc \
|
||||
$$PWD/api/qtcreator-ui-text.qdoc \
|
||||
$$PWD/api/qtcreator-dev.qdocconf
|
||||
|
||||
dev_html_docs.commands = $$qdoc($$OUT_PWD/doc/html-dev) $$PWD/api/qtcreator-dev.qdocconf
|
||||
dev_html_docs.depends += $$DEV_HELP_DEP_FILES
|
||||
|
||||
dev_html_docs_online.commands = $$qdoc($$OUT_PWD/doc/html-dev) $$PWD/api/qtcreator-dev-online.qdocconf
|
||||
dev_html_docs_online.depends += $$DEV_HELP_DEP_FILES
|
||||
|
||||
dev_qch_docs.commands = $$HELPGENERATOR -o \"$$DEV_QCH_FILE\" $$DEV_QHP_FILE
|
||||
dev_qch_docs.depends += dev_html_docs
|
||||
|
||||
inst_qch_docs.files = $$QCH_FILE
|
||||
inst_qch_docs.path = $$INSTALL_DOC_PATH
|
||||
inst_qch_docs.CONFIG += no_check_exist no_default_install
|
||||
INSTALLS += inst_qch_docs
|
||||
|
||||
inst_dev_qch_docs.files = $$DEV_QCH_FILE
|
||||
inst_dev_qch_docs.path = $$INSTALL_DOC_PATH
|
||||
inst_dev_qch_docs.CONFIG += no_check_exist no_default_install
|
||||
INSTALLS += inst_dev_qch_docs
|
||||
|
||||
install_docs.depends = install_inst_qch_docs install_inst_dev_qch_docs
|
||||
QMAKE_EXTRA_TARGETS += install_docs
|
||||
|
||||
docs_online.depends = html_docs_online dev_html_docs_online
|
||||
docs.depends = qch_docs dev_qch_docs
|
||||
QMAKE_EXTRA_TARGETS += html_docs dev_html_docs html_docs_online dev_html_docs_online qch_docs dev_qch_docs docs docs_online
|
||||
|
||||
DISTFILES = $$HELP_DEP_FILES $$DEV_HELP_DEP_FILES
|
||||
include(../docs.pri)
|
||||
|
||||
fixnavi.commands = \
|
||||
cd $$shell_path($$PWD) && \
|
||||
|
||||
@@ -74,8 +74,6 @@ for my $file (@files) {
|
||||
$inif = 0;
|
||||
$skipping = 0;
|
||||
$define_skip = "";
|
||||
} elsif (keys(%title2page) == 1 && /^\h*\\section1 Table Of Contents/) {
|
||||
$havetoc = 1;
|
||||
} elsif ($havetoc && /^\h*\\list/) {
|
||||
$intoc++;
|
||||
} elsif ($intoc) {
|
||||
@@ -110,7 +108,11 @@ for my $file (@files) {
|
||||
}
|
||||
$title2type{$1} = $curtype;
|
||||
$title2page{$1} = $curpage;
|
||||
$doctitle = $1 if (!$doctitle);
|
||||
if ($1 eq "Qt Creator TOC") {
|
||||
$havetoc = 1;
|
||||
} elsif (!$doctitle) {
|
||||
$doctitle = $1;
|
||||
}
|
||||
$curpage = "";
|
||||
$inhdr = 0;
|
||||
}
|
||||
|
||||
216
doc/src/qtcreator-toc.qdoc
Normal file
216
doc/src/qtcreator-toc.qdoc
Normal file
@@ -0,0 +1,216 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2017 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Creator documentation.
|
||||
**
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Free Documentation License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Free
|
||||
** Documentation License version 1.3 as published by the Free Software
|
||||
** Foundation and appearing in the file included in the packaging of
|
||||
** this file. Please review the following information to ensure
|
||||
** the GNU Free Documentation License version 1.3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
/*!
|
||||
\contentspage {Qt Creator}
|
||||
\page qtcreator-toc.html
|
||||
|
||||
\title Qt Creator TOC
|
||||
|
||||
This file is used only for generating the TOC for the help file to be
|
||||
displayed in the Qt Creator Help mode Contents view.
|
||||
|
||||
\list
|
||||
\li \l{Getting Started}
|
||||
\list
|
||||
\li \l{IDE Overview}
|
||||
\li \l{User Interface}
|
||||
\li \l{Configuring Qt Creator}
|
||||
\li \l{Building and Running an Example}
|
||||
\li \l{Tutorials}
|
||||
\list
|
||||
\li \l{Creating a Qt Quick Application}
|
||||
\li \l{Creating a Qt Widget Based Application}
|
||||
\li \l{Creating a Mobile Application}
|
||||
\endlist
|
||||
\endlist
|
||||
\li \l{Managing Projects}
|
||||
\list
|
||||
\li \l{Creating Projects}
|
||||
\list
|
||||
\li \l{Opening Projects}
|
||||
\li \l{Adding Libraries to Projects}
|
||||
\li \l{Adding New Custom Wizards}
|
||||
\list
|
||||
\li \l{Adding JSON-Based Wizards}
|
||||
\li \l{Adding XML-Based Wizards}
|
||||
\endlist
|
||||
\endlist
|
||||
\li \l{Using Version Control Systems}
|
||||
\list
|
||||
\li \l{Using Bazaar}
|
||||
\li \l{Using ClearCase}
|
||||
\li \l{Using CVS}
|
||||
\li \l{Using Git}
|
||||
\li \l{Using Mercurial}
|
||||
\li \l{Using Perforce}
|
||||
\li \l{Using Subversion}
|
||||
\endlist
|
||||
\li \l{Configuring Projects}
|
||||
\list
|
||||
\li \l{Adding Kits}
|
||||
\li \l{Adding Qt Versions}
|
||||
\li \l{Adding Compilers}
|
||||
\li \l{Adding Debuggers}
|
||||
\li \l{Specifying Build Settings}
|
||||
\li \l{Specifying Run Settings}
|
||||
\li \l{Specifying Editor Settings}
|
||||
\li \l{Specifying Code Style Settings}
|
||||
\li \l{Specifying Dependencies}
|
||||
\li \l{Sharing Project Settings}
|
||||
\endlist
|
||||
\li \l{Managing Sessions}
|
||||
\endlist
|
||||
\li \l{Designing User Interfaces}
|
||||
\list
|
||||
\li \l{Developing Qt Quick Applications}
|
||||
\list
|
||||
\li \l {Creating Qt Quick Projects}
|
||||
\li \l {Qt Quick UI Forms}
|
||||
\li \l {Using Qt Quick Designer}
|
||||
\li \l {Editing PathView Properties}
|
||||
\li \l {Adding Connections}
|
||||
\li \l {Creating Components}
|
||||
\li \l {Creating Buttons}
|
||||
\li \l {Creating Scalable Buttons and Borders}
|
||||
\li \l {Creating Screens}
|
||||
\li \l {Browsing ISO 7000 Icons}
|
||||
\li \l {Exporting Designs from Graphics Software}
|
||||
\li \l {Using QML Modules with Plugins}
|
||||
\endlist
|
||||
\li \l{Developing Widget Based Applications}
|
||||
\list
|
||||
\li \l{Adding Qt Designer Plugins}
|
||||
\endlist
|
||||
\li \l{Optimizing Applications for Mobile Devices}
|
||||
\endlist
|
||||
\li \l{Coding}
|
||||
\list
|
||||
\li \l{Writing Code}
|
||||
\list
|
||||
\li \l{Working in Edit Mode}
|
||||
\li \l{Semantic Highlighting}
|
||||
\li \l{Checking Code Syntax}
|
||||
\li \l{Completing Code}
|
||||
\li \l{Indenting Text or Code}
|
||||
\li \l{Using Qt Quick Toolbars}
|
||||
\li \l{Pasting and Fetching Code Snippets}
|
||||
\li \l{Using Text Editing Macros}
|
||||
\li \l{Comparing Files}
|
||||
\li \l{Parsing C++ Files with the Clang Code Model}
|
||||
\endlist
|
||||
\li \l{Finding}
|
||||
\list
|
||||
\li \l{Finding and Replacing}
|
||||
\li \l{Searching with the Locator}
|
||||
\endlist
|
||||
\li \l{Refactoring}
|
||||
\li \l{Beautifying Source Code}
|
||||
\li \l{Configuring the Editor}
|
||||
\list
|
||||
\li \l{Specifying Text Editor Settings}
|
||||
\li \l{Using FakeVim Mode}
|
||||
\endlist
|
||||
\li \l{Editing MIME Types}
|
||||
\li \l{Modeling}
|
||||
\li \l{Editing State Charts}
|
||||
|
||||
\endlist
|
||||
\li \l{Building and Running}
|
||||
\list
|
||||
\li \l{Building for Multiple Platforms}
|
||||
\li \l{Running on Multiple Platforms}
|
||||
\li \l{Deploying to Mobile Devices}
|
||||
\list
|
||||
\li \l{Deploying Applications to Android Devices}
|
||||
\li \l{Deploying Applications to Embedded Linux Devices}
|
||||
\li \l{Deploying Applications to QNX Neutrino Devices}
|
||||
\endlist
|
||||
\li \l{Connecting Mobile Devices}
|
||||
\list
|
||||
\li \l{Connecting Android Devices}
|
||||
\li \l{Connecting Bare Metal Devices}
|
||||
\li \l{Connecting Embedded Linux Devices}
|
||||
\li \l{Connecting iOS Devices}
|
||||
\li \l{Connecting QNX Devices}
|
||||
\li \l{Connecting Windows Runtime Devices}
|
||||
\endlist
|
||||
\li \l{Customizing the Build Process}
|
||||
\endlist
|
||||
\li \l{Testing}
|
||||
\list
|
||||
\li \l{Debugging}
|
||||
\list
|
||||
\li \l{Setting Up Debugger}
|
||||
\li \l{Launching the Debugger}
|
||||
\li \l{Interacting with the Debugger}
|
||||
\li \l{Using Debugging Helpers}
|
||||
\li \l{Debugging Qt Quick Projects}
|
||||
\li \l{Debugging a C++ Example Application}
|
||||
\li \l{Debugging a Qt Quick Example Application}
|
||||
\li \l{Troubleshooting Debugger}
|
||||
\endlist
|
||||
\li \l{Analyzing Code}
|
||||
\list
|
||||
\li \l{Profiling QML Applications}
|
||||
\li \l{Using Valgrind Code Analysis Tools}
|
||||
\list
|
||||
\li \l{Detecting Memory Leaks}
|
||||
\li \l{Profiling Function Execution}
|
||||
\li \l{Running Valgrind Tools on External Applications}
|
||||
\endlist
|
||||
\li \l{Using Clang Static Analyzer}
|
||||
\li \l{Analyzing CPU Usage}
|
||||
\endlist
|
||||
\li \l{Running Autotests}
|
||||
\endlist
|
||||
\li \l{Advanced Use}
|
||||
\list
|
||||
\li \l{Supported Platforms}
|
||||
\li \l{Using Other Build Systems}
|
||||
\list
|
||||
\li \l{Setting Up CMake}
|
||||
\li \l{Setting Up Qbs}
|
||||
\li \l{Setting Up an Autotools Project}
|
||||
\li \l{Setting Up a Generic Project}
|
||||
\endlist
|
||||
\li \l{Using Command Line Options}
|
||||
\li \l{Keyboard Shortcuts}
|
||||
\li \l{Using External Tools}
|
||||
\li \l{Showing Task List Files in Issues Pane}
|
||||
\endlist
|
||||
\li \l{Getting Help}
|
||||
\list
|
||||
\li \l{Using the Help Mode}
|
||||
\li \l{FAQ}
|
||||
\li \l{Tips and Tricks}
|
||||
\li \l{Known Issues}
|
||||
\li \l{Glossary}
|
||||
\li \l{Technical Support}
|
||||
\li \l{Acknowledgements}
|
||||
\endlist
|
||||
\endlist
|
||||
*/
|
||||
@@ -132,189 +132,4 @@
|
||||
\l{http://lists.qt-project.org/mailman/listinfo/}
|
||||
{lists.qt-project.org Mailing Lists}.
|
||||
\endtable
|
||||
|
||||
\omit
|
||||
\section1 Table Of Contents
|
||||
|
||||
\list
|
||||
\li \l{Getting Started}
|
||||
\list
|
||||
\li \l{IDE Overview}
|
||||
\li \l{User Interface}
|
||||
\li \l{Configuring Qt Creator}
|
||||
\li \l{Building and Running an Example}
|
||||
\li \l{Tutorials}
|
||||
\list
|
||||
\li \l{Creating a Qt Quick Application}
|
||||
\li \l{Creating a Qt Widget Based Application}
|
||||
\li \l{Creating a Mobile Application}
|
||||
\endlist
|
||||
\endlist
|
||||
\li \l{Managing Projects}
|
||||
\list
|
||||
\li \l{Creating Projects}
|
||||
\list
|
||||
\li \l{Opening Projects}
|
||||
\li \l{Adding Libraries to Projects}
|
||||
\li \l{Adding New Custom Wizards}
|
||||
\list
|
||||
\li \l{Adding JSON-Based Wizards}
|
||||
\li \l{Adding XML-Based Wizards}
|
||||
\endlist
|
||||
\endlist
|
||||
\li \l{Using Version Control Systems}
|
||||
\list
|
||||
\li \l{Using Bazaar}
|
||||
\li \l{Using ClearCase}
|
||||
\li \l{Using CVS}
|
||||
\li \l{Using Git}
|
||||
\li \l{Using Mercurial}
|
||||
\li \l{Using Perforce}
|
||||
\li \l{Using Subversion}
|
||||
\endlist
|
||||
\li \l{Configuring Projects}
|
||||
\list
|
||||
\li \l{Adding Kits}
|
||||
\li \l{Adding Qt Versions}
|
||||
\li \l{Adding Compilers}
|
||||
\li \l{Adding Debuggers}
|
||||
\li \l{Specifying Build Settings}
|
||||
\li \l{Specifying Run Settings}
|
||||
\li \l{Specifying Editor Settings}
|
||||
\li \l{Specifying Code Style Settings}
|
||||
\li \l{Specifying Dependencies}
|
||||
\li \l{Sharing Project Settings}
|
||||
\endlist
|
||||
\li \l{Managing Sessions}
|
||||
\endlist
|
||||
\li \l{Designing User Interfaces}
|
||||
\list
|
||||
\li \l{Developing Qt Quick Applications}
|
||||
\list
|
||||
\li \l {Creating Qt Quick Projects}
|
||||
\li \l {Qt Quick UI Forms}
|
||||
\li \l {Using Qt Quick Designer}
|
||||
\li \l {Editing PathView Properties}
|
||||
\li \l {Adding Connections}
|
||||
\li \l {Creating Components}
|
||||
\li \l {Creating Buttons}
|
||||
\li \l {Creating Scalable Buttons and Borders}
|
||||
\li \l {Creating Screens}
|
||||
\li \l {Browsing ISO 7000 Icons}
|
||||
\li \l {Exporting Designs from Graphics Software}
|
||||
\li \l {Using QML Modules with Plugins}
|
||||
\endlist
|
||||
\li \l{Developing Widget Based Applications}
|
||||
\list
|
||||
\li \l{Adding Qt Designer Plugins}
|
||||
\endlist
|
||||
\li \l{Optimizing Applications for Mobile Devices}
|
||||
\endlist
|
||||
\li \l{Coding}
|
||||
\list
|
||||
\li \l{Writing Code}
|
||||
\list
|
||||
\li \l{Working in Edit Mode}
|
||||
\li \l{Semantic Highlighting}
|
||||
\li \l{Checking Code Syntax}
|
||||
\li \l{Completing Code}
|
||||
\li \l{Indenting Text or Code}
|
||||
\li \l{Using Qt Quick Toolbars}
|
||||
\li \l{Pasting and Fetching Code Snippets}
|
||||
\li \l{Using Text Editing Macros}
|
||||
\li \l{Comparing Files}
|
||||
\li \l{Parsing C++ Files with the Clang Code Model}
|
||||
\endlist
|
||||
\li \l{Finding}
|
||||
\list
|
||||
\li \l{Finding and Replacing}
|
||||
\li \l{Searching with the Locator}
|
||||
\endlist
|
||||
\li \l{Refactoring}
|
||||
\li \l{Beautifying Source Code}
|
||||
\li \l{Configuring the Editor}
|
||||
\list
|
||||
\li \l{Specifying Text Editor Settings}
|
||||
\li \l{Using FakeVim Mode}
|
||||
\endlist
|
||||
\li \l{Editing MIME Types}
|
||||
\li \l{Modeling}
|
||||
\li \l{Editing State Charts}
|
||||
|
||||
\endlist
|
||||
\li \l{Building and Running}
|
||||
\list
|
||||
\li \l{Building for Multiple Platforms}
|
||||
\li \l{Running on Multiple Platforms}
|
||||
\li \l{Deploying to Mobile Devices}
|
||||
\list
|
||||
\li \l{Deploying Applications to Android Devices}
|
||||
\li \l{Deploying Applications to Embedded Linux Devices}
|
||||
\li \l{Deploying Applications to QNX Neutrino Devices}
|
||||
\endlist
|
||||
\li \l{Connecting Mobile Devices}
|
||||
\list
|
||||
\li \l{Connecting Android Devices}
|
||||
\li \l{Connecting Bare Metal Devices}
|
||||
\li \l{Connecting Embedded Linux Devices}
|
||||
\li \l{Connecting iOS Devices}
|
||||
\li \l{Connecting QNX Devices}
|
||||
\li \l{Connecting Windows Runtime Devices}
|
||||
\endlist
|
||||
\li \l{Customizing the Build Process}
|
||||
\endlist
|
||||
\li \l{Testing}
|
||||
\list
|
||||
\li \l{Debugging}
|
||||
\list
|
||||
\li \l{Setting Up Debugger}
|
||||
\li \l{Launching the Debugger}
|
||||
\li \l{Interacting with the Debugger}
|
||||
\li \l{Using Debugging Helpers}
|
||||
\li \l{Debugging Qt Quick Projects}
|
||||
\li \l{Debugging a C++ Example Application}
|
||||
\li \l{Debugging a Qt Quick Example Application}
|
||||
\li \l{Troubleshooting Debugger}
|
||||
\endlist
|
||||
\li \l{Analyzing Code}
|
||||
\list
|
||||
\li \l{Profiling QML Applications}
|
||||
\li \l{Using Valgrind Code Analysis Tools}
|
||||
\list
|
||||
\li \l{Detecting Memory Leaks}
|
||||
\li \l{Profiling Function Execution}
|
||||
\li \l{Running Valgrind Tools on External Applications}
|
||||
\endlist
|
||||
\li \l{Using Clang Static Analyzer}
|
||||
\li \l{Analyzing CPU Usage}
|
||||
\endlist
|
||||
\li \l{Running Autotests}
|
||||
\endlist
|
||||
\li \l{Advanced Use}
|
||||
\list
|
||||
\li \l{Supported Platforms}
|
||||
\li \l{Using Other Build Systems}
|
||||
\list
|
||||
\li \l{Setting Up CMake}
|
||||
\li \l{Setting Up Qbs}
|
||||
\li \l{Setting Up an Autotools Project}
|
||||
\li \l{Setting Up a Generic Project}
|
||||
\endlist
|
||||
\li \l{Using Command Line Options}
|
||||
\li \l{Keyboard Shortcuts}
|
||||
\li \l{Using External Tools}
|
||||
\li \l{Showing Task List Files in Issues Pane}
|
||||
\endlist
|
||||
\li \l{Getting Help}
|
||||
\list
|
||||
\li \l{Using the Help Mode}
|
||||
\li \l{FAQ}
|
||||
\li \l{Tips and Tricks}
|
||||
\li \l{Known Issues}
|
||||
\li \l{Glossary}
|
||||
\li \l{Technical Support}
|
||||
\li \l{Acknowledgements}
|
||||
\endlist
|
||||
\endlist
|
||||
\endomit
|
||||
*/
|
||||
|
||||
54
docs.pri
Normal file
54
docs.pri
Normal file
@@ -0,0 +1,54 @@
|
||||
# adapted from qt_docs.prf
|
||||
|
||||
isEmpty(VERSION): error("Include qtcreator.pri before including docs.pri!")
|
||||
|
||||
qtcver.name = QTC_VERSION
|
||||
qtcver.value = $$VERSION
|
||||
qtcvertag.name = QTC_VERSION_TAG
|
||||
qtcvertag.value = $$replace(qtcver.value, \.,)
|
||||
qtdocs.name = QT_INSTALL_DOCS
|
||||
qtdocs.value = $$[QT_INSTALL_DOCS/src]
|
||||
qdocindex.name = QDOC_INDEX_DIR
|
||||
qdocindex.value = $$[QT_INSTALL_DOCS]
|
||||
qtcdocsdir.name = QTC_DOCS_DIR
|
||||
qtcdocsdir.value = $$IDE_SOURCE_TREE/doc
|
||||
QT_TOOL_ENV = qtcver qtcvertag qtdocs qdocindex qtcdocsdir
|
||||
qtPrepareTool(QDOC, qdoc)
|
||||
QT_TOOL_ENV =
|
||||
|
||||
!build_online_docs: qtPrepareTool(QHELPGENERATOR, qhelpgenerator)
|
||||
|
||||
QTC_DOCS_BASE_OUTDIR = $$OUT_PWD/doc
|
||||
DOC_INDEXES = -indexdir $$shell_quote($$[QT_INSTALL_DOCS]) \
|
||||
-indexdir $$shell_quote($$IDE_BUILD_TREE/doc)
|
||||
|
||||
for (qtc_doc, QTC_DOCS) {
|
||||
!exists($$qtc_doc): error("Cannot find documentation specification file $$qtc_doc")
|
||||
QTC_DOCS_TARGET = $$replace(qtc_doc, ^(.*/)?(.*)\\.qdocconf$, \\2)
|
||||
QTC_DOCS_TARGETDIR = $$QTC_DOCS_TARGET
|
||||
QTC_DOCS_OUTPUTDIR = $$QTC_DOCS_BASE_OUTDIR/$$QTC_DOCS_TARGETDIR
|
||||
|
||||
!isEmpty(html_docs.commands): html_docs.commands += &&
|
||||
html_docs.commands += $$QDOC -outputdir $$shell_quote($$QTC_DOCS_OUTPUTDIR) $$qtc_doc $$DOC_INDEXES
|
||||
|
||||
!build_online_docs {
|
||||
!isEmpty(qch_docs.commands): qch_docs.commands += &&
|
||||
qch_docs.commands += $$QHELPGENERATOR $$shell_quote($$QTC_DOCS_OUTPUTDIR/$${QTC_DOCS_TARGET}.qhp) -o $$shell_quote($$IDE_DOC_PATH/$${QTC_DOCS_TARGET}.qch)
|
||||
|
||||
inst_qch_docs.files += $$IDE_DOC_PATH/$${QTC_DOCS_TARGET}.qch
|
||||
}
|
||||
}
|
||||
|
||||
!build_online_docs {
|
||||
qch_docs.depends = html_docs
|
||||
inst_qch_docs.path = $$INSTALL_DOC_PATH
|
||||
inst_qch_docs.CONFIG += no_check_exist no_default_install no_build
|
||||
install_docs.depends = install_inst_qch_docs
|
||||
docs.depends = qch_docs
|
||||
INSTALLS += inst_qch_docs
|
||||
QMAKE_EXTRA_TARGETS += qch_docs install_docs
|
||||
} else {
|
||||
docs.depends = html_docs
|
||||
}
|
||||
|
||||
QMAKE_EXTRA_TARGETS += html_docs docs
|
||||
@@ -19,7 +19,6 @@ Product {
|
||||
|
||||
property string versionTag: qtc.qtcreator_version.replace(/\.|-/g, "")
|
||||
Qt.core.qdocEnvironment: [
|
||||
"QTC_LICENSE_TYPE=" + project.licenseType,
|
||||
"QTC_VERSION=" + qtc.qtcreator_version,
|
||||
"QTC_VERSION_TAG=" + qtc.qtcreator_version,
|
||||
"SRCDIR=" + sourceDirectory,
|
||||
|
||||
@@ -6,7 +6,6 @@ Project {
|
||||
name: "Qt Creator"
|
||||
minimumQbsVersion: "1.6.0"
|
||||
property bool withAutotests: qbs.buildVariant === "debug"
|
||||
property string licenseType: "opensource"
|
||||
property path ide_source_tree: path
|
||||
property pathList additionalPlugins: []
|
||||
property pathList additionalLibs: []
|
||||
|
||||
@@ -2427,15 +2427,17 @@ static bool dumpQDateTime(const SymbolGroupValue &v, std::wostream &str, std::st
|
||||
int status = 0;
|
||||
int tiVersion = QtInfo::qtTypeInfoVersion(v.context());
|
||||
if (tiVersion > 10) {
|
||||
const ULONG64 address =
|
||||
SymbolGroupValue::isPointerType(v.type()) ? v.pointerValue() : v.address();
|
||||
const ULONG64 data = SymbolGroupValue::readUnsignedValue(
|
||||
v.context().dataspaces, v.address(), 8, 0);
|
||||
v.context().dataspaces, address, 8, 0);
|
||||
status = data & 0xFF;
|
||||
ULONG64 timeZone = 0;
|
||||
if (status & 0x01) {
|
||||
msecs = data >> 8;
|
||||
spec = (status & 0x30) >> 4;
|
||||
} else {
|
||||
ULONG64 addr = SymbolGroupValue::readPointerValue(v.context().dataspaces, v.address());
|
||||
ULONG64 addr = SymbolGroupValue::readPointerValue(v.context().dataspaces, address);
|
||||
msecs = SymbolGroupValue::readSignedValue(v.context().dataspaces, addr, 8, 0);
|
||||
|
||||
addr += 8 /*int64*/;
|
||||
@@ -3222,7 +3224,7 @@ unsigned dumpSimpleType(SymbolGroupNode *n, const SymbolGroupValueContext &ctx,
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (rc != SymbolGroupNode::SimpleDumperFailed && SymbolGroupValue::isPointerType(v.type()))
|
||||
if (rc != SymbolGroupNode::SimpleDumperFailed && SymbolGroupValue::isPointerType(v.type()) && encoding->empty())
|
||||
str << L" @" << std::showbase << std::hex << v.pointerValue() << std::dec << std::noshowbase;
|
||||
|
||||
if (rc == SymbolGroupNode::SimpleDumperOk)
|
||||
|
||||
@@ -160,10 +160,13 @@ Command ArtisticStyle::command(const QString &cfgFile) const
|
||||
command.addOption("-q");
|
||||
command.addOption("--options=" + cfgFile);
|
||||
|
||||
if (m_settings->version() > ArtisticStyleSettings::Version_2_03) {
|
||||
const int version = m_settings->version();
|
||||
if (version > ArtisticStyleSettings::Version_2_03) {
|
||||
command.setProcessing(Command::PipeProcessing);
|
||||
if (version == ArtisticStyleSettings::Version_2_04)
|
||||
command.setPipeAddsNewline(true);
|
||||
command.setReturnsCRLF(Utils::HostOsInfo::isWindowsHost());
|
||||
command.addOption("-z2");
|
||||
} else {
|
||||
command.addOption("%file");
|
||||
}
|
||||
|
||||
@@ -40,7 +40,8 @@ class ArtisticStyleSettings : public AbstractSettings
|
||||
|
||||
public:
|
||||
enum ArtisticStyleVersion {
|
||||
Version_2_03 = 203
|
||||
Version_2_03 = 203,
|
||||
Version_2_04 = 204
|
||||
};
|
||||
|
||||
ArtisticStyleSettings();
|
||||
|
||||
@@ -574,15 +574,32 @@ void QmlEngine::notifyEngineRemoteSetupFinished(const RemoteSetupResult &result)
|
||||
if (result.qmlServerPort.isValid())
|
||||
runParameters().qmlServer.port = result.qmlServerPort;
|
||||
|
||||
switch (state()) {
|
||||
case InferiorSetupOk:
|
||||
// FIXME: This is not a legal transition, but we need to
|
||||
// get to EngineSetupOk somehow from InferiorSetupOk.
|
||||
// fallthrough. QTCREATORBUG-14089.
|
||||
case EngineSetupRequested:
|
||||
notifyEngineSetupOk();
|
||||
break;
|
||||
case EngineSetupOk:
|
||||
case EngineRunRequested:
|
||||
// QTCREATORBUG-17718: On Android while doing debugging in mixed mode, the QML debug engine
|
||||
// sometimes reports EngineSetupOK after the EngineRunRequested thus overwriting the state
|
||||
// which eventually results into app to waiting for the QML engine connection.
|
||||
// Skipping the EngineSetupOK in aforementioned case.
|
||||
// Nothing to do here. The setup is already done.
|
||||
break;
|
||||
default:
|
||||
QTC_ASSERT(false, qDebug() << "Unexpected state" << state());
|
||||
}
|
||||
|
||||
// The remote setup can take while especialy with mixed debugging.
|
||||
// Just waiting for 8 seconds is not enough. Increase the timeout
|
||||
// to 60 s
|
||||
// In case we get an output the d->outputParser will start the connection.
|
||||
d->noDebugOutputTimer.setInterval(60000);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
if (isMasterEngine())
|
||||
QMessageBox::critical(ICore::dialogParent(), tr("Failed to start application"),
|
||||
tr("Application startup failed: %1").arg(result.reason));
|
||||
|
||||
@@ -728,16 +728,13 @@ void GitClient::requestReload(const QString &documentId, const QString &source,
|
||||
|
||||
IDocument *document = DiffEditorController::findOrCreateDocument(documentId, title);
|
||||
QTC_ASSERT(document, return);
|
||||
DiffEditorController *controller = DiffEditorController::controller(document);
|
||||
if (!controller) {
|
||||
controller = factory(document);
|
||||
DiffEditorController *controller = factory(document);
|
||||
QTC_ASSERT(controller, return);
|
||||
|
||||
connect(controller, &DiffEditorController::chunkActionsRequested,
|
||||
this, &GitClient::slotChunkActionsRequested, Qt::DirectConnection);
|
||||
connect(controller, &DiffEditorController::requestInformationForCommit,
|
||||
this, &GitClient::branchesForCommit);
|
||||
}
|
||||
|
||||
VcsBasePlugin::setSource(document, sourceCopy);
|
||||
EditorManager::activateEditorForDocument(document);
|
||||
|
||||
@@ -151,6 +151,8 @@ typedef int (MDEV_API *AMDeviceSecureInstallApplicationPtr)(int, AMDeviceRef, CF
|
||||
namespace Ios {
|
||||
namespace Internal {
|
||||
|
||||
static const am_res_t kAMDMobileImageMounterImageMountFailed = 0xe8000076;
|
||||
|
||||
class MobileDeviceLib {
|
||||
public :
|
||||
MobileDeviceLib();
|
||||
@@ -1033,12 +1035,13 @@ bool CommandSession::mountDeveloperDiskImage() {
|
||||
|
||||
if (connectDevice()) {
|
||||
CFStringRef cfImgPath = imagePath.toCFString();
|
||||
if (am_res_t result = lib()->deviceMountImage(device, cfImgPath, options, &mountCallback, 0)) {
|
||||
am_res_t result = lib()->deviceMountImage(device, cfImgPath, options, &mountCallback, 0);
|
||||
if (result == 0 || result == kAMDMobileImageMounterImageMountFailed) {
|
||||
// Mounting succeeded or developer image already installed
|
||||
success = true;
|
||||
} else {
|
||||
addError(QString::fromLatin1("Mount Developer Disk Image \"%1\" failed, AMDeviceMountImage returned %2 (0x%3)")
|
||||
.arg(imagePath).arg(mobileDeviceErrorString(lib(), result)).arg(QString::number(result, 16)));
|
||||
} else {
|
||||
// Mounting succeeded.
|
||||
success = true;
|
||||
}
|
||||
CFRelease(cfImgPath);
|
||||
disconnectDevice();
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
:New.templateCategoryView_QTreeView {name='templateCategoryView' type='QTreeView' visible='1' window=':New_Core::Internal::NewDialog'}
|
||||
:New_Core::Internal::NewDialog {name='Core__Internal__NewDialog' type='Core::Internal::NewDialog' visible='1' windowTitle?='New*'}
|
||||
:Next_QPushButton {text~='(Next.*|Continue)' type='QPushButton' visible='1'}
|
||||
:No valid kits found._QLabel {text?='*No valid kits found.*' type='QLabel' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:OpenDocuments_Widget {type='Core::Internal::OpenEditorsWidget' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='Open Documents'}
|
||||
:Options.Cancel_QPushButton {text='Cancel' type='QPushButton' unnamed='1' visible='1' window=':Options_Core::Internal::SettingsDialog'}
|
||||
:Options.OK_QPushButton {text='OK' type='QPushButton' unnamed='1' visible='1' window=':Options_Core::Internal::SettingsDialog'}
|
||||
@@ -176,6 +177,7 @@
|
||||
:QtSupport__Internal__QtVersionManager.errorLabel.QLabel {container=':qt_tabwidget_stackedwidget.QtSupport__Internal__QtVersionManager_QtSupport::Internal::QtOptionsPageWidget' name='errorLabel' type='QLabel' visible='1'}
|
||||
:QtSupport__Internal__QtVersionManager.qmake_QLabel {container=':qt_tabwidget_stackedwidget.QtSupport__Internal__QtVersionManager_QtSupport::Internal::QtOptionsPageWidget' name='qmakePath' type='QLabel' visible='1'}
|
||||
:QtVersionLabel_KitPage {container=':qt_tabwidget_stackedwidget_QWidget' text='Qt version:' type='QLabel' unnamed='1' visible='1'}
|
||||
:Remove_QPushButton {container=':qt_tabwidget_stackedwidget_QScrollArea' text='Remove' type='QPushButton' unnamed='1' visible='1'}
|
||||
:Restart required.OK_QPushButton {text='OK' type='QPushButton' unnamed='1' visible='1' window=':Restart required_QMessageBox'}
|
||||
:Restart required_QMessageBox {text='The language change will take effect after a restart of Qt Creator.' type='QMessageBox' unnamed='1' visible='1'}
|
||||
:Revert to Saved.Proceed_QPushButton {text='Proceed' type='QPushButton' unnamed='1' visible='1' window=':Revert to Saved_QMessageBox'}
|
||||
|
||||
@@ -28,7 +28,7 @@ import operator
|
||||
|
||||
# for easier re-usage (because Python hasn't an enum type)
|
||||
class Targets:
|
||||
ALL_TARGETS = map(lambda x: 2 ** x , range(6))
|
||||
ALL_TARGETS = tuple(map(lambda x: 2 ** x , range(6)))
|
||||
|
||||
(DESKTOP_474_GCC,
|
||||
DESKTOP_480_DEFAULT,
|
||||
@@ -37,11 +37,20 @@ class Targets:
|
||||
DESKTOP_541_GCC,
|
||||
DESKTOP_561_DEFAULT) = ALL_TARGETS
|
||||
|
||||
@staticmethod
|
||||
def availableTargetClasses():
|
||||
availableTargets = list(Targets.ALL_TARGETS)
|
||||
if platform.system() in ('Windows', 'Microsoft'):
|
||||
availableTargets.remove(Targets.EMBEDDED_LINUX)
|
||||
elif platform.system() == 'Darwin':
|
||||
availableTargets.remove(Targets.DESKTOP_541_GCC)
|
||||
return availableTargets
|
||||
|
||||
@staticmethod
|
||||
def desktopTargetClasses():
|
||||
desktopTargets = (sum(Targets.ALL_TARGETS) & ~Targets.EMBEDDED_LINUX)
|
||||
if platform.system() == 'Darwin':
|
||||
desktopTargets &= ~Targets.DESKTOP_541_GCC
|
||||
desktopTargets = Targets.availableTargetClasses()
|
||||
if Targets.EMBEDDED_LINUX in desktopTargets:
|
||||
desktopTargets.remove(Targets.EMBEDDED_LINUX)
|
||||
return desktopTargets
|
||||
|
||||
@staticmethod
|
||||
@@ -79,14 +88,6 @@ class Targets:
|
||||
test.fatal("You've passed at least one unknown target!")
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
def intToArray(targets):
|
||||
return filter(lambda x: x & targets, Targets.ALL_TARGETS)
|
||||
|
||||
@staticmethod
|
||||
def arrayToInt(targetArr):
|
||||
return reduce(operator.or_, targetArr, 0)
|
||||
|
||||
@staticmethod
|
||||
def getDefaultKit():
|
||||
return Targets.DESKTOP_531_DEFAULT
|
||||
|
||||
@@ -72,8 +72,8 @@ def openCmakeProject(projectPath, buildDir):
|
||||
|
||||
invokeMenuItem("File", "Open File or Project...")
|
||||
selectFromFileDialog(projectPath)
|
||||
__chooseTargets__(0) # uncheck all
|
||||
__chooseTargets__(Targets.DESKTOP_480_DEFAULT, additionalFunc=additionalFunction)
|
||||
__chooseTargets__([]) # uncheck all
|
||||
__chooseTargets__([Targets.DESKTOP_480_DEFAULT], additionalFunc=additionalFunction)
|
||||
clickButton(waitForObject(":Qt Creator.Configure Project_QPushButton"))
|
||||
return True
|
||||
|
||||
@@ -344,7 +344,7 @@ def createEmptyQtProject(workingDir=None, projectName=None, targets=Targets.desk
|
||||
__createProjectHandleLastPage__()
|
||||
return projectName, checkedTargets
|
||||
|
||||
def createNewNonQtProject(workingDir=None, projectName=None, target=Targets.DESKTOP_474_GCC,
|
||||
def createNewNonQtProject(workingDir=None, projectName=None, target=[Targets.DESKTOP_474_GCC],
|
||||
plainC=False, cmake=False, qbs=False):
|
||||
if plainC:
|
||||
template = "Plain C Application"
|
||||
@@ -373,7 +373,7 @@ def createNewNonQtProject(workingDir=None, projectName=None, target=Targets.DESK
|
||||
return projectName
|
||||
|
||||
def createNewCPPLib(projectDir = None, projectName = None, className = None, fromWelcome = False,
|
||||
target = Targets.DESKTOP_474_GCC, isStatic = False, modules = ["QtCore"]):
|
||||
target = [Targets.DESKTOP_474_GCC], isStatic = False, modules = ["QtCore"]):
|
||||
available = __createProjectOrFileSelectType__(" Library", "C++ Library", fromWelcome, True)
|
||||
if isStatic:
|
||||
libType = LibType.STATIC
|
||||
@@ -391,7 +391,7 @@ def createNewCPPLib(projectDir = None, projectName = None, className = None, fro
|
||||
return checkedTargets, projectName, className
|
||||
|
||||
def createNewQtPlugin(projectDir=None, projectName=None, className=None, fromWelcome=False,
|
||||
target=Targets.DESKTOP_474_GCC, baseClass="QGenericPlugin"):
|
||||
target=[Targets.DESKTOP_474_GCC], baseClass="QGenericPlugin"):
|
||||
available = __createProjectOrFileSelectType__(" Library", "C++ Library", fromWelcome, True)
|
||||
if projectDir == None:
|
||||
projectDir = tempDir()
|
||||
@@ -403,25 +403,21 @@ def createNewQtPlugin(projectDir=None, projectName=None, className=None, fromWel
|
||||
__createProjectHandleLastPage__()
|
||||
return checkedTargets, projectName, className
|
||||
|
||||
# parameter target can be an OR'd value of Targets
|
||||
# parameter target can be a list of Targets
|
||||
# parameter availableTargets should be the result of __createProjectOrFileSelectType__()
|
||||
# or use None as a fallback
|
||||
# parameter additionalFunc function to be executed inside the detailed view of each chosen kit
|
||||
# if present, 'Details' button will be clicked, function will be executed,
|
||||
# 'Details' button will be clicked again
|
||||
def __chooseTargets__(targets=Targets.DESKTOP_474_GCC, availableTargets=None, additionalFunc=None):
|
||||
def __chooseTargets__(targets=[Targets.DESKTOP_474_GCC], availableTargets=None, additionalFunc=None):
|
||||
if availableTargets != None:
|
||||
available = availableTargets
|
||||
else:
|
||||
# following targets depend on the build environment - added for further/later tests
|
||||
available = list(Targets.ALL_TARGETS)
|
||||
if platform.system() in ('Windows', 'Microsoft'):
|
||||
available.remove(Targets.EMBEDDED_LINUX)
|
||||
elif platform.system() == 'Darwin':
|
||||
available.remove(Targets.DESKTOP_541_GCC)
|
||||
available = Targets.availableTargetClasses()
|
||||
checkedTargets = []
|
||||
for current in available:
|
||||
mustCheck = targets & current == current
|
||||
mustCheck = current in targets
|
||||
try:
|
||||
ensureChecked("{type='QCheckBox' text='%s' visible='1'}" % Targets.getStringForTarget(current),
|
||||
mustCheck, 3000)
|
||||
@@ -660,10 +656,7 @@ def __getSupportedPlatforms__(text, templateName, getAsStrings=False):
|
||||
if platform.system() != 'Darwin':
|
||||
result.append(Targets.DESKTOP_541_GCC)
|
||||
elif 'Platform independent' in text:
|
||||
result = list(Targets.ALL_TARGETS)
|
||||
result.remove(Targets.EMBEDDED_LINUX)
|
||||
if platform.system() == 'Darwin':
|
||||
result.remove(Targets.DESKTOP_541_GCC)
|
||||
result = Targets.desktopTargetClasses()
|
||||
else:
|
||||
test.warning("Returning None (__getSupportedPlatforms__())",
|
||||
"Parsed text: '%s'" % text)
|
||||
|
||||
@@ -80,7 +80,8 @@ def main():
|
||||
checkSimpleCppLib("SampleApp2", True)
|
||||
|
||||
# Qt Plugin needs Qt4.8 for QGenericPlugin which is tested by default
|
||||
targets = Targets.desktopTargetClasses() & ~Targets.DESKTOP_474_GCC
|
||||
targets = Targets.desktopTargetClasses()
|
||||
targets.remove(Targets.DESKTOP_474_GCC)
|
||||
checkedTargets, projectName, className = createNewQtPlugin(tempDir(), "SampleApp3", "MyPlugin",
|
||||
target=targets)
|
||||
virtualFunctionsAdded = False
|
||||
|
||||
@@ -40,7 +40,9 @@ def main():
|
||||
if not startedWithoutPluginError():
|
||||
return
|
||||
# open example project, supports only Qt 5
|
||||
targets = Targets.desktopTargetClasses() & ~Targets.DESKTOP_474_GCC & ~Targets.DESKTOP_480_DEFAULT
|
||||
targets = Targets.desktopTargetClasses()
|
||||
targets.remove(Targets.DESKTOP_474_GCC)
|
||||
targets.remove(Targets.DESKTOP_480_DEFAULT)
|
||||
checkedTargets = openQmakeProject(examplePath, targets)
|
||||
# build and wait until finished - on all build configurations
|
||||
availableConfigs = iterateBuildConfigs(len(checkedTargets))
|
||||
|
||||
@@ -174,7 +174,7 @@ def main():
|
||||
for useClang in [False, True]:
|
||||
if not startCreator(useClang):
|
||||
continue
|
||||
openQmakeProject(examplePath, Targets.DESKTOP_531_DEFAULT)
|
||||
openQmakeProject(examplePath, [Targets.DESKTOP_531_DEFAULT])
|
||||
checkCodeModelSettings(useClang)
|
||||
if not openDocument("cplusplus-tools.Sources.main\\.cpp"):
|
||||
earlyExit("Failed to open main.cpp.")
|
||||
|
||||
@@ -53,11 +53,18 @@ def main():
|
||||
switchViewTo(ViewConstants.HELP)
|
||||
manualQModelIndex = getQModelIndexStr("text?='Qt Creator Manual *'",
|
||||
":Qt Creator_QHelpContentWidget")
|
||||
doubleClick(waitForObject(manualQModelIndex), 5, 5, 0, Qt.LeftButton)
|
||||
manualQMIObj = waitForObject(manualQModelIndex)
|
||||
doubleClick(manualQMIObj, 5, 5, 0, Qt.LeftButton)
|
||||
if not waitFor("not manualQMIObj.collapsed", 2000):
|
||||
test.warning("It takes more than two seconds to expand the help content tree.")
|
||||
mouseClick(waitForObject(getQModelIndexStr("text='Building and Running an Example'",
|
||||
manualQModelIndex)), 5, 5, 0, Qt.LeftButton)
|
||||
helpSelector = waitForObject(":Qt Creator_HelpSelector_QComboBox")
|
||||
waitFor("str(helpSelector.currentText).startswith('Building and Running an Example')", 10000)
|
||||
pageOpened = "str(helpSelector.currentText).startswith('Building and Running an Example')"
|
||||
if not waitFor(pageOpened, 10000):
|
||||
test.fatal("Help page is not opened after ten seconds. Giving up.")
|
||||
invokeMenuItem("File", "Exit")
|
||||
return
|
||||
# open bookmarks window
|
||||
clickButton(waitForObject(":Qt Creator.Add Bookmark_QToolButton"))
|
||||
clickButton(waitForObject(":Add Bookmark.ExpandBookmarksList_QToolButton"))
|
||||
|
||||
@@ -80,7 +80,7 @@ def main():
|
||||
if not startedWithoutPluginError():
|
||||
return
|
||||
# open example project
|
||||
openQmakeProject(examplePath, Targets.DESKTOP_531_DEFAULT)
|
||||
openQmakeProject(examplePath, [Targets.DESKTOP_531_DEFAULT])
|
||||
# open qml file
|
||||
openDocument("animation.Resources.animation\\.qrc./animation.basics.color-animation\\.qml")
|
||||
# get editor
|
||||
|
||||
@@ -58,13 +58,12 @@ def main():
|
||||
performDebugging(projectName, checkedTargets)
|
||||
invokeMenuItem("File", "Close All Projects and Editors")
|
||||
# C/C++
|
||||
targets = Targets.intToArray(Targets.desktopTargetClasses())
|
||||
for name,isC in {"C":True, "CPP":False}.items():
|
||||
for singleTarget in targets:
|
||||
workingDir = tempDir()
|
||||
qtVersion = re.search("\d{3}", Targets.getStringForTarget(singleTarget)).group()
|
||||
projectName = createNewNonQtProject(workingDir, "Sample%s%s" % (name, qtVersion),
|
||||
singleTarget, isC)
|
||||
[singleTarget], isC)
|
||||
if projectName == None:
|
||||
test.fail("Failed to create Sample%s%s" % (name, qtVersion),
|
||||
"Target: %s, plainC: %s" % (Targets.getStringForTargt(singleTarget), isC))
|
||||
|
||||
@@ -30,7 +30,8 @@ def main():
|
||||
if not startedWithoutPluginError():
|
||||
return
|
||||
# Requires Qt 4.8
|
||||
targets = Targets.desktopTargetClasses() & ~Targets.DESKTOP_474_GCC
|
||||
targets = Targets.desktopTargetClasses()
|
||||
targets.remove(Targets.DESKTOP_474_GCC)
|
||||
# using a temporary directory won't mess up a potentially existing
|
||||
workingDir = tempDir()
|
||||
checkedTargets, projectName = createNewQtQuickApplication(workingDir, targets=targets)
|
||||
|
||||
@@ -37,7 +37,7 @@ def main():
|
||||
# add docs to have the correct tool tips
|
||||
addHelpDocumentation([os.path.join(Qt5Path.docsPath(target), "qtquick.qch")])
|
||||
templateDir = prepareTemplate(sourceExample, "/../../helper")
|
||||
openQmakeProject(os.path.join(templateDir, proFile), target)
|
||||
openQmakeProject(os.path.join(templateDir, proFile), [target])
|
||||
openDocument("focus.QML.qml" + os.sep + "focus.focus\\.qml")
|
||||
testRenameId()
|
||||
testFindUsages()
|
||||
|
||||
@@ -7,6 +7,6 @@ HOOK_SUB_PROCESSES=false
|
||||
IMPLICITAUTSTART=0
|
||||
LANGUAGE=Python
|
||||
OBJECTMAP=../objects.map
|
||||
TEST_CASES=tst_build_speedcrunch tst_cmake_speedcrunch tst_create_proj_wizard tst_custom_wizard_check tst_default_settings tst_installed_languages tst_new_class tst_opencreator_qbs tst_openqt_creator tst_rename_file tst_save_before_build tst_session_handling tst_tasks_handling
|
||||
TEST_CASES=tst_build_speedcrunch tst_cmake_speedcrunch tst_create_proj_wizard tst_custom_wizard_check tst_default_settings tst_installed_languages tst_new_class tst_opencreator_qbs tst_openqt_creator tst_remove_kits tst_rename_file tst_save_before_build tst_session_handling tst_tasks_handling
|
||||
VERSION=2
|
||||
WRAPPERS=Qt
|
||||
|
||||
@@ -42,7 +42,7 @@ def main():
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
if not startedWithoutPluginError():
|
||||
return
|
||||
checkedTargets = openQmakeProject(SpeedCrunchPath, Targets.DESKTOP_480_DEFAULT)
|
||||
checkedTargets = openQmakeProject(SpeedCrunchPath, [Targets.DESKTOP_480_DEFAULT])
|
||||
progressBarWait(30000)
|
||||
|
||||
fancyToolButton = waitForObject(":*Qt Creator_Core::Internal::FancyToolButton")
|
||||
|
||||
@@ -36,12 +36,12 @@ def main():
|
||||
return
|
||||
|
||||
runButton = findObject(':*Qt Creator.Run_Core::Internal::FancyToolButton')
|
||||
openQmakeProject(pathSpeedcrunch, Targets.DESKTOP_480_DEFAULT)
|
||||
openQmakeProject(pathSpeedcrunch, [Targets.DESKTOP_480_DEFAULT])
|
||||
# Wait for parsing to complete
|
||||
waitFor("runButton.enabled", 30000)
|
||||
# Starting before opening, because this is where Creator froze (QTCREATORBUG-10733)
|
||||
startopening = datetime.utcnow()
|
||||
openQmakeProject(pathCreator, Targets.DESKTOP_561_DEFAULT)
|
||||
openQmakeProject(pathCreator, [Targets.DESKTOP_561_DEFAULT])
|
||||
# Wait for parsing to complete
|
||||
startreading = datetime.utcnow()
|
||||
waitFor("runButton.enabled", 300000)
|
||||
|
||||
64
tests/system/suite_general/tst_remove_kits/test.py
Normal file
64
tests/system/suite_general/tst_remove_kits/test.py
Normal file
@@ -0,0 +1,64 @@
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (C) 2017 The Qt Company Ltd.
|
||||
# Contact: https://www.qt.io/licensing/
|
||||
#
|
||||
# This file is part of Qt Creator.
|
||||
#
|
||||
# Commercial License Usage
|
||||
# Licensees holding valid commercial Qt licenses may use this file in
|
||||
# accordance with the commercial license agreement provided with the
|
||||
# Software or, alternatively, in accordance with the terms contained in
|
||||
# a written agreement between you and The Qt Company. For licensing terms
|
||||
# and conditions see https://www.qt.io/terms-conditions. For further
|
||||
# information use the contact form at https://www.qt.io/contact-us.
|
||||
#
|
||||
# GNU General Public License Usage
|
||||
# Alternatively, this file may be used under the terms of the GNU
|
||||
# General Public License version 3 as published by the Free Software
|
||||
# Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||
# included in the packaging of this file. Please review the following
|
||||
# information to ensure the GNU General Public License requirements will
|
||||
# be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
source("../../shared/qtcreator.py")
|
||||
|
||||
def verifyProjectsMode(expectedKits):
|
||||
treeView = waitForObject(":Projects.ProjectNavigationTreeView")
|
||||
bAndRIndex = getQModelIndexStr("text='Build & Run'",
|
||||
":Projects.ProjectNavigationTreeView")
|
||||
test.compare(len(dumpItems(treeView.model(), waitForObject(bAndRIndex))),
|
||||
len(expectedKits), "Verify number of listed kits.")
|
||||
test.compare(set(dumpItems(treeView.model(), waitForObject(bAndRIndex))),
|
||||
set(expectedKits), "Verify if expected kits are listed.")
|
||||
hasKits = len(expectedKits) > 0
|
||||
test.verify(checkIfObjectExists(":scrollArea.Edit build configuration:_QLabel", hasKits),
|
||||
"Verify if build settings are being displayed.")
|
||||
test.verify(checkIfObjectExists(":No valid kits found._QLabel", not hasKits),
|
||||
"Verify if Creator reports missing kits.")
|
||||
|
||||
kitNameTemplate = "Manual.%s"
|
||||
|
||||
def __removeKit__(kit, kitName):
|
||||
global kitNameTemplate
|
||||
if kitName == Targets.getStringForTarget(Targets.getDefaultKit()):
|
||||
# The following kits will be the default kit at that time
|
||||
kitNameTemplate += " (default)"
|
||||
item = kitNameTemplate % kitName
|
||||
waitForObjectItem(":BuildAndRun_QTreeView", item)
|
||||
clickItem(":BuildAndRun_QTreeView", item, 5, 5, 0, Qt.LeftButton)
|
||||
clickButton(waitForObject(":Remove_QPushButton"))
|
||||
|
||||
def main():
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
if not startedWithoutPluginError():
|
||||
return
|
||||
createProject_Qt_Console(tempDir(), "SquishProject")
|
||||
switchViewTo(ViewConstants.PROJECTS)
|
||||
verifyProjectsMode(Targets.getTargetsAsStrings(Targets.availableTargetClasses()))
|
||||
iterateKits(True, False, __removeKit__)
|
||||
clickButton(waitForObject(":Options.OK_QPushButton"))
|
||||
verifyProjectsMode([])
|
||||
invokeMenuItem("File", "Exit")
|
||||
@@ -39,7 +39,7 @@ def main():
|
||||
"Verifying window title contains created session name.")
|
||||
checkWelcomePage(sessionName, True)
|
||||
for project in projects:
|
||||
openQmakeProject(project, Targets.DESKTOP_531_DEFAULT)
|
||||
openQmakeProject(project, [Targets.DESKTOP_531_DEFAULT])
|
||||
progressBarWait(20000)
|
||||
checkNavigator(52, "Verifying whether all projects have been opened.")
|
||||
openDocument("animation.Resources.animation\\.qrc./animation.basics.animators\\.qml")
|
||||
|
||||
@@ -39,7 +39,7 @@ def main():
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
if not startedWithoutPluginError():
|
||||
return
|
||||
openQmakeProject(os.path.join(templateDir, proFile), Targets.DESKTOP_531_DEFAULT)
|
||||
openQmakeProject(os.path.join(templateDir, proFile), [Targets.DESKTOP_531_DEFAULT])
|
||||
qmlFiles = [treebase + "focus\\.qml", treebase + "Core.ListMenu\\.qml"]
|
||||
checkOutlineFor(qmlFiles)
|
||||
testModify()
|
||||
|
||||
@@ -36,10 +36,10 @@ def main():
|
||||
|
||||
for qtVersion, controls in available:
|
||||
if qtVersion == "5.3":
|
||||
targ = Targets.DESKTOP_531_DEFAULT
|
||||
targ = [Targets.DESKTOP_531_DEFAULT]
|
||||
quick = "2.3"
|
||||
else:
|
||||
targ = Targets.DESKTOP_541_GCC
|
||||
targ = [Targets.DESKTOP_541_GCC]
|
||||
quick = "2.4"
|
||||
# using a temporary directory won't mess up a potentially existing
|
||||
workingDir = tempDir()
|
||||
|
||||
@@ -29,8 +29,8 @@ def main():
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
if not startedWithoutPluginError():
|
||||
return
|
||||
for targ, quickVer in [[Targets.DESKTOP_480_DEFAULT, 1], [Targets.DESKTOP_561_DEFAULT, 2],
|
||||
[Targets.DESKTOP_531_DEFAULT, 2]]:
|
||||
for targ, quickVer in [[[Targets.DESKTOP_480_DEFAULT], 1], [[Targets.DESKTOP_561_DEFAULT], 2],
|
||||
[[Targets.DESKTOP_531_DEFAULT], 2]]:
|
||||
# using a temporary directory won't mess up a potentially existing
|
||||
createNewQmlExtension(tempDir(), targ, quickVer)
|
||||
# wait for parsing to complete
|
||||
|
||||
Reference in New Issue
Block a user