forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/2.7'
Conflicts: qtcreator.pri qtcreator.qbs share/qtcreator/qml/qmlpuppet/interfaces/interfaces.pri share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstancesignalspy.cpp share/qtcreator/qml/qmlpuppet/qml2puppet/instances/objectnodeinstance.h share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/objectnodeinstance.h src/plugins/debugger/debuggerplugin.cpp src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu_helper.cpp src/plugins/qmldesigner/components/debugview/debugview.cpp src/plugins/qmldesigner/components/formeditor/abstractcustomtool.cpp src/plugins/qmldesigner/components/formeditor/abstractcustomtool.h src/plugins/qmldesigner/components/formeditor/formeditorview.cpp src/plugins/qmldesigner/components/integration/stackedutilitypanelcontroller.h src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp src/plugins/qmldesigner/components/navigator/navigatorview.cpp src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp src/plugins/qmldesigner/designercore/include/abstractview.h src/plugins/qmldesigner/designercore/include/qmldesignercorelib_global.h src/plugins/qmldesigner/designercore/include/rewriterview.h src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp src/plugins/qmldesigner/designercore/model/abstractview.cpp src/plugins/qmldesigner/designmodewidget.cpp Change-Id: I9d8126e88397c02a87b5e4ab4da44e2bc7089134
This commit is contained in:
@@ -25,33 +25,30 @@
|
||||
\title Setting Up a Qbs Project
|
||||
|
||||
The Qt Build Suite (Qbs) and the Qbs plugin are still experimental, and
|
||||
therefore, you must first build them from sources. You can use the Qbs
|
||||
plugin only with a \QC instance you also built from sources by using the
|
||||
same tool chain as for building Qbs and the Qbs plugin.
|
||||
therefore, you must first enable the plugin manually. If you build \QC
|
||||
yourself from our git repository, you also need to fetch the Qbs submodule to
|
||||
get Qbs support. See \l{Enabling the Qbs Plugin} below.
|
||||
|
||||
To use Qbs to build a project, you must create a .qbs file for the project.
|
||||
For more information, see the
|
||||
\l{http://doc-snapshot.qt-project.org/qbs/index.html}{Qbs Manual}.
|
||||
|
||||
\section1 Building the Qbs Plugin
|
||||
\section1 Enabling the Qbs Plugin
|
||||
|
||||
To build the Qbs plugin and to enable it in \QC:
|
||||
If you use a \QC binary release, you need to enable the plugin by
|
||||
selecting \gui Help > \gui {About Plugins} > \gui {Build Systems}
|
||||
> \gui {QbsProjectManager} and restarting \QC.
|
||||
|
||||
To build the Qbs plugin yourself from the \QC git repository:
|
||||
|
||||
\list 1
|
||||
|
||||
\li Clone the Qbs repository and build Qbs.
|
||||
\li Fetch the Qbs submodule in your \QC git checkout with
|
||||
\c {git submodule update --init}.
|
||||
|
||||
\li Set values for the environment variables that specify the Qbs source
|
||||
directory (QBS_SOURCE_DIR) and build directory (QBS_BUILD_DIR).
|
||||
\li Run qmake on \QC and build \QC again.
|
||||
|
||||
\li To build the Qbs plugin that is located in the
|
||||
\c {src\plugins\qbsprojectmanager} directory in the \QC source
|
||||
directory, clone the \QC repository and build \QC.
|
||||
|
||||
\li To enable the plugin, select \gui Help > \gui {About Plugins} >
|
||||
\gui {Build Systems} > \gui {QbsProjectManager}.
|
||||
|
||||
\li To use the plugin, restart \QC.
|
||||
\li Enable the Qbs plugin as described above.
|
||||
|
||||
\endlist
|
||||
|
||||
|
||||
@@ -1974,7 +1974,7 @@ class PlainDumper:
|
||||
self.printer = printer
|
||||
|
||||
def __call__(self, d, value):
|
||||
printer = self.printer.invoke(value)
|
||||
printer = self.printer.gen_printer(value)
|
||||
lister = getattr(printer, "children", None)
|
||||
children = [] if lister is None else list(lister())
|
||||
d.putType(self.printer.name)
|
||||
|
||||
@@ -22,7 +22,23 @@ for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
|
||||
MAINPROFILEPWD = $$PWD
|
||||
|
||||
android {
|
||||
android-no-sdk {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
$$itemfiles = $$eval($${deploymentfolder}.source)
|
||||
itempath = $${item}.path
|
||||
$$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
|
||||
export($$itemfiles)
|
||||
export($$itempath)
|
||||
INSTALLS += $$item
|
||||
}
|
||||
|
||||
target.path = /data/user/qt
|
||||
|
||||
export(target.path)
|
||||
INSTALLS += target
|
||||
} else:android {
|
||||
for(deploymentfolder, DEPLOYMENTFOLDERS) {
|
||||
item = item$${deploymentfolder}
|
||||
itemfiles = $${item}.files
|
||||
|
||||
@@ -903,11 +903,6 @@ This option is useful when you want to try your application on devices which don
|
||||
<translation>Выбор и установка Ministro - общесистемных динамических библиотек Qt.
|
||||
Может потребоваться при установке приложений на устройства, которые
|
||||
не имеют доступа к Android Market (например, эмулятор Android).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit Rules File</source>
|
||||
<translation>Изменить файл
|
||||
правил</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Install Ministro, system-wide Qt shared libraries installer</source>
|
||||
@@ -4667,10 +4662,6 @@ p, li { white-space: pre-wrap; }
|
||||
<source><System Language></source>
|
||||
<translation><Системный></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Done</source>
|
||||
<translation>Выполнено</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Restart required</source>
|
||||
<translation>Требуется перезапуск</translation>
|
||||
@@ -4757,12 +4748,12 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<source>Reset warnings</source>
|
||||
<translation>Сброс предупреждений</translation>
|
||||
<comment>Button text</comment>
|
||||
<translation>Вернуть предупреждения</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reset warnings</source>
|
||||
<comment>Button text</comment>
|
||||
<translation>Сбросить предупреждения</translation>
|
||||
<source>Re-enable all warnings which were suppressed using "Don't show again" button (e.g. missing highlighter).</source>
|
||||
<translation>Вернуть все предупреждения, отключённые кнопкой «Больше не показывать».</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -21666,15 +21657,15 @@ Do you want to ignore them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>debug</source>
|
||||
<translation type="unfinished">отладка</translation>
|
||||
<translation>отладка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>release</source>
|
||||
<translation type="unfinished">выпуск</translation>
|
||||
<translation>выпуск</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>unknown</source>
|
||||
<translation type="unfinished">неизвестно</translation>
|
||||
<translation>неизвестно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to Open Project</source>
|
||||
@@ -22672,7 +22663,7 @@ Remote stderr was: %1</source>
|
||||
<name>QmlDesigner::Internal::MetaInfoPrivate</name>
|
||||
<message>
|
||||
<source>Invalid meta info</source>
|
||||
<translation type="unfinished">Неверная мета-информация</translation>
|
||||
<translation>Неверная мета-информация</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -24828,6 +24819,17 @@ Please use the stop button instead.</source>
|
||||
<translation>Запустить</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QmlProjectManager::QmlApplicationWizardDialog</name>
|
||||
<message>
|
||||
<source>Creates a Qt Quick 1 UI project with a single QML file that contains the main view.&lt;br/&gt;You can review Qt Quick 1 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.&lt;br/&gt;&lt;br/&gt;Requires &lt;b&gt;Qt 4.8&lt;/b&gt; or newer.</source>
|
||||
<translation>Создание проекта Qt Quick 1 с одним файлом QML, содержащим главный интерфейс.&lt;br/&gt; Проверять проекты Qt Quick 1 можно без пересборки в QML Viewer. Для создания и запуска этого типа проектов не требуется интегрированная среда разработки. &lt;b/r&gt;&lt;br/&gt;Требуется &lt;b&gt;Qt 4.8&lt;/b&gt; или выше.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Creates a Qt Quick 2 UI project with a single QML file that contains the main view.&lt;br/&gt;You can review Qt Quick 2 UI projects in the QML Scene 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.&lt;br/&gt;&lt;br/&gt;Requires &lt;b&gt;Qt 5.0&lt;/b&gt; or newer.</source>
|
||||
<translation>Создание проекта Qt Quick 2 с одним файлом QML, содержащим главный интерфейс.&lt;br/&gt; Проверять проекты Qt Quick 2 можно без пересборки в QML Scene. Для создания и запуска этого типа проектов не требуется интегрированная среда разработки. &lt;br/&gt;&lt;br/&gt;Требуется &lt;b&gt;Qt 5.0&lt;/b&gt; или выше.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QmlProjectManager::QmlProject</name>
|
||||
<message>
|
||||
@@ -24937,7 +24939,7 @@ To compile QML Observer, go to the Qt Versions page, select the current Qt versi
|
||||
</message>
|
||||
<message>
|
||||
<source>Assets</source>
|
||||
<translation type="unfinished">Ресурсы</translation>
|
||||
<translation>Ресурсы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>XML Source</source>
|
||||
@@ -25905,7 +25907,7 @@ Do you want to add it to the project?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>BlackBerry Signing Authority</source>
|
||||
<translation type="unfinished">Центр подписывания BlackBerry</translation>
|
||||
<translation>Центр подписывания BlackBerry</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Registered: Yes</source>
|
||||
@@ -29899,7 +29901,7 @@ with a password, which you can enter below.</source>
|
||||
<name>SubComponentManager::parseDirectory</name>
|
||||
<message>
|
||||
<source>Invalid meta info</source>
|
||||
<translation type="unfinished">Неверная мета-информация</translation>
|
||||
<translation>Неверная мета-информация</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -106,6 +106,7 @@ QList<LookupItem> TypeOfExpression::operator()(ExpressionAST *expression,
|
||||
|
||||
m_scope = scope;
|
||||
|
||||
m_documents.append(document);
|
||||
m_lookupContext = LookupContext(document, m_thisDocument, m_snapshot);
|
||||
m_lookupContext.setBindings(m_bindings);
|
||||
m_lookupContext.setExpandTemplates(m_expandTemplates);
|
||||
@@ -127,6 +128,7 @@ QList<LookupItem> TypeOfExpression::reference(ExpressionAST *expression,
|
||||
|
||||
m_scope = scope;
|
||||
|
||||
m_documents.append(document);
|
||||
m_lookupContext = LookupContext(document, m_thisDocument, m_snapshot);
|
||||
m_lookupContext.setBindings(m_bindings);
|
||||
m_lookupContext.setExpandTemplates(m_expandTemplates);
|
||||
|
||||
@@ -142,6 +142,11 @@ private:
|
||||
mutable QSharedPointer<Environment> m_environment;
|
||||
|
||||
bool m_expandTemplates;
|
||||
|
||||
// FIXME: This is a temporary hack to avoid dangling pointers.
|
||||
// Keep the expression documents and thus all the symbols and
|
||||
// their types alive until they are not needed any more.
|
||||
QList<Document::Ptr> m_documents;
|
||||
};
|
||||
|
||||
ExpressionAST CPLUSPLUS_EXPORT *extractExpressionAST(Document::Ptr doc);
|
||||
|
||||
@@ -57,11 +57,12 @@ QtcLibrary {
|
||||
result.push("botan-1.10")
|
||||
if (qbs.targetOS === "windows")
|
||||
result.push("advapi32", "user32")
|
||||
else {
|
||||
result.push("rt")
|
||||
if (qbs.targetOS === "linux" || qbs.targetOS === "mac")
|
||||
result.push("dl")
|
||||
}
|
||||
else if (qbs.targetOS === "linux")
|
||||
result.push("rt", "dl");
|
||||
else if (qbs.targetOS === "mac")
|
||||
result.push("dl");
|
||||
else if (qbs.targetPlatform.indexOf("unix") !== -1)
|
||||
result.push("rt");
|
||||
return result
|
||||
}
|
||||
property var botanDefines: {
|
||||
|
||||
@@ -210,7 +210,8 @@ void ConsoleProcess::stop()
|
||||
|
||||
bool ConsoleProcess::isRunning() const
|
||||
{
|
||||
return d->m_process.state() != QProcess::NotRunning;
|
||||
return d->m_process.state() != QProcess::NotRunning
|
||||
|| (d->m_stubSocket && d->m_stubSocket->isOpen());
|
||||
}
|
||||
|
||||
QString ConsoleProcess::stubServerListen()
|
||||
@@ -242,8 +243,11 @@ QString ConsoleProcess::stubServerListen()
|
||||
|
||||
void ConsoleProcess::stubServerShutdown()
|
||||
{
|
||||
if (d->m_stubSocket)
|
||||
if (d->m_stubSocket) {
|
||||
readStubOutput(); // we could get the shutdown signal before emptying the buffer
|
||||
d->m_stubSocket->disconnect(); // avoid getting queued readyRead signals
|
||||
d->m_stubSocket->deleteLater(); // we might be called from the disconnected signal of m_stubSocket
|
||||
}
|
||||
d->m_stubSocket = 0;
|
||||
if (d->m_stubServer.isListening()) {
|
||||
d->m_stubServer.close();
|
||||
|
||||
@@ -210,6 +210,11 @@ void AndroidDeployStep::setDeployQASIPackagePath(const QString &package)
|
||||
void AndroidDeployStep::setUseLocalQtLibs(bool useLocal)
|
||||
{
|
||||
m_useLocalQtLibs = useLocal;
|
||||
|
||||
// ### Passes -1 for API level, which means it won't work with setups that require
|
||||
// library selection based on API level. Use the old approach (command line argument)
|
||||
// in these cases.
|
||||
AndroidManager::setUseLocalLibs(target(), useLocal, -1);
|
||||
}
|
||||
|
||||
bool AndroidDeployStep::runCommand(QProcess *buildProc,
|
||||
|
||||
@@ -223,6 +223,16 @@ bool AndroidManager::setVersionName(ProjectExplorer::Target *target, const QStri
|
||||
return saveManifest(target, doc);
|
||||
}
|
||||
|
||||
bool AndroidManager::ensureIconAttribute(ProjectExplorer::Target *target)
|
||||
{
|
||||
QDomDocument doc;
|
||||
if (!openManifest(target, doc))
|
||||
return false;
|
||||
QDomElement applicationElem = doc.documentElement().firstChildElement(QLatin1String("application"));
|
||||
applicationElem.setAttribute(QLatin1String("android:icon"), QLatin1String("@drawable/icon"));
|
||||
return saveManifest(target, doc);
|
||||
}
|
||||
|
||||
QString AndroidManager::targetSDK(ProjectExplorer::Target *target)
|
||||
{
|
||||
if (!createAndroidTemplatesIfNecessary(target))
|
||||
@@ -251,7 +261,8 @@ QIcon AndroidManager::highDpiIcon(ProjectExplorer::Target *target)
|
||||
|
||||
bool AndroidManager::setHighDpiIcon(ProjectExplorer::Target *target, const QString &iconFilePath)
|
||||
{
|
||||
return setIcon(target, HighDPI, iconFilePath);
|
||||
return ensureIconAttribute(target) &&
|
||||
setIcon(target, HighDPI, iconFilePath);
|
||||
}
|
||||
|
||||
QIcon AndroidManager::mediumDpiIcon(ProjectExplorer::Target *target)
|
||||
@@ -261,7 +272,8 @@ QIcon AndroidManager::mediumDpiIcon(ProjectExplorer::Target *target)
|
||||
|
||||
bool AndroidManager::setMediumDpiIcon(ProjectExplorer::Target *target, const QString &iconFilePath)
|
||||
{
|
||||
return setIcon(target, MediumDPI, iconFilePath);
|
||||
return ensureIconAttribute(target) &&
|
||||
setIcon(target, MediumDPI, iconFilePath);
|
||||
}
|
||||
|
||||
QIcon AndroidManager::lowDpiIcon(ProjectExplorer::Target *target)
|
||||
@@ -271,7 +283,8 @@ QIcon AndroidManager::lowDpiIcon(ProjectExplorer::Target *target)
|
||||
|
||||
bool AndroidManager::setLowDpiIcon(ProjectExplorer::Target *target, const QString &iconFilePath)
|
||||
{
|
||||
return setIcon(target, LowDPI, iconFilePath);
|
||||
return ensureIconAttribute(target) &&
|
||||
setIcon(target, LowDPI, iconFilePath);
|
||||
}
|
||||
|
||||
Utils::FileName AndroidManager::dirPath(ProjectExplorer::Target *target)
|
||||
@@ -348,6 +361,62 @@ QString AndroidManager::targetApplication(ProjectExplorer::Target *target)
|
||||
return QString();
|
||||
}
|
||||
|
||||
bool AndroidManager::setUseLocalLibs(ProjectExplorer::Target *target, bool useLocalLibs, int deviceAPILevel)
|
||||
{
|
||||
// For Qt 4, the "use local libs" options is handled by passing command line arguments to the
|
||||
// app, so no need to alter the AndroidManifest.xml
|
||||
QtSupport::BaseQtVersion *baseQtVersion = QtSupport::QtKitInformation::qtVersion(target->kit());
|
||||
if (baseQtVersion == 0 || baseQtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0))
|
||||
return true;
|
||||
|
||||
QDomDocument doc;
|
||||
if (!openManifest(target, doc))
|
||||
return false;
|
||||
|
||||
QDomElement metadataElem = doc.documentElement().firstChildElement(QLatin1String("application")).firstChildElement(QLatin1String("activity")).firstChildElement(QLatin1String("meta-data"));
|
||||
|
||||
QString localLibs;
|
||||
QString localJars;
|
||||
QString staticInitClasses;
|
||||
if (useLocalLibs) {
|
||||
localLibs = loadLocalLibs(target, deviceAPILevel);
|
||||
localJars = loadLocalJars(target, deviceAPILevel);
|
||||
staticInitClasses = loadLocalJarsInitClasses(target, deviceAPILevel);
|
||||
}
|
||||
|
||||
bool changedManifest = false;
|
||||
while (!metadataElem.isNull()) {
|
||||
if (metadataElem.attribute(QLatin1String("android:name")) == QLatin1String("android.app.use_local_qt_libs")) {
|
||||
if (metadataElem.attribute(QLatin1String("android:value")).toInt() != useLocalLibs) {
|
||||
metadataElem.setAttribute(QLatin1String("android:value"), int(useLocalLibs));
|
||||
changedManifest = true;
|
||||
}
|
||||
} else if (metadataElem.attribute(QLatin1String("android:name")) == QLatin1String("android.app.load_local_libs")) {
|
||||
if (metadataElem.attribute(QLatin1String("android:value")) != localLibs) {
|
||||
metadataElem.setAttribute(QLatin1String("android:value"), localLibs);
|
||||
changedManifest = true;
|
||||
}
|
||||
} else if (metadataElem.attribute(QLatin1String("android:name")) == QLatin1String("android.app.load_local_jars")) {
|
||||
if (metadataElem.attribute(QLatin1String("android:value")) != localJars) {
|
||||
metadataElem.setAttribute(QLatin1String("android:value"), localJars);
|
||||
changedManifest = true;
|
||||
}
|
||||
} else if (metadataElem.attribute(QLatin1String("android:name")) == QLatin1String("android.app.static_init_classes")) {
|
||||
if (metadataElem.attribute(QLatin1String("android:value")) != staticInitClasses) {
|
||||
metadataElem.setAttribute(QLatin1String("android:value"), staticInitClasses);
|
||||
changedManifest = true;
|
||||
}
|
||||
}
|
||||
|
||||
metadataElem = metadataElem.nextSiblingElement(QLatin1String("meta-data"));
|
||||
}
|
||||
|
||||
if (changedManifest)
|
||||
return saveManifest(target, doc);
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AndroidManager::setTargetApplication(ProjectExplorer::Target *target, const QString &name)
|
||||
{
|
||||
QDomDocument doc;
|
||||
@@ -905,6 +974,8 @@ bool AndroidManager::setIcon(ProjectExplorer::Target *target, IconType type, con
|
||||
|
||||
const QString path = iconPath(target, type);
|
||||
QFile::remove(path);
|
||||
QDir dir;
|
||||
dir.mkpath(QFileInfo(path).absolutePath());
|
||||
return QFile::copy(iconFileName, path);
|
||||
}
|
||||
|
||||
|
||||
@@ -78,12 +78,15 @@ public:
|
||||
static bool setMediumDpiIcon(ProjectExplorer::Target *target, const QString &iconFilePath);
|
||||
static QIcon lowDpiIcon(ProjectExplorer::Target *target);
|
||||
static bool setLowDpiIcon(ProjectExplorer::Target *target, const QString &iconFilePath);
|
||||
static bool ensureIconAttribute(ProjectExplorer::Target *target);
|
||||
|
||||
static QStringList availableTargetApplications(ProjectExplorer::Target *target);
|
||||
static QString targetApplication(ProjectExplorer::Target *target);
|
||||
static bool setTargetApplication(ProjectExplorer::Target *target, const QString &name);
|
||||
static QString targetApplicationPath(ProjectExplorer::Target *target);
|
||||
|
||||
static bool setUseLocalLibs(ProjectExplorer::Target *target, bool useLocalLibs, int deviceAPILevel);
|
||||
|
||||
static QString targetSDK(ProjectExplorer::Target *target);
|
||||
static bool setTargetSDK(ProjectExplorer::Target *target, const QString &sdk);
|
||||
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
#include "androidconfigurations.h"
|
||||
#include "androidcreatekeystorecertificate.h"
|
||||
#include "androidmanager.h"
|
||||
#include "androiddeploystep.h"
|
||||
#include "androidglobal.h"
|
||||
#include "ui_androidpackagecreationwidget.h"
|
||||
|
||||
#include <projectexplorer/project.h>
|
||||
@@ -375,11 +377,25 @@ void AndroidPackageCreationWidget::setTarget(const QString &target)
|
||||
void AndroidPackageCreationWidget::setQtLibs(QModelIndex, QModelIndex)
|
||||
{
|
||||
AndroidManager::setQtLibs(m_step->target(), m_qtLibsModel->checkedItems());
|
||||
AndroidDeployStep * const deployStep = AndroidGlobal::buildStep<AndroidDeployStep>(m_step->target()->activeDeployConfiguration());
|
||||
if (deployStep->useLocalQtLibs()) {
|
||||
// ### Passes -1 for API level, which means it won't work with setups that require
|
||||
// library selection based on API level. Use the old approach (command line argument)
|
||||
// in these cases.
|
||||
AndroidManager::setUseLocalLibs(m_step->target(), true, -1);
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidPackageCreationWidget::setPrebundledLibs(QModelIndex, QModelIndex)
|
||||
{
|
||||
AndroidManager::setPrebundledLibs(m_step->target(), m_prebundledLibs->checkedItems());
|
||||
AndroidDeployStep * const deployStep = AndroidGlobal::buildStep<AndroidDeployStep>(m_step->target()->activeDeployConfiguration());
|
||||
if (deployStep->useLocalQtLibs()) {
|
||||
// ### Passes -1 for API level, which means it won't work with setups that require
|
||||
// library selection based on API level. Use the old approach (command line argument)
|
||||
// in these cases.
|
||||
AndroidManager::setUseLocalLibs(m_step->target(), true, -1);
|
||||
}
|
||||
}
|
||||
|
||||
void AndroidPackageCreationWidget::prebundledLibSelected(const QModelIndex &index)
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#include <qtsupport/qtsupportconstants.h>
|
||||
#include <qtsupport/qtversionmanager.h>
|
||||
|
||||
#include <projectexplorer/target.h>
|
||||
#include <projectexplorer/kit.h>
|
||||
#include <projectexplorer/projectexplorer.h>
|
||||
|
||||
@@ -115,8 +116,18 @@ void AndroidQtVersion::addToEnvironment(const ProjectExplorer::Kit *k, Utils::En
|
||||
if (!qt4pro || !qt4pro->activeTarget()
|
||||
|| QtSupport::QtKitInformation::qtVersion(k)->type() != QLatin1String(Constants::ANDROIDQT))
|
||||
return;
|
||||
|
||||
Target *target = qt4pro->activeTarget();
|
||||
if (DeviceTypeKitInformation::deviceTypeId(target->kit()) != Constants::ANDROID_DEVICE_TYPE)
|
||||
return;
|
||||
if (AndroidConfigurations::instance().config().ndkLocation.isEmpty()
|
||||
|| AndroidConfigurations::instance().config().sdkLocation.isEmpty())
|
||||
return;
|
||||
if (AndroidConfigurations::instance().sdkTargets().isEmpty())
|
||||
return;
|
||||
|
||||
env.set(QLatin1String("ANDROID_NDK_PLATFORM"),
|
||||
AndroidConfigurations::instance().bestMatch(AndroidManager::targetSDK(qt4pro->activeTarget())));
|
||||
AndroidConfigurations::instance().bestMatch(AndroidManager::targetSDK(target)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -241,7 +241,7 @@ bool AndroidSettingsWidget::checkNDK(const Utils::FileName &location)
|
||||
|
||||
QSet<ProjectExplorer::Abi::Architecture> qtVersionsForArch;
|
||||
foreach (QtSupport::BaseQtVersion *qtVersion, QtSupport::QtVersionManager::instance()->versions()) {
|
||||
if (qtVersion->type() != QLatin1String(Constants::ANDROIDQT))
|
||||
if (qtVersion->type() != QLatin1String(Constants::ANDROIDQT) || qtVersion->qtAbis().isEmpty())
|
||||
continue;
|
||||
qtVersionsForArch.insert(qtVersion->qtAbis().first().architecture());
|
||||
}
|
||||
|
||||
@@ -607,13 +607,15 @@ ClearCaseSubmitEditor *ClearCasePlugin::openClearCaseSubmitEditor(const QString
|
||||
|
||||
void ClearCasePlugin::updateStatusActions()
|
||||
{
|
||||
FileStatus fileStatus = FileStatus::Unknown;
|
||||
bool hasFile = currentState().hasFile();
|
||||
QString fileName = currentState().relativeCurrentFile();
|
||||
if (hasFile) {
|
||||
QString fileName = currentState().relativeCurrentFile();
|
||||
fileStatus = m_statusMap->value(fileName, FileStatus(FileStatus::Unknown));
|
||||
|
||||
FileStatus fileStatus = m_statusMap->value(fileName, FileStatus(FileStatus::Unknown));
|
||||
|
||||
if (ClearCase::Constants::debug)
|
||||
qDebug() << Q_FUNC_INFO << fileName << ", status = " << fileStatus.status;
|
||||
if (ClearCase::Constants::debug)
|
||||
qDebug() << Q_FUNC_INFO << fileName << ", status = " << fileStatus.status;
|
||||
}
|
||||
|
||||
m_checkOutAction->setEnabled(hasFile && (fileStatus.status & (FileStatus::CheckedIn | FileStatus::Hijacked)));
|
||||
m_undoCheckOutAction->setEnabled(hasFile && (fileStatus.status & FileStatus::CheckedOut));
|
||||
|
||||
@@ -352,6 +352,7 @@ bool CMakeProject::parseCMakeLists()
|
||||
|
||||
QByteArray allDefines;
|
||||
allDefines.append(tc->predefinedMacros(cxxflags));
|
||||
allDefines.append(cbpparser.defines());
|
||||
|
||||
QStringList allFrameworkPaths;
|
||||
QList<ProjectExplorer::HeaderPath> allHeaderPaths;
|
||||
@@ -1215,8 +1216,18 @@ void CMakeCbpParser::parseAdd()
|
||||
|
||||
QString compilerOption = addAttributes.value(QLatin1String("option")).toString();
|
||||
// defining multiple times a macro to the same value makes no sense
|
||||
if (!compilerOption.isEmpty() && !m_compilerOptions.contains(compilerOption))
|
||||
if (!compilerOption.isEmpty() && !m_compilerOptions.contains(compilerOption)) {
|
||||
m_compilerOptions.append(compilerOption);
|
||||
int macroNameIndex = compilerOption.indexOf(QLatin1String("-D")) + 2;
|
||||
if (macroNameIndex != 1) {
|
||||
int assignIndex = compilerOption.indexOf(QLatin1Char('='), macroNameIndex);
|
||||
if (assignIndex != -1)
|
||||
compilerOption[assignIndex] = ' ';
|
||||
m_defines.append("#define ");
|
||||
m_defines.append(compilerOption.mid(macroNameIndex).toUtf8());
|
||||
m_defines.append('\n');
|
||||
}
|
||||
}
|
||||
|
||||
while (!atEnd()) {
|
||||
readNext();
|
||||
@@ -1314,6 +1325,11 @@ QStringList CMakeCbpParser::includeFiles()
|
||||
return m_includeFiles;
|
||||
}
|
||||
|
||||
QByteArray CMakeCbpParser::defines() const
|
||||
{
|
||||
return m_defines;
|
||||
}
|
||||
|
||||
QList<CMakeBuildTarget> CMakeCbpParser::buildTargets()
|
||||
{
|
||||
return m_buildTargets;
|
||||
|
||||
@@ -162,6 +162,7 @@ public:
|
||||
QList<ProjectExplorer::FileNode *> cmakeFileList();
|
||||
QStringList includeFiles();
|
||||
QList<CMakeBuildTarget> buildTargets();
|
||||
QByteArray defines() const;
|
||||
QString projectName() const;
|
||||
QString compilerName() const;
|
||||
bool hasCMakeFiles();
|
||||
@@ -188,6 +189,7 @@ private:
|
||||
bool m_parsingCmakeUnit;
|
||||
QStringList m_includeFiles;
|
||||
QStringList m_compilerOptions;
|
||||
QByteArray m_defines;
|
||||
|
||||
CMakeBuildTarget m_buildTarget;
|
||||
QList<CMakeBuildTarget> m_buildTargets;
|
||||
|
||||
@@ -81,7 +81,7 @@ MakeStep::MakeStep(BuildStepList *bsl, MakeStep *bs) :
|
||||
AbstractProcessStep(bsl, bs),
|
||||
m_clean(bs->m_clean),
|
||||
m_buildTargets(bs->m_buildTargets),
|
||||
m_additionalArguments(Utils::QtcProcess::joinArgs(bs->m_buildTargets))
|
||||
m_additionalArguments(bs->m_additionalArguments)
|
||||
{
|
||||
ctor();
|
||||
}
|
||||
|
||||
@@ -31,6 +31,8 @@ QtcPlugin {
|
||||
]
|
||||
}
|
||||
|
||||
cpp.frameworks: qbs.targetOS === "mac" ? ["AppKit"] : undefined
|
||||
|
||||
files: [
|
||||
"basefilewizard.cpp",
|
||||
"basefilewizard.h",
|
||||
@@ -234,8 +236,10 @@ QtcPlugin {
|
||||
}
|
||||
|
||||
Group {
|
||||
condition: qbs.targetOS == "macx"
|
||||
condition: qbs.targetOS == "mac"
|
||||
files: [
|
||||
"macfullscreen.h",
|
||||
"macfullscreen.mm",
|
||||
"progressmanager/progressmanager_mac.mm",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -226,16 +226,18 @@ StartApplicationDialog::StartApplicationDialog(QWidget *parent)
|
||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
setWindowTitle(tr("Start Debugger"));
|
||||
|
||||
d->kitChooser = new KitChooser(this);
|
||||
d->kitChooser->populate();
|
||||
|
||||
d->serverPortLabel = new QLabel(tr("Server port:"), this);
|
||||
d->serverPortSpinBox = new QSpinBox(this);
|
||||
d->serverPortSpinBox->setRange(1, 65535);
|
||||
|
||||
d->localExecutablePathChooser = new PathChooser(this);
|
||||
d->localExecutablePathChooser->setExpectedKind(PathChooser::File);
|
||||
d->localExecutablePathChooser->setPromptDialogTitle(tr("Select Executable"));
|
||||
d->localExecutablePathChooser->lineEdit()->setHistoryCompleter(QLatin1String("LocalExecutable"));
|
||||
|
||||
d->serverPortSpinBox = new QSpinBox(this);
|
||||
d->serverPortSpinBox->setRange(1, 65535);
|
||||
|
||||
d->serverPortLabel = new QLabel(tr("Server port:"), this);
|
||||
|
||||
d->arguments = new FancyLineEdit(this);
|
||||
d->arguments->setHistoryCompleter(QLatin1String("CommandlineArguments"));
|
||||
|
||||
@@ -246,9 +248,6 @@ StartApplicationDialog::StartApplicationDialog(QWidget *parent)
|
||||
|
||||
d->runInTerminalCheckBox = new QCheckBox(this);
|
||||
|
||||
d->kitChooser = new KitChooser(this);
|
||||
d->kitChooser->populate();
|
||||
|
||||
d->breakAtMainCheckBox = new QCheckBox(this);
|
||||
d->breakAtMainCheckBox->setText(QString());
|
||||
|
||||
|
||||
@@ -156,6 +156,9 @@ unsigned int DebuggerKitInformation::priority() const
|
||||
|
||||
DebuggerKitInformation::DebuggerItem DebuggerKitInformation::autoDetectItem(const Kit *k)
|
||||
{
|
||||
if (DebuggerKitInformation::isValidDebugger(k))
|
||||
return DebuggerKitInformation::debuggerItem(k);
|
||||
|
||||
DebuggerItem result;
|
||||
const ToolChain *tc = ToolChainKitInformation::toolChain(k);
|
||||
Abi abi = Abi::hostAbi();
|
||||
@@ -201,8 +204,7 @@ DebuggerKitInformation::DebuggerItem DebuggerKitInformation::autoDetectItem(cons
|
||||
void DebuggerKitInformation::setup(Kit *k)
|
||||
{
|
||||
QTC_ASSERT(ToolChainManager::instance()->isLoaded(), return);
|
||||
if (!isValidDebugger(k))
|
||||
setDebuggerItem(k, autoDetectItem(k));
|
||||
setDebuggerItem(k, autoDetectItem(k));
|
||||
}
|
||||
|
||||
// Check the configuration errors and return a flag mask. Provide a quick check and
|
||||
|
||||
@@ -1589,7 +1589,9 @@ void DebuggerPluginPrivate::attachCore()
|
||||
{
|
||||
AttachCoreDialog dlg(mainWindow());
|
||||
|
||||
dlg.setKitId(Id::fromSetting(configValue(_("LastExternalKit"))));
|
||||
const QString lastExternalKit = configValue(_("LastExternalKit")).toString();
|
||||
if (!lastExternalKit.isEmpty())
|
||||
dlg.setKitId(Id::fromString(lastExternalKit));
|
||||
dlg.setLocalExecutableFile(configValue(_("LastExternalExecutableFile")).toString());
|
||||
dlg.setLocalCoreFile(configValue(_("LastLocalCoreFile")).toString());
|
||||
dlg.setRemoteCoreFile(configValue(_("LastRemoteCoreFile")).toString());
|
||||
|
||||
@@ -234,14 +234,14 @@ AttachCoreDialog::AttachCoreDialog(QWidget *parent)
|
||||
d->forceLocalLabel->setText(tr("Use local core file:"));
|
||||
d->forceLocalLabel->setBuddy(d->forceLocalCheckBox);
|
||||
|
||||
d->localCoreFileName = new PathChooser(this);
|
||||
d->localCoreFileName->setExpectedKind(PathChooser::File);
|
||||
d->localCoreFileName->setPromptDialogTitle(tr("Select Core File"));
|
||||
|
||||
d->localExecFileName = new PathChooser(this);
|
||||
d->localExecFileName->setExpectedKind(PathChooser::File);
|
||||
d->localExecFileName->setPromptDialogTitle(tr("Select Executable"));
|
||||
|
||||
d->localCoreFileName = new PathChooser(this);
|
||||
d->localCoreFileName->setExpectedKind(PathChooser::File);
|
||||
d->localCoreFileName->setPromptDialogTitle(tr("Select Core File"));
|
||||
|
||||
d->overrideStartScriptFileName = new PathChooser(this);
|
||||
d->overrideStartScriptFileName->setExpectedKind(PathChooser::File);
|
||||
d->overrideStartScriptFileName->setPromptDialogTitle(tr("Select Startup Script"));
|
||||
|
||||
@@ -5577,6 +5577,11 @@ void FakeVimHandler::Private::handleExCommand(const QString &line0)
|
||||
}
|
||||
lastCommand = line;
|
||||
}
|
||||
|
||||
// if the last command closed the editor, we would crash here (:vs and then :on)
|
||||
if (!(m_textedit || m_plaintextedit))
|
||||
return;
|
||||
|
||||
endEditBlock();
|
||||
|
||||
resetCommandMode();
|
||||
|
||||
@@ -285,6 +285,14 @@ void FindToolBar::installEventFilters()
|
||||
}
|
||||
}
|
||||
|
||||
bool FindToolBar::shouldSetFocusOnKeyEvent(QKeyEvent *event)
|
||||
{
|
||||
return event->key() == Qt::Key_Escape && !event->modifiers()
|
||||
&& !m_findCompleter->popup()->isVisible()
|
||||
&& !m_replaceCompleter->popup()->isVisible()
|
||||
&& m_currentDocumentFind->isEnabled();
|
||||
}
|
||||
|
||||
bool FindToolBar::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
if (event->type() == QEvent::KeyPress) {
|
||||
@@ -315,13 +323,9 @@ bool FindToolBar::eventFilter(QObject *obj, QEvent *event)
|
||||
}
|
||||
} else if (obj == this && event->type() == QEvent::ShortcutOverride) {
|
||||
QKeyEvent *ke = static_cast<QKeyEvent *>(event);
|
||||
if (ke->key() == Qt::Key_Escape && !ke->modifiers()
|
||||
&& !m_findCompleter->popup()->isVisible()
|
||||
&& !m_replaceCompleter->popup()->isVisible()) {
|
||||
if (setFocusToCurrentFindSupport()) {
|
||||
event->accept();
|
||||
return true;
|
||||
}
|
||||
if (shouldSetFocusOnKeyEvent(ke)) {
|
||||
event->accept();
|
||||
return true;
|
||||
} else if (ke->key() == Qt::Key_Space && (ke->modifiers() & Utils::HostOsInfo::controlModifier())) {
|
||||
event->accept();
|
||||
return true;
|
||||
@@ -334,6 +338,16 @@ bool FindToolBar::eventFilter(QObject *obj, QEvent *event)
|
||||
return Utils::StyledBar::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
void FindToolBar::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
if (shouldSetFocusOnKeyEvent(event)) {
|
||||
if (setFocusToCurrentFindSupport())
|
||||
event->accept();
|
||||
return;
|
||||
}
|
||||
return Utils::StyledBar::keyPressEvent(event);
|
||||
}
|
||||
|
||||
void FindToolBar::adaptToCandidate()
|
||||
{
|
||||
updateFindAction();
|
||||
|
||||
@@ -97,6 +97,7 @@ private slots:
|
||||
|
||||
protected:
|
||||
bool focusNextPrevChild(bool next);
|
||||
void keyPressEvent(QKeyEvent *event);
|
||||
|
||||
private:
|
||||
void installEventFilters();
|
||||
@@ -115,6 +116,8 @@ private:
|
||||
void updateIcons();
|
||||
void updateFlagMenus();
|
||||
|
||||
bool shouldSetFocusOnKeyEvent(QKeyEvent *event);
|
||||
|
||||
FindPlugin *m_plugin;
|
||||
CurrentDocumentFind *m_currentDocumentFind;
|
||||
Ui::FindWidget m_ui;
|
||||
|
||||
@@ -1999,8 +1999,11 @@ bool GitClient::getCommitData(const QString &workingDirectory,
|
||||
commitData->panelData.author = readConfigValue(workingDirectory, QLatin1String("user.name"));
|
||||
commitData->panelData.email = readConfigValue(workingDirectory, QLatin1String("user.email"));
|
||||
// Commit: Get the commit template
|
||||
QString templateFilename = QDir(gitDir).absoluteFilePath(QLatin1String("MERGE_MSG"));
|
||||
if (!QFileInfo(templateFilename).isFile())
|
||||
QDir gitDirectory(gitDir);
|
||||
QString templateFilename = gitDirectory.absoluteFilePath(QLatin1String("MERGE_MSG"));
|
||||
if (!QFile::exists(templateFilename))
|
||||
templateFilename = gitDirectory.absoluteFilePath(QLatin1String("SQUASH_MSG"));
|
||||
if (!QFile::exists(templateFilename))
|
||||
templateFilename = readConfigValue(workingDirectory, QLatin1String("commit.template"));
|
||||
if (!templateFilename.isEmpty()) {
|
||||
// Make relative to repository
|
||||
|
||||
@@ -1001,10 +1001,8 @@ void GitPlugin::pull()
|
||||
}
|
||||
|
||||
GitClient::StashGuard stashGuard(topLevel, QLatin1String("Pull"));
|
||||
if (stashGuard.stashingFailed(false))
|
||||
if (stashGuard.stashingFailed(false) || (rebase && (stashGuard.result() == GitClient::NotStashed)))
|
||||
return;
|
||||
if (rebase && (stashGuard.result() == GitClient::NotStashed))
|
||||
m_gitClient->synchronousCheckoutFiles(topLevel);
|
||||
if (!m_gitClient->synchronousPull(topLevel, rebase))
|
||||
stashGuard.preventPop();
|
||||
}
|
||||
|
||||
@@ -199,6 +199,10 @@ DeviceProcessesDialogPrivate::DeviceProcessesDialogPrivate(KitChooser *chooser,
|
||||
connect(&proxyModel, SIGNAL(layoutChanged()), SLOT(handleProcessListUpdated()));
|
||||
connect(buttonBox, SIGNAL(accepted()), q, SLOT(accept()));
|
||||
connect(buttonBox, SIGNAL(rejected()), q, SLOT(reject()));
|
||||
|
||||
QWidget::setTabOrder(kitChooser, processFilterLineEdit);
|
||||
QWidget::setTabOrder(processFilterLineEdit, procView);
|
||||
QWidget::setTabOrder(procView, buttonBox);
|
||||
}
|
||||
|
||||
void DeviceProcessesDialogPrivate::setDevice(const IDevice::ConstPtr &device)
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
#include "qbsproject.h"
|
||||
|
||||
#include <utils/hostosinfo.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <qbs.h>
|
||||
@@ -86,7 +87,10 @@ public:
|
||||
if (child->isFile())
|
||||
return;
|
||||
|
||||
node->name = node->name + QLatin1Char('/') + child->name;
|
||||
if (!Utils::HostOsInfo::isWindowsHost() || !node->name.isEmpty())
|
||||
node->name = node->name + QLatin1Char('/') + child->name;
|
||||
else
|
||||
node->name = child->name;
|
||||
node->children = child->children;
|
||||
|
||||
foreach (FileTreeNode *tmpChild, node->children)
|
||||
@@ -108,7 +112,8 @@ public:
|
||||
QString p = name;
|
||||
FileTreeNode *node = parent;
|
||||
while (node) {
|
||||
p = node->name + QLatin1Char('/') + p;
|
||||
if (!Utils::HostOsInfo::isWindowsHost() || !node->name.isEmpty())
|
||||
p = node->name + QLatin1Char('/') + p;
|
||||
node = node->parent;
|
||||
}
|
||||
return p;
|
||||
|
||||
@@ -249,7 +249,7 @@ void DebugView::rewriterEndTransaction()
|
||||
|
||||
WidgetInfo DebugView::widgetInfo()
|
||||
{
|
||||
return createWidgetInfo(m_debugViewWidget.data(), QLatin1String("DebugView"), WidgetInfo::LeftPane, 0, tr("Debug View"));
|
||||
return createWidgetInfo(m_debugViewWidget.data(), 0, QLatin1String("DebugView"), WidgetInfo::LeftPane, 0, tr("Debug View"));
|
||||
}
|
||||
|
||||
bool DebugView::hasWidget() const
|
||||
|
||||
@@ -277,7 +277,7 @@ void FormEditorView::bindingPropertiesChanged(const QList<BindingProperty>& prop
|
||||
|
||||
WidgetInfo FormEditorView::widgetInfo()
|
||||
{
|
||||
return createWidgetInfo(m_formEditorWidget.data(), "FormEditor", WidgetInfo::CentralPane, 0, tr("Form Editor"));
|
||||
return createWidgetInfo(m_formEditorWidget.data(), 0, "FormEditor", WidgetInfo::CentralPane, 0, tr("Form Editor"));
|
||||
}
|
||||
|
||||
FormEditorWidget *FormEditorView::formEditorWidget()
|
||||
|
||||
@@ -73,7 +73,7 @@ public:
|
||||
|
||||
void updateMoveManipulator();
|
||||
|
||||
void beginWithPoint(const QPointF &beginPoint);
|
||||
void beginWithPoint(const QPointF &beginPoint) QTC_OVERRIDE;
|
||||
|
||||
void clear() QTC_OVERRIDE;
|
||||
|
||||
|
||||
@@ -53,7 +53,11 @@ WidgetInfo ItemLibraryView::widgetInfo()
|
||||
if (m_widget.isNull())
|
||||
m_widget = new ItemLibraryWidget;
|
||||
|
||||
return createWidgetInfo(m_widget.data(), QLatin1String("Library"), WidgetInfo::LeftPane, 0);
|
||||
return createWidgetInfo(m_widget.data(),
|
||||
new WidgetInfo::ToolBarWidgetDefaultFactory<ItemLibraryWidget>(m_widget.data()),
|
||||
QLatin1String("Library"),
|
||||
WidgetInfo::LeftPane,
|
||||
0);
|
||||
}
|
||||
|
||||
void ItemLibraryView::modelAttached(Model *model)
|
||||
|
||||
@@ -106,7 +106,11 @@ bool NavigatorView::hasWidget() const
|
||||
|
||||
WidgetInfo NavigatorView::widgetInfo()
|
||||
{
|
||||
return createWidgetInfo(m_widget.data(), QLatin1String("Navigator"), WidgetInfo::LeftPane, 0);
|
||||
return createWidgetInfo(m_widget.data(),
|
||||
new WidgetInfo::ToolBarWidgetDefaultFactory<NavigatorWidget>(m_widget.data()),
|
||||
QLatin1String("Navigator"),
|
||||
WidgetInfo::LeftPane,
|
||||
0);
|
||||
}
|
||||
|
||||
void NavigatorView::modelAttached(Model *model)
|
||||
|
||||
@@ -968,7 +968,7 @@ bool PropertyEditor::hasWidget() const
|
||||
|
||||
WidgetInfo PropertyEditor::widgetInfo()
|
||||
{
|
||||
return createWidgetInfo(m_stackedWidget, QLatin1String("Properties"), WidgetInfo::RightPane, 0);
|
||||
return createWidgetInfo(m_stackedWidget, 0, QLatin1String("Properties"), WidgetInfo::RightPane, 0);
|
||||
}
|
||||
|
||||
void PropertyEditor::actualStateChanged(const ModelNode &node)
|
||||
|
||||
@@ -62,7 +62,7 @@ StatesEditorView::StatesEditorView(QObject *parent) :
|
||||
|
||||
WidgetInfo StatesEditorView::widgetInfo()
|
||||
{
|
||||
return createWidgetInfo(m_statesEditorWidget.data(), "StatesEditor", WidgetInfo::TopPane, 0, tr("States Editor"));
|
||||
return createWidgetInfo(m_statesEditorWidget.data(), 0, "StatesEditor", WidgetInfo::TopPane, 0, tr("States Editor"));
|
||||
}
|
||||
|
||||
void StatesEditorView::removeState(int nodeId)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of Qt Creator.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
||||
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of Qt Creator.
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QStyle;
|
||||
class QToolButton;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace QmlDesigner {
|
||||
@@ -58,7 +59,32 @@ class QmlModelView;
|
||||
class NodeInstanceView;
|
||||
class RewriterView;
|
||||
|
||||
struct WidgetInfo {
|
||||
class WidgetInfo {
|
||||
|
||||
public:
|
||||
class ToolBarWidgetFactoryInterface {
|
||||
public:
|
||||
ToolBarWidgetFactoryInterface()
|
||||
{}
|
||||
|
||||
virtual QList<QToolButton*> createToolBarWidgets() = 0;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
class ToolBarWidgetDefaultFactory : public ToolBarWidgetFactoryInterface {
|
||||
public:
|
||||
ToolBarWidgetDefaultFactory(T *t ) : m_t(t)
|
||||
{}
|
||||
|
||||
QList<QToolButton*> createToolBarWidgets()
|
||||
{
|
||||
return m_t->createToolBarWidgets();
|
||||
}
|
||||
|
||||
private:
|
||||
T * m_t;
|
||||
};
|
||||
|
||||
enum PlacementHint {
|
||||
NoPane,
|
||||
LeftPane,
|
||||
@@ -68,14 +94,20 @@ struct WidgetInfo {
|
||||
CentralPane // not used
|
||||
};
|
||||
|
||||
WidgetInfo()
|
||||
: widget(0),
|
||||
toolBarWidgetFactory(0)
|
||||
{
|
||||
}
|
||||
|
||||
QString uniqueId;
|
||||
QString tabName;
|
||||
QWidget *widget;
|
||||
int placementPriority;
|
||||
PlacementHint placementHint;
|
||||
ToolBarWidgetFactoryInterface *toolBarWidgetFactory;
|
||||
};
|
||||
|
||||
|
||||
class QMLDESIGNERCORE_EXPORT AbstractView : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -205,6 +237,7 @@ protected:
|
||||
void setModel(Model * model);
|
||||
void removeModel();
|
||||
static WidgetInfo createWidgetInfo(QWidget *widget = 0,
|
||||
WidgetInfo::ToolBarWidgetFactoryInterface *toolBarWidgetFactory = 0,
|
||||
const QString &uniqueId = QString(),
|
||||
WidgetInfo::PlacementHint placementHint = WidgetInfo::NoPane,
|
||||
int placementPriority = 0,
|
||||
|
||||
@@ -119,6 +119,7 @@ void AbstractView::removeModel()
|
||||
}
|
||||
|
||||
WidgetInfo AbstractView::createWidgetInfo(QWidget *widget,
|
||||
WidgetInfo::ToolBarWidgetFactoryInterface *toolBarWidgetFactory,
|
||||
const QString &uniqueId,
|
||||
WidgetInfo::PlacementHint placementHint,
|
||||
int placementPriority,
|
||||
@@ -127,6 +128,7 @@ WidgetInfo AbstractView::createWidgetInfo(QWidget *widget,
|
||||
WidgetInfo widgetInfo;
|
||||
|
||||
widgetInfo.widget = widget;
|
||||
widgetInfo.toolBarWidgetFactory = toolBarWidgetFactory;
|
||||
widgetInfo.uniqueId = uniqueId;
|
||||
widgetInfo.placementHint = placementHint;
|
||||
widgetInfo.placementPriority = placementPriority;
|
||||
|
||||
@@ -30,13 +30,15 @@
|
||||
#ifndef REWRITERTRANSACTION_H
|
||||
#define REWRITERTRANSACTION_H
|
||||
|
||||
#include <qmldesignercorelib_global.h>
|
||||
|
||||
#include <QWeakPointer>
|
||||
|
||||
namespace QmlDesigner {
|
||||
|
||||
class AbstractView;
|
||||
|
||||
class RewriterTransaction
|
||||
class QMLDESIGNERCORE_EXPORT RewriterTransaction
|
||||
{
|
||||
public:
|
||||
RewriterTransaction();
|
||||
|
||||
@@ -148,25 +148,35 @@ QList<QToolButton *> ItemLibrarySideBarItem::createToolBarWidgets()
|
||||
return qobject_cast<ItemLibraryWidget*>(widget())->createToolBarWidgets();
|
||||
}
|
||||
|
||||
class NavigatorSideBarItem : public Core::SideBarItem
|
||||
class DesignerSideBarItem : public Core::SideBarItem
|
||||
{
|
||||
public:
|
||||
explicit NavigatorSideBarItem(QWidget *widget, const QString &id);
|
||||
virtual ~NavigatorSideBarItem();
|
||||
explicit DesignerSideBarItem(QWidget *widget, WidgetInfo::ToolBarWidgetFactoryInterface *createToolBarWidgets, const QString &id);
|
||||
virtual ~DesignerSideBarItem();
|
||||
|
||||
virtual QList<QToolButton *> createToolBarWidgets();
|
||||
|
||||
private:
|
||||
WidgetInfo::ToolBarWidgetFactoryInterface *m_toolBarWidgetFactory;
|
||||
|
||||
};
|
||||
|
||||
NavigatorSideBarItem::NavigatorSideBarItem(QWidget *widget, const QString &id) : Core::SideBarItem(widget, id) {}
|
||||
|
||||
NavigatorSideBarItem::~NavigatorSideBarItem()
|
||||
DesignerSideBarItem::DesignerSideBarItem(QWidget *widget, WidgetInfo::ToolBarWidgetFactoryInterface *toolBarWidgetFactory, const QString &id)
|
||||
: Core::SideBarItem(widget, id) , m_toolBarWidgetFactory(toolBarWidgetFactory)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QList<QToolButton *> NavigatorSideBarItem::createToolBarWidgets()
|
||||
DesignerSideBarItem::~DesignerSideBarItem()
|
||||
{
|
||||
return qobject_cast<NavigatorWidget*>(widget())->createToolBarWidgets();
|
||||
delete m_toolBarWidgetFactory;
|
||||
}
|
||||
|
||||
QList<QToolButton *> DesignerSideBarItem::createToolBarWidgets()
|
||||
{
|
||||
if (m_toolBarWidgetFactory)
|
||||
return m_toolBarWidgetFactory->createToolBarWidgets();
|
||||
|
||||
return QList<QToolButton *>();
|
||||
}
|
||||
|
||||
void DocumentWarningWidget::goToError()
|
||||
@@ -356,13 +366,13 @@ void DesignModeWidget::setup()
|
||||
|
||||
foreach (const WidgetInfo &widgetInfo, viewManager().widgetInfos()) {
|
||||
if (widgetInfo.placementHint == widgetInfo.LeftPane) {
|
||||
Core::SideBarItem *sideBarItem = new NavigatorSideBarItem(widgetInfo.widget, widgetInfo.uniqueId);
|
||||
Core::SideBarItem *sideBarItem = new DesignerSideBarItem(widgetInfo.widget, widgetInfo.toolBarWidgetFactory, widgetInfo.uniqueId);
|
||||
sideBarItems.append(sideBarItem);
|
||||
leftSideBarItems.append(sideBarItem);
|
||||
}
|
||||
|
||||
if (widgetInfo.placementHint == widgetInfo.RightPane) {
|
||||
Core::SideBarItem *sideBarItem = new NavigatorSideBarItem(widgetInfo.widget, widgetInfo.uniqueId);
|
||||
Core::SideBarItem *sideBarItem = new DesignerSideBarItem(widgetInfo.widget, widgetInfo.toolBarWidgetFactory, widgetInfo.uniqueId);
|
||||
sideBarItems.append(sideBarItem);
|
||||
rightSideBarItems.append(sideBarItem);
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "bardescriptordocument.h"
|
||||
|
||||
#include "qnxconstants.h"
|
||||
#include "bardescriptoreditor.h"
|
||||
#include "bardescriptoreditorwidget.h"
|
||||
#include "bardescriptordocumentnodehandlers.h"
|
||||
|
||||
@@ -185,24 +186,31 @@ void BarDescriptorDocument::rename(const QString &newName)
|
||||
|
||||
QString BarDescriptorDocument::xmlSource() const
|
||||
{
|
||||
QDomDocument doc;
|
||||
doc.appendChild(doc.createProcessingInstruction(QLatin1String("xml"), QLatin1String("version='1.0' encoding='") + QLatin1String(codec()->name()) + QLatin1String("' standalone='no'")));
|
||||
BarDescriptorEditor *editor = qobject_cast<BarDescriptorEditor*>(m_editorWidget->editor());
|
||||
QTC_ASSERT(editor, return QString());
|
||||
|
||||
// QNX
|
||||
QDomElement rootElem = doc.createElement(QLatin1String("qnx"));
|
||||
rootElem.setAttribute(QLatin1String("xmlns"), QLatin1String("http://www.qnx.com/schemas/application/1.0"));
|
||||
if (editor->activePage() == BarDescriptorEditor::Source) {
|
||||
return m_editorWidget->xmlSource();
|
||||
} else {
|
||||
QDomDocument doc;
|
||||
doc.appendChild(doc.createProcessingInstruction(QLatin1String("xml"), QLatin1String("version='1.0' encoding='") + QLatin1String(codec()->name()) + QLatin1String("' standalone='no'")));
|
||||
|
||||
QMap<int, BarDescriptorDocumentAbstractNodeHandler*> nodeHandlerMap;
|
||||
foreach (BarDescriptorDocumentAbstractNodeHandler *nodeHandler, m_nodeHandlers)
|
||||
nodeHandlerMap.insertMulti(nodeHandler->order(), nodeHandler);
|
||||
// QNX
|
||||
QDomElement rootElem = doc.createElement(QLatin1String("qnx"));
|
||||
rootElem.setAttribute(QLatin1String("xmlns"), QLatin1String("http://www.qnx.com/schemas/application/1.0"));
|
||||
|
||||
QList<BarDescriptorDocumentAbstractNodeHandler*> nodeHandlers = nodeHandlerMap.values();
|
||||
foreach (BarDescriptorDocumentAbstractNodeHandler *nodeHandler, nodeHandlers)
|
||||
rootElem.appendChild(nodeHandler->toNode(doc));
|
||||
QMap<int, BarDescriptorDocumentAbstractNodeHandler*> nodeHandlerMap;
|
||||
foreach (BarDescriptorDocumentAbstractNodeHandler *nodeHandler, m_nodeHandlers)
|
||||
nodeHandlerMap.insertMulti(nodeHandler->order(), nodeHandler);
|
||||
|
||||
doc.appendChild(rootElem);
|
||||
QList<BarDescriptorDocumentAbstractNodeHandler*> nodeHandlers = nodeHandlerMap.values();
|
||||
foreach (BarDescriptorDocumentAbstractNodeHandler *nodeHandler, nodeHandlers)
|
||||
rootElem.appendChild(nodeHandler->toNode(doc));
|
||||
|
||||
return doc.toString(4);
|
||||
doc.appendChild(rootElem);
|
||||
|
||||
return doc.toString(4);
|
||||
}
|
||||
}
|
||||
|
||||
bool BarDescriptorDocument::loadContent(const QString &xmlSource, QString *errorMessage, int *errorLine)
|
||||
|
||||
@@ -151,6 +151,14 @@ QWidget *BarDescriptorEditor::toolBar()
|
||||
return m_toolBar;
|
||||
}
|
||||
|
||||
BarDescriptorEditor::EditorPage BarDescriptorEditor::activePage() const
|
||||
{
|
||||
BarDescriptorEditorWidget *editorWidget = qobject_cast<BarDescriptorEditorWidget *>(widget());
|
||||
QTC_ASSERT(editorWidget, return static_cast<EditorPage>(-1));
|
||||
|
||||
return static_cast<EditorPage>(editorWidget->currentIndex());
|
||||
}
|
||||
|
||||
void BarDescriptorEditor::changeEditorPage(QAction *action)
|
||||
{
|
||||
setActivePage(static_cast<EditorPage>(action->data().toInt()));
|
||||
|
||||
@@ -54,6 +54,13 @@ class BarDescriptorEditor : public Core::IEditor
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum EditorPage {
|
||||
General = 0,
|
||||
Application,
|
||||
Assets,
|
||||
Source
|
||||
};
|
||||
|
||||
explicit BarDescriptorEditor(BarDescriptorEditorWidget *editorWidget);
|
||||
|
||||
bool createNew(const QString &contents = QString());
|
||||
@@ -73,17 +80,12 @@ public:
|
||||
|
||||
QWidget *toolBar();
|
||||
|
||||
EditorPage activePage() const;
|
||||
|
||||
private slots:
|
||||
void changeEditorPage(QAction *action);
|
||||
|
||||
private:
|
||||
enum EditorPage {
|
||||
General = 0,
|
||||
Application,
|
||||
Assets,
|
||||
Source
|
||||
};
|
||||
|
||||
ProjectExplorer::TaskHub *taskHub();
|
||||
|
||||
void setActivePage(EditorPage page);
|
||||
|
||||
@@ -358,6 +358,7 @@ ProjectExplorer::Kit *BlackBerryConfiguration::createKit(QnxArchitecture arch, Q
|
||||
kit->setDisplayName(tr("BlackBerry 10 (%1)").arg(m_config.targetName));
|
||||
}
|
||||
|
||||
kit->setIconPath(QLatin1String(Constants::QNX_BB_CATEGORY_ICON));
|
||||
ProjectExplorer::DeviceTypeKitInformation::setDeviceTypeId(kit, Constants::QNX_BB_OS_TYPE);
|
||||
ProjectExplorer::SysRootKitInformation::setSysRoot(kit, m_config.sysRoot);
|
||||
|
||||
|
||||
@@ -102,17 +102,17 @@ bool BlackBerryCreatePackageStep::init()
|
||||
}
|
||||
|
||||
foreach (const BarPackageDeployInformation &info, packagesToDeploy) {
|
||||
if (info.appDescriptorPath.isEmpty()) {
|
||||
if (info.appDescriptorPath().isEmpty()) {
|
||||
raiseError(tr("Application descriptor file not specified, please check deployment settings"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (info.packagePath.isEmpty()) {
|
||||
if (info.packagePath().isEmpty()) {
|
||||
raiseError(tr("No package specified, please check deployment settings"));
|
||||
return false;
|
||||
}
|
||||
|
||||
const QString buildDir = target()->activeBuildConfiguration()->buildDirectory();
|
||||
const QString buildDir = QFileInfo(info.packagePath()).absolutePath();
|
||||
QDir dir(buildDir);
|
||||
if (!dir.exists()) {
|
||||
if (!dir.mkpath(buildDir)) {
|
||||
@@ -122,7 +122,7 @@ bool BlackBerryCreatePackageStep::init()
|
||||
}
|
||||
|
||||
const QString preparedFilePath = buildDir + QLatin1String("/bar-descriptor-") + project()->displayName() + QLatin1String("-qtc-generated.xml");
|
||||
if (!prepareAppDescriptorFile(info.appDescriptorPath, preparedFilePath))
|
||||
if (!prepareAppDescriptorFile(info.appDescriptorPath(), preparedFilePath))
|
||||
// If there is an error, prepareAppDescriptorFile() will raise it
|
||||
return false;
|
||||
|
||||
@@ -131,7 +131,7 @@ bool BlackBerryCreatePackageStep::init()
|
||||
args << QLatin1String("-devMode");
|
||||
if (!debugToken().isEmpty())
|
||||
args << QLatin1String("-debugToken") << QnxUtils::addQuotes(QDir::toNativeSeparators(debugToken()));
|
||||
args << QLatin1String("-package") << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath));
|
||||
args << QLatin1String("-package") << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath()));
|
||||
args << QnxUtils::addQuotes(QDir::toNativeSeparators(preparedFilePath));
|
||||
addCommand(packageCmd, args);
|
||||
}
|
||||
|
||||
@@ -50,8 +50,28 @@ const char ENABLED_KEY[] = "Qnx.BlackBerry.DeployInformation.Enabled";
|
||||
const char APPDESCRIPTOR_KEY[] = "Qnx.BlackBerry.DeployInformation.AppDescriptor";
|
||||
const char PACKAGE_KEY[] = "Qnx.BlackBerry.DeployInformation.Package";
|
||||
const char PROFILE_KEY[] = "Qnx.BlackBerry.DeployInformation.ProFile";
|
||||
const char TARGET_KEY[] = "Qnx.BlackBerry.DeployInformation.Target";
|
||||
const char SOURCE_KEY[] = "Qnx.BlackBerry.DeployInformation.Source";
|
||||
}
|
||||
|
||||
QString BarPackageDeployInformation::appDescriptorPath() const
|
||||
{
|
||||
if (userAppDescriptorPath.isEmpty())
|
||||
return sourceDir + QLatin1String("/bar-descriptor.xml");
|
||||
|
||||
return userAppDescriptorPath;
|
||||
}
|
||||
|
||||
QString BarPackageDeployInformation::packagePath() const
|
||||
{
|
||||
if (userPackagePath.isEmpty())
|
||||
return buildDir + QLatin1String("/") + targetName + QLatin1String(".bar");
|
||||
|
||||
return userPackagePath;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
BlackBerryDeployInformation::BlackBerryDeployInformation(ProjectExplorer::Target *target)
|
||||
: QAbstractTableModel(target)
|
||||
, m_target(target)
|
||||
@@ -89,9 +109,9 @@ QVariant BlackBerryDeployInformation::data(const QModelIndex &index, int role) c
|
||||
return di.enabled ? Qt::Checked : Qt::Unchecked;
|
||||
} else if (role == Qt::DisplayRole || role == Qt::EditRole) {
|
||||
if (index.column() == AppDescriptorColumn)
|
||||
return di.appDescriptorPath;
|
||||
return QDir::toNativeSeparators(di.appDescriptorPath());
|
||||
else if (index.column() == PackageColumn)
|
||||
return di.packagePath;
|
||||
return QDir::toNativeSeparators(di.packagePath());
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
@@ -126,9 +146,9 @@ bool BlackBerryDeployInformation::setData(const QModelIndex &index, const QVaria
|
||||
di.enabled = static_cast<Qt::CheckState>(value.toInt()) == Qt::Checked;
|
||||
} else if (role == Qt::EditRole) {
|
||||
if (index.column() == AppDescriptorColumn)
|
||||
di.appDescriptorPath = value.toString();
|
||||
di.userAppDescriptorPath = value.toString();
|
||||
else if (index.column() == PackageColumn)
|
||||
di.packagePath = value.toString();
|
||||
di.userPackagePath = value.toString();
|
||||
}
|
||||
|
||||
emit dataChanged(index, index);
|
||||
@@ -173,9 +193,11 @@ QVariantMap BlackBerryDeployInformation::toMap() const
|
||||
|
||||
QVariantMap deployInfoMap;
|
||||
deployInfoMap[QLatin1String(ENABLED_KEY)] = deployInfo.enabled;
|
||||
deployInfoMap[QLatin1String(APPDESCRIPTOR_KEY)] = deployInfo.appDescriptorPath;
|
||||
deployInfoMap[QLatin1String(PACKAGE_KEY)] = deployInfo.packagePath;
|
||||
deployInfoMap[QLatin1String(APPDESCRIPTOR_KEY)] = deployInfo.userAppDescriptorPath;
|
||||
deployInfoMap[QLatin1String(PACKAGE_KEY)] = deployInfo.userPackagePath;
|
||||
deployInfoMap[QLatin1String(PROFILE_KEY)] = deployInfo.proFilePath;
|
||||
deployInfoMap[QLatin1String(TARGET_KEY)] = deployInfo.targetName;
|
||||
deployInfoMap[QLatin1String(SOURCE_KEY)] = deployInfo.sourceDir;
|
||||
|
||||
outerMap[QString::fromLatin1(DEPLOYINFO_KEY).arg(i)] = deployInfoMap;
|
||||
}
|
||||
@@ -196,8 +218,13 @@ void BlackBerryDeployInformation::fromMap(const QVariantMap &map)
|
||||
const QString appDescriptorPath = innerMap.value(QLatin1String(APPDESCRIPTOR_KEY)).toString();
|
||||
const QString packagePath = innerMap.value(QLatin1String(PACKAGE_KEY)).toString();
|
||||
const QString proFilePath = innerMap.value(QLatin1String(PROFILE_KEY)).toString();
|
||||
const QString targetName = innerMap.value(QLatin1String(TARGET_KEY)).toString();
|
||||
const QString sourceDir = innerMap.value(QLatin1String(SOURCE_KEY)).toString();
|
||||
|
||||
m_deployInformation << BarPackageDeployInformation(enabled, appDescriptorPath, packagePath, proFilePath);
|
||||
BarPackageDeployInformation deployInformation(enabled, proFilePath, sourceDir, m_target->activeBuildConfiguration()->buildDirectory(), targetName);
|
||||
deployInformation.userAppDescriptorPath = appDescriptorPath;
|
||||
deployInformation.userPackagePath = packagePath;
|
||||
m_deployInformation << deployInformation;
|
||||
}
|
||||
|
||||
endResetModel();
|
||||
@@ -216,8 +243,13 @@ void BlackBerryDeployInformation::updateModel()
|
||||
foreach (Qt4ProjectManager::Qt4ProFileNode *node, appNodes) {
|
||||
bool nodeFound = false;
|
||||
for (int i = 0; i < m_deployInformation.size(); ++i) {
|
||||
if (m_deployInformation[i].proFilePath == node->path()) {
|
||||
keep << m_deployInformation[i];
|
||||
if (m_deployInformation[i].proFilePath == node->path()
|
||||
&& (!m_deployInformation[i].userAppDescriptorPath.isEmpty()
|
||||
|| !m_deployInformation[i].userPackagePath.isEmpty())) {
|
||||
BarPackageDeployInformation deployInformation = m_deployInformation[i];
|
||||
// In case the user resets the bar package path (or if it is empty already), we need the current build dir
|
||||
deployInformation.buildDir = m_target->activeBuildConfiguration()->buildDirectory();
|
||||
keep << deployInformation;
|
||||
nodeFound = true;
|
||||
break;
|
||||
}
|
||||
@@ -270,9 +302,7 @@ BarPackageDeployInformation BlackBerryDeployInformation::deployInformationFromNo
|
||||
Qt4ProjectManager::TargetInformation ti = node->targetInformation();
|
||||
|
||||
QFileInfo fi(node->path());
|
||||
const QString appDescriptorPath = QDir::toNativeSeparators(fi.absolutePath() + QLatin1String("/bar-descriptor.xml"));
|
||||
QString buildDir = m_target->activeBuildConfiguration()->buildDirectory();
|
||||
QString barPackagePath = QDir::toNativeSeparators(buildDir + QLatin1Char('/') + ti.target + QLatin1String(".bar"));
|
||||
const QString buildDir = m_target->activeBuildConfiguration()->buildDirectory();
|
||||
|
||||
return BarPackageDeployInformation(true, appDescriptorPath, barPackagePath, node->path());
|
||||
return BarPackageDeployInformation(true, node->path(), fi.absolutePath(), buildDir, ti.target);
|
||||
}
|
||||
|
||||
@@ -47,18 +47,27 @@ namespace Internal {
|
||||
|
||||
class BarPackageDeployInformation {
|
||||
public:
|
||||
BarPackageDeployInformation(bool enabled, QString appDescriptorPath, QString packagePath, QString proFilePath)
|
||||
BarPackageDeployInformation(bool enabled, const QString &proFilePath, const QString &sourceDir,
|
||||
const QString &buildDir, const QString &targetName)
|
||||
: enabled(enabled)
|
||||
, appDescriptorPath(appDescriptorPath)
|
||||
, packagePath(packagePath)
|
||||
, proFilePath(proFilePath)
|
||||
, sourceDir(sourceDir)
|
||||
, buildDir(buildDir)
|
||||
, targetName(targetName)
|
||||
{
|
||||
}
|
||||
|
||||
QString appDescriptorPath() const;
|
||||
QString packagePath() const;
|
||||
|
||||
bool enabled;
|
||||
QString appDescriptorPath;
|
||||
QString packagePath;
|
||||
QString proFilePath;
|
||||
QString sourceDir;
|
||||
QString buildDir;
|
||||
QString targetName;
|
||||
|
||||
QString userAppDescriptorPath;
|
||||
QString userPackagePath;
|
||||
};
|
||||
|
||||
class BlackBerryDeployInformation : public QAbstractTableModel
|
||||
|
||||
@@ -115,7 +115,7 @@ bool BlackBerryDeployStep::init()
|
||||
args << QLatin1String("-device") << deviceHost();
|
||||
if (!password().isEmpty())
|
||||
args << QLatin1String("-password") << password();
|
||||
args << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath));
|
||||
args << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath()));
|
||||
|
||||
addCommand(deployCmd, args);
|
||||
}
|
||||
@@ -130,8 +130,8 @@ void BlackBerryDeployStep::run(QFutureInterface<bool> &fi)
|
||||
|
||||
QList<BarPackageDeployInformation> packagesToDeploy = deployConfig->deploymentInfo()->enabledPackages();
|
||||
foreach (const BarPackageDeployInformation &info, packagesToDeploy) {
|
||||
if (!QFileInfo(info.packagePath).exists()) {
|
||||
raiseError(tr("Package '%1' does not exist. Create the package first.").arg(info.packagePath));
|
||||
if (!QFileInfo(info.packagePath()).exists()) {
|
||||
raiseError(tr("Package '%1' does not exist. Create the package first.").arg(info.packagePath()));
|
||||
fi.reportResult(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
|
||||
#include <QProgressDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QAbstractButton>
|
||||
|
||||
using namespace ProjectExplorer;
|
||||
using namespace Qnx::Internal;
|
||||
@@ -60,10 +61,12 @@ BlackBerryDeviceConfigurationWidget::BlackBerryDeviceConfigurationWidget(const I
|
||||
connect(ui->debugToken, SIGNAL(changed(QString)), this, SLOT(updateUploadButton()));
|
||||
connect(ui->debugToken, SIGNAL(editingFinished()), this, SLOT(debugTokenEditingFinished()));
|
||||
connect(ui->debugToken, SIGNAL(browsingFinished()), this, SLOT(debugTokenEditingFinished()));
|
||||
connect(ui->requestButton, SIGNAL(clicked()), this, SLOT(requestDebugToken()));
|
||||
connect(ui->uploadButton, SIGNAL(clicked()), this, SLOT(uploadDebugToken()));
|
||||
connect(uploader, SIGNAL(finished(int)), this, SLOT(uploadFinished(int)));
|
||||
|
||||
ui->debugToken->addButton(tr("Request"), this, SLOT(requestDebugToken()));
|
||||
ui->debugToken->addButton(tr("Upload"), this, SLOT(uploadDebugToken()));
|
||||
uploadButton = ui->debugToken->buttonAtIndex(2);
|
||||
|
||||
initGui();
|
||||
}
|
||||
|
||||
@@ -127,7 +130,7 @@ void BlackBerryDeviceConfigurationWidget::uploadDebugToken()
|
||||
|
||||
void BlackBerryDeviceConfigurationWidget::updateUploadButton()
|
||||
{
|
||||
ui->uploadButton->setEnabled(!ui->debugToken->path().isEmpty());
|
||||
uploadButton->setEnabled(!ui->debugToken->path().isEmpty());
|
||||
}
|
||||
|
||||
void BlackBerryDeviceConfigurationWidget::uploadFinished(int status)
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QProgressDialog;
|
||||
class QAbstractButton;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Qnx {
|
||||
@@ -76,6 +77,7 @@ private:
|
||||
BlackBerryDeviceConfiguration::Ptr deviceConfiguration() const;
|
||||
|
||||
Ui::BlackBerryDeviceConfigurationWidget *ui;
|
||||
QAbstractButton *uploadButton;
|
||||
|
||||
QProgressDialog *progressDialog;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>334</width>
|
||||
<height>109</height>
|
||||
<height>131</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
@@ -67,25 +67,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="Utils::PathChooser" name="debugToken" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="requestButton">
|
||||
<property name="text">
|
||||
<string>Request</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="uploadButton">
|
||||
<property name="text">
|
||||
<string>Upload</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<widget class="Utils::PathChooser" name="debugToken" native="true"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="keyLabel">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** Copyright (C) 2011 - 2012 Research In Motion
|
||||
** Copyright (C) 2011 - 2013 Research In Motion
|
||||
**
|
||||
** Contact: Research In Motion (blackberry-qt@qnx.com)
|
||||
** Contact: KDAB (info@kdab.com)
|
||||
|
||||
@@ -104,7 +104,7 @@ QString BlackBerryRunConfiguration::barPackage() const
|
||||
QList<BarPackageDeployInformation> packages = dc->deploymentInfo()->enabledPackages();
|
||||
foreach (const BarPackageDeployInformation package, packages) {
|
||||
if (package.proFilePath == proFilePath())
|
||||
return package.packagePath;
|
||||
return package.packagePath();
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
||||
@@ -103,12 +103,8 @@ void QnxAbstractQtVersion::addToEnvironment(const ProjectExplorer::Kit *k, Utils
|
||||
|
||||
Utils::Environment QnxAbstractQtVersion::qmakeRunEnvironment() const
|
||||
{
|
||||
if (!m_environmentUpToDate && !sdkPath().isEmpty())
|
||||
{
|
||||
// TODO: return Utils::Environment instead(?)
|
||||
m_envMap = QnxUtils::parseEnvironmentFile(QnxUtils::envFilePath(sdkPath()));
|
||||
m_environmentUpToDate = true;
|
||||
}
|
||||
if (!sdkPath().isEmpty())
|
||||
updateEnvironment();
|
||||
|
||||
Utils::Environment env = Utils::Environment::systemEnvironment();
|
||||
QnxUtils::prependQnxMapToEnvironment(m_envMap, env);
|
||||
|
||||
@@ -57,7 +57,7 @@ const QString AbstractMobileApp::ProFileComment(QLatin1String("#"));
|
||||
const QString AbstractMobileApp::DeploymentPriFileName(QLatin1String("deployment.pri"));
|
||||
const QString AbstractMobileApp::FileChecksum(QLatin1String("checksum"));
|
||||
const QString AbstractMobileApp::FileStubVersion(QLatin1String("version"));
|
||||
const int AbstractMobileApp::StubVersion = 8;
|
||||
const int AbstractMobileApp::StubVersion = 9;
|
||||
|
||||
AbstractMobileApp::AbstractMobileApp()
|
||||
: QObject()
|
||||
|
||||
+1
-1
Submodule src/shared/qbs updated: dcfc06010e...0c3b88d446
@@ -139,7 +139,7 @@ public:
|
||||
const Use use = future.resultAt(i);
|
||||
// When adding tests, you may want to uncomment the
|
||||
// following line in order to print out all found uses.
|
||||
// qDebug() << QTest::toString(use);
|
||||
qDebug() << QTest::toString(use);
|
||||
actualUses.append(use);
|
||||
}
|
||||
|
||||
@@ -178,6 +178,7 @@ private slots:
|
||||
void test_checksymbols_NestedClassOfEnclosingTemplateUse();
|
||||
|
||||
void test_checksymbols_QTCREATORBUG8890_danglingPointer();
|
||||
void test_checksymbols_QTCREATORBUG8974_danglingPointer();
|
||||
};
|
||||
|
||||
void tst_CheckSymbols::test_checksymbols_TypeUse()
|
||||
@@ -492,8 +493,745 @@ void tst_CheckSymbols::test_checksymbols_QTCREATORBUG8890_danglingPointer()
|
||||
;
|
||||
|
||||
TestData::check(source, expectedUses);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: This is a good candidate for a performance test.
|
||||
void tst_CheckSymbols::test_checksymbols_QTCREATORBUG8974_danglingPointer()
|
||||
{
|
||||
const QByteArray source =
|
||||
"template <class T>\n"
|
||||
"class Singleton\n"
|
||||
"{\n"
|
||||
"public:\n"
|
||||
" static T& instance() {}\n"
|
||||
"};\n"
|
||||
"\n"
|
||||
"void bar() {}\n"
|
||||
"\n"
|
||||
"void foo()\n"
|
||||
"{\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
" Singleton<INIManager>::instance().bar();\n"
|
||||
"};\n"
|
||||
;
|
||||
|
||||
const QList<Use> expectedUses = QList<Use>()
|
||||
<< Use(1, 17, 1, SemanticInfo::TypeUse)
|
||||
<< Use(2, 7, 9, SemanticInfo::TypeUse)
|
||||
<< Use(5, 12, 1, SemanticInfo::TypeUse)
|
||||
<< Use(5, 15, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(8, 6, 3, SemanticInfo::FunctionUse)
|
||||
<< Use(10, 6, 3, SemanticInfo::FunctionUse)
|
||||
<< Use(12, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(12, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(13, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(13, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(14, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(14, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(15, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(15, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(16, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(16, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(17, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(17, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(18, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(18, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(19, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(19, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(20, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(20, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(21, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(21, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(22, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(22, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(23, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(23, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(24, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(24, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(25, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(25, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(26, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(26, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(27, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(27, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(28, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(28, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(29, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(29, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(30, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(30, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(31, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(31, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(32, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(32, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(33, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(33, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(34, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(34, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(35, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(35, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(36, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(36, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(37, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(37, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(38, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(38, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(39, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(39, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(40, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(40, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(41, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(41, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(42, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(42, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(43, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(43, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(44, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(44, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(45, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(45, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(46, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(46, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(47, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(47, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(48, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(48, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(49, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(49, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(50, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(50, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(51, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(51, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(52, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(52, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(53, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(53, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(54, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(54, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(55, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(55, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(56, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(56, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(57, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(57, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(58, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(58, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(59, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(59, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(60, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(60, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(61, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(61, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(62, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(62, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(63, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(63, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(64, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(64, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(65, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(65, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(66, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(66, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(67, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(67, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(68, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(68, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(69, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(69, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(70, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(70, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(71, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(71, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(72, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(72, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(73, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(73, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(74, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(74, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(75, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(75, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(76, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(76, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(77, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(77, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(78, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(78, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(79, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(79, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(80, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(80, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(81, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(81, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(82, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(82, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(83, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(83, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(84, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(84, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(85, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(85, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(86, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(86, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(87, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(87, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(88, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(88, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(89, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(89, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(90, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(90, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(91, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(91, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(92, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(92, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(93, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(93, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(94, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(94, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(95, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(95, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(96, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(96, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(97, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(97, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(98, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(98, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(99, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(99, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(100, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(100, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(101, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(101, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(102, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(102, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(103, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(103, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(104, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(104, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(105, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(105, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(106, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(106, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(107, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(107, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(108, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(108, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(109, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(109, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(110, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(110, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(111, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(111, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(112, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(112, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(113, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(113, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(114, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(114, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(115, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(115, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(116, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(116, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(117, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(117, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(118, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(118, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(119, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(119, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(120, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(120, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(121, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(121, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(122, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(122, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(123, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(123, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(124, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(124, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(125, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(125, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(126, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(126, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(127, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(127, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(128, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(128, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(129, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(129, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(130, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(130, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(131, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(131, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(132, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(132, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(133, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(133, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(134, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(134, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(135, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(135, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(136, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(136, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(137, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(137, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(138, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(138, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(139, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(139, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(140, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(140, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(141, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(141, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(142, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(142, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(143, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(143, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(144, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(144, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(145, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(145, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(146, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(146, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(147, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(147, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(148, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(148, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(149, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(149, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(150, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(150, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(151, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(151, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(152, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(152, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(153, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(153, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(154, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(154, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(155, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(155, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(156, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(156, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(157, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(157, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(158, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(158, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(159, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(159, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(160, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(160, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(161, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(161, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(162, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(162, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(163, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(163, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(164, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(164, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(165, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(165, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(166, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(166, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(167, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(167, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(168, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(168, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(169, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(169, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(170, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(170, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(171, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(171, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(172, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(172, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(173, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(173, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(174, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(174, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(175, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(175, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(176, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(176, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(177, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(177, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(178, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(178, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(179, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(179, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(180, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(180, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(181, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(181, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(182, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(182, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(183, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(183, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(184, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(184, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(185, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(185, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(186, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(186, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(187, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(187, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(188, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(188, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(189, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(189, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(190, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(190, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(191, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(191, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(192, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(192, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(193, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(193, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(194, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(194, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(195, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(195, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(196, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(196, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(197, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(197, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(198, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(198, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(199, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(199, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(200, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(200, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(201, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(201, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(202, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(202, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(203, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(203, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(204, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(204, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(205, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(205, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(206, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(206, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(207, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(207, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(208, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(208, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(209, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(209, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(210, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(210, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(211, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(211, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(212, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(212, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(213, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(213, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(214, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(214, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(215, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(215, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(216, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(216, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(217, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(217, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(218, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(218, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(219, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(219, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(220, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(220, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(221, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(221, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(222, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(222, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(223, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(223, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(224, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(224, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(225, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(225, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(226, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(226, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(227, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(227, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(228, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(228, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(229, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(229, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(230, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(230, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(231, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(231, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(232, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(232, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(233, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(233, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(234, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(234, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(235, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(235, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(236, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(236, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(237, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(237, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(238, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(238, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(239, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(239, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(240, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(240, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(241, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(241, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(242, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(242, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(243, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(243, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(244, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(244, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(245, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(245, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(246, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(246, 28, 8, SemanticInfo::FunctionUse)
|
||||
<< Use(247, 5, 9, SemanticInfo::TypeUse)
|
||||
<< Use(247, 28, 8, SemanticInfo::FunctionUse)
|
||||
;
|
||||
|
||||
TestData::check(source, expectedUses);
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_CheckSymbols)
|
||||
#include "tst_checksymbols.moc"
|
||||
|
||||
@@ -2,8 +2,12 @@
|
||||
:*Qt Creator.Clear_QToolButton {text='Clear' type='QToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:*Qt Creator.Continue_Core::Internal::FancyToolButton {text='Continue' type='Core::Internal::FancyToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:*Qt Creator.DoubleTabWidget_ProjectExplorer::Internal::DoubleTabWidget {name='ProjectExplorer__Internal__DoubleTabWidget' type='ProjectExplorer::Internal::DoubleTabWidget' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='DoubleTabWidget'}
|
||||
:*Qt Creator.Events_QDockWidget {name='QmlProfilerEventsViewDockWidget' type='QDockWidget' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='Events'}
|
||||
:*Qt Creator.Events_QTabBar {aboveWidget=':*Qt Creator.Events_QDockWidget' type='QTabBar' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:*Qt Creator.Find_Find::Internal::FindToolBar {name='Find__Internal__FindWidget' type='Find::Internal::FindToolBar' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='Find'}
|
||||
:*Qt Creator.Interrupt_Core::Internal::FancyToolButton {text='Interrupt' type='Core::Internal::FancyToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:*Qt Creator.JavaScript_QDockWidget {name='QmlProfilerV8ProfileViewDockWidget' type='QDockWidget' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='JavaScript'}
|
||||
:*Qt Creator.JavaScript_QTabBar {aboveWidget=':*Qt Creator.JavaScript_QDockWidget' type='QTabBar' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:*Qt Creator.Start Debugging_Core::Internal::FancyToolButton {text='Start Debugging' type='Core::Internal::FancyToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:*Qt Creator.findEdit_Utils::FilterLineEdit {name='findEdit' type='Utils::FilterLineEdit' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:*Qt Creator_Core::Internal::FancyToolButton {occurrence='3' type='Core::Internal::FancyToolButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
@@ -19,6 +23,9 @@
|
||||
:Add Bookmark_BookmarkDialog {name='BookmarkDialog' type='BookmarkDialog' visible='1' windowTitle='Add Bookmark'}
|
||||
:Add to Version Control.No_QPushButton {text='No' type='QPushButton' unnamed='1' visible='1' window=':Add to Version Control_QMessageBox'}
|
||||
:Add to Version Control_QMessageBox {text~='Add the file.*to version control (.*)?' type='QMessageBox' unnamed='1' visible='1'}
|
||||
:Analyzer Toolbar.AnalyzerManagerToolBox_QComboBox {container=':Qt Creator.Analyzer Toolbar_QDockWidget' name='AnalyzerManagerToolBox' type='QComboBox' visible='1'}
|
||||
:Analyzer Toolbar.Elapsed:_QLabel {container=':Qt Creator.Analyzer Toolbar_QDockWidget' text~='Elapsed: \\\\d+.\\\\d s' type='QLabel' unnamed='1' visible='1'}
|
||||
:Analyzer Toolbar.Start_QToolButton {container=':Qt Creator.Analyzer Toolbar_QDockWidget' text='Start' type='QToolButton' unnamed='1' visible='1'}
|
||||
:Behavior.Autocomplete common prefix_QCheckBox {container=':CppTools__Internal__CompletionSettingsPage.Behavior_QGroupBox' name='partiallyComplete' text='Autocomplete common prefix' type='QCheckBox' visible='1'}
|
||||
:Behavior.completionTrigger_QComboBox {container=':CppTools__Internal__CompletionSettingsPage.Behavior_QGroupBox' name='completionTrigger' type='QComboBox' visible='1'}
|
||||
:Breakpoints_Debugger::Internal::BreakTreeView {container=':DebugModeWidget.Breakpoints_QDockWidget' type='Debugger::Internal::BreakTreeView' unnamed='1' visible='1'}
|
||||
@@ -44,6 +51,7 @@
|
||||
:Dialog.componentNameEdit_QLineEdit {name='componentNameEdit' type='Utils::ClassNameValidatingLineEdit' visible='1' window=':Dialog_QmlJSEditor::Internal::ComponentNameDialog'}
|
||||
:Dialog_QmlJSEditor::Internal::ComponentNameDialog {name='QmlJSEditor__Internal__ComponentNameDialog' type='QmlJSEditor::Internal::ComponentNameDialog' visible='1' windowTitle='Move Component into Separate File'}
|
||||
:Edit Environment_ProjectExplorer::EnvironmentItemsDialog {type='ProjectExplorer::EnvironmentItemsDialog' unnamed='1' visible='1' windowTitle='Edit Environment'}
|
||||
:Events.QmlProfilerEventsTable_QmlProfiler::Internal::QmlProfilerEventsMainView {container=':*Qt Creator.Events_QDockWidget' name='QmlProfilerEventsTable' type='QmlProfiler::Internal::QmlProfilerEventsMainView' visible='1'}
|
||||
:Failed to start application_QMessageBox {type='QMessageBox' unnamed='1' visible='1' windowTitle='Failed to start application'}
|
||||
:File has been removed.Close_QPushButton {text='Close' type='QPushButton' unnamed='1' visible='1' window=':File has been removed_QMessageBox'}
|
||||
:File has been removed.Save_QPushButton {text='Save' type='QPushButton' unnamed='1' visible='1' window=':File has been removed_QMessageBox'}
|
||||
@@ -52,6 +60,10 @@
|
||||
:Generator:_QComboBox {buddy=':CMake Wizard.Generator:_QLabel' type='QComboBox' unnamed='1' visible='1'}
|
||||
:Hits_QCLuceneResultWidget {aboveWidget=':Hits_QLabel' type='QCLuceneResultWidget' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:Hits_QLabel {text~='\\\\d+ - \\\\d+ of \\\\d+ Hits' type='QLabel' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||
:Installed Plugins.Close_QPushButton {text='Close' type='QPushButton' unnamed='1' visible='1' window=':Installed Plugins_Core::Internal::PluginDialog'}
|
||||
:Installed Plugins.categoryWidget_QTreeWidget {name='categoryWidget' type='QTreeWidget' visible='1' window=':Installed Plugins_Core::Internal::PluginDialog'}
|
||||
:Installed Plugins_Core::Internal::PluginDialog {type='Core::Internal::PluginDialog' unnamed='1' visible='1' windowTitle='Installed Plugins'}
|
||||
:JavaScript.QmlProfilerV8ProfileTable_QmlProfiler::Internal::QmlProfilerEventsMainView {container=':*Qt Creator.JavaScript_QDockWidget' name='QmlProfilerV8ProfileTable' type='QmlProfiler::Internal::QmlProfilerEventsMainView' visible='1'}
|
||||
:Kits_Or_Compilers_QTreeView {container=':qt_tabwidget_stackedwidget_QWidget' type='QTreeView' unnamed='1' visible='1'}
|
||||
:Kits_QtVersion_QComboBox {container=':qt_tabwidget_stackedwidget_QWidget' occurrence='4' type='QComboBox' unnamed='1' visible='1'}
|
||||
:New.frame_QFrame {name='frame' type='QFrame' visible='1' window=':New_Core::Internal::NewDialog'}
|
||||
|
||||
@@ -274,8 +274,8 @@ def invokeContextMenuItem(editorArea, command1, command2 = None):
|
||||
ctxtMenu = openContextMenuOnTextCursorPosition(editorArea)
|
||||
activateItem(waitForObjectItem(objectMap.realName(ctxtMenu), command1, 2000))
|
||||
if command2:
|
||||
activateItem(waitForObjectItem("{type='QMenu' visible='1' window=%s}"
|
||||
% objectMap.realName(ctxtMenu), command2, 2000))
|
||||
activateItem(waitForObjectItem("{title='%s' type='QMenu' visible='1' window=%s}"
|
||||
% (command1, objectMap.realName(ctxtMenu)), command2, 2000))
|
||||
|
||||
# this function invokes the "Find Usages" item from context menu
|
||||
# param editor an editor object
|
||||
|
||||
@@ -207,10 +207,8 @@ def createNewQtQuickApplication(workingDir, projectName = None, templateFile = N
|
||||
targets=QtQuickConstants.desktopTargetClasses(), qtQuickVersion=1,
|
||||
fromWelcome=False):
|
||||
if templateFile:
|
||||
if qtQuickVersion == 2:
|
||||
test.fatal('There is no wizard "Qt Quick 2 Application (from Existing QML File)"',
|
||||
'This is a script error. Using Qt Quick 1 instead.')
|
||||
available = __createProjectOrFileSelectType__(" Applications", "Qt Quick 1 Application (from Existing QML File)", fromWelcome)
|
||||
available = __createProjectOrFileSelectType__(" Applications", "Qt Quick %d Application (from Existing QML File)"
|
||||
% qtQuickVersion, fromWelcome)
|
||||
else:
|
||||
available = __createProjectOrFileSelectType__(" Applications", "Qt Quick %d Application (Built-in Types)"
|
||||
% qtQuickVersion, fromWelcome)
|
||||
|
||||
@@ -107,7 +107,7 @@ def __removeTestingDir__():
|
||||
|
||||
devicesXML = os.path.join(tmpSettingsDir, "QtProject", "qtcreator", "devices.xml")
|
||||
lastMTime = os.path.getmtime(devicesXML)
|
||||
testingDir = os.path.dirname(os.path.dirname(tmpSettingsDir))
|
||||
testingDir = os.path.dirname(tmpSettingsDir)
|
||||
waitForCleanShutdown()
|
||||
waitFor('os.path.getmtime(devicesXML) > lastMTime', 5000)
|
||||
waitFor('__removeIt__(testingDir)', 2000)
|
||||
@@ -191,26 +191,44 @@ def substituteUnchosenTargetABIs(settingsDir):
|
||||
os.remove(origToolchains)
|
||||
test.log("Substituted unchosen ABIs inside toolchains.xml...")
|
||||
|
||||
def copySettingsToTmpDir():
|
||||
global tmpSettingsDir
|
||||
global SettingsPath
|
||||
tmpSettingsDir = tempDir()
|
||||
tmpSettingsDir = os.path.abspath(tmpSettingsDir + "/settings")
|
||||
shutil.copytree(cwd, tmpSettingsDir)
|
||||
def copySettingsToTmpDir(destination=None, omitFiles=[]):
|
||||
global tmpSettingsDir, SettingsPath, origSettingsDir
|
||||
if destination:
|
||||
destination = os.path.abspath(destination)
|
||||
if not os.path.exists(destination):
|
||||
os.makedirs(destination)
|
||||
elif os.path.isfile(destination):
|
||||
test.warning("Provided destination for settings exists as file.",
|
||||
"Creating another folder for being able to execute tests.")
|
||||
destination = tempDir()
|
||||
else:
|
||||
destination = tempDir()
|
||||
tmpSettingsDir = destination
|
||||
pathLen = len(origSettingsDir) + 1
|
||||
for r,d,f in os.walk(origSettingsDir):
|
||||
currentPath = os.path.join(tmpSettingsDir, r[pathLen:])
|
||||
for dd in d:
|
||||
folder = os.path.join(currentPath, dd)
|
||||
if not os.path.exists(folder):
|
||||
os.makedirs(folder)
|
||||
for ff in f:
|
||||
if not ff in omitFiles:
|
||||
shutil.copy(os.path.join(r, ff), currentPath)
|
||||
if platform.system() in ('Linux', 'Darwin'):
|
||||
substituteTildeWithinToolchains(tmpSettingsDir)
|
||||
substituteUnchosenTargetABIs(tmpSettingsDir)
|
||||
SettingsPath = ' -settingspath "%s"' % tmpSettingsDir
|
||||
|
||||
# current dir is directory holding qtcreator.py
|
||||
origSettingsDir = os.path.abspath(os.path.join(os.getcwd(), "..", "..", "settings"))
|
||||
|
||||
if platform.system() in ('Windows', 'Microsoft'):
|
||||
sdkPath = "C:\\QtSDK"
|
||||
cwd = os.getcwd() # current dir is directory holding qtcreator.py
|
||||
cwd+="\\..\\..\\settings\\windows"
|
||||
origSettingsDir = os.path.join(origSettingsDir, "windows")
|
||||
defaultQtVersion = "Qt 4.7.4 for Desktop - MinGW 4.4 (Qt SDK)"
|
||||
else:
|
||||
sdkPath = os.path.expanduser("~/QtSDK")
|
||||
cwd = os.getcwd() # current dir is directory holding qtcreator.py
|
||||
cwd+="/../../settings/unix"
|
||||
origSettingsDir = os.path.join(origSettingsDir, "unix")
|
||||
defaultQtVersion = "Desktop Qt 4.7.4 for GCC (Qt SDK)"
|
||||
srcPath = os.getenv("SYSTEST_SRCPATH", sdkPath + "/src")
|
||||
|
||||
@@ -218,7 +236,6 @@ overrideStartApplication()
|
||||
|
||||
# the following only doesn't work if the test ends in an exception
|
||||
if os.getenv("SYSTEST_NOSETTINGSPATH") != "1":
|
||||
cwd = os.path.abspath(cwd)
|
||||
copySettingsToTmpDir()
|
||||
atexit.register(__removeTestingDir__)
|
||||
|
||||
|
||||
@@ -147,11 +147,24 @@ def waitForSignal(object, signal, timeout=30000):
|
||||
beforeCount = signalObjects[realName]
|
||||
waitFor("signalObjects[realName] > beforeCount", timeout)
|
||||
|
||||
handledSignal = {}
|
||||
|
||||
def prepareForSignal(object, signal):
|
||||
global signalObjects
|
||||
global handledSignal
|
||||
overrideInstallLazySignalHandler()
|
||||
realName = objectMap.realName(object)
|
||||
# test.log("waitForSignal: "+realName)
|
||||
if realName in handledSignal.keys():
|
||||
if handledSignal[realName] != signal:
|
||||
# The current implementation does not support this.
|
||||
# When an object has two different handled signals, waitForSignal() will only wait
|
||||
# for the first of them to be emitted.
|
||||
test.warning("You are trying to handle two different signals from the same object.",
|
||||
"Adding %s to object %s, which already has handled signal %s. "
|
||||
"This can lead to unexpected results." % (signal, realName, handledSignal[realName]))
|
||||
else:
|
||||
handledSignal[realName] = signal
|
||||
if not (realName in signalObjects):
|
||||
signalObjects[realName] = 0
|
||||
installLazySignalHandler(object, signal, "__callbackFunction__")
|
||||
@@ -229,10 +242,11 @@ def selectFromFileDialog(fileName, waitForFile=False):
|
||||
waitForObject("{name='QFileDialog' type='QFileDialog' visible='1'}")
|
||||
pathLine = waitForObject("{name='fileNameEdit' type='QLineEdit' visible='1'}")
|
||||
replaceEditorContent(pathLine, pName)
|
||||
clickButton(findObject("{text='Open' type='QPushButton'}"))
|
||||
clickButton(waitForObject("{text='Open' type='QPushButton'}"))
|
||||
waitFor("str(pathLine.text)==''")
|
||||
snooze(1)
|
||||
replaceEditorContent(pathLine, fName)
|
||||
clickButton(findObject("{text='Open' type='QPushButton'}"))
|
||||
clickButton(waitForObject("{text='Open' type='QPushButton'}"))
|
||||
if waitForFile:
|
||||
fileCombo = waitForObject(":Qt Creator_FilenameQComboBox")
|
||||
if not waitFor("str(fileCombo.currentText) in fileName", 5000):
|
||||
|
||||
@@ -3,13 +3,18 @@ source("../../shared/suites_qtta.py")
|
||||
|
||||
# test bookmark functionality
|
||||
def renameBookmarkFolder(view, item, newName):
|
||||
openItemContextMenu(view, item, 5, 5, 0)
|
||||
activateItem(waitForObjectItem("{type='QMenu' unnamed='1' visible='1' "
|
||||
"window=':Add Bookmark_BookmarkDialog'}", "Rename Folder"))
|
||||
invokeContextMenuItemOnBookmarkFolder(view, item, "Rename Folder")
|
||||
replaceEditorContent(waitForObject(":Add Bookmark.treeView_QExpandingLineEdit"), newName)
|
||||
type(waitForObject(":Add Bookmark.treeView_QExpandingLineEdit"), "<Return>")
|
||||
return
|
||||
|
||||
def invokeContextMenuItemOnBookmarkFolder(view, item, menuItem):
|
||||
aboveWidget = "{name='line' type='QFrame' visible='1' window=':Add Bookmark_BookmarkDialog'}"
|
||||
mouseClick(waitForObjectItem(view, item), 5, 5, 0, Qt.LeftButton)
|
||||
openItemContextMenu(view, item, 5, 5, 0)
|
||||
activateItem(waitForObject("{aboveWidget=%s type='QMenu' unnamed='1' visible='1' "
|
||||
"window=':Add Bookmark_BookmarkDialog'}" % aboveWidget), menuItem)
|
||||
|
||||
def getQModelIndexStr(textProperty, container):
|
||||
if (container.startswith(":")):
|
||||
container = "'%s'" % container
|
||||
@@ -84,11 +89,10 @@ def main():
|
||||
# delete previously created directory
|
||||
clickButton(waitForObject(":Qt Creator.Add Bookmark_QToolButton"))
|
||||
clickButton(waitForObject(":Add Bookmark.ExpandBookmarksList_QToolButton"))
|
||||
openItemContextMenu(waitForObject(":Add Bookmark.treeView_QTreeView"), "Sample.Folder 1", 5, 5, 0)
|
||||
activateItem(waitForObjectItem("{type='QMenu' unnamed='1' visible='1' "
|
||||
"window=':Add Bookmark_BookmarkDialog'}", "Delete Folder"))
|
||||
invokeContextMenuItemOnBookmarkFolder(":Add Bookmark.treeView_QTreeView", "Sample.Folder 1",
|
||||
"Delete Folder")
|
||||
clickButton(waitForObject("{container=':Add Bookmark.treeView_QTreeView' text='Yes' "
|
||||
"type='QPushButton' unnamed='1' visible='1'}"))#:treeView.Yes_QPushButton"))
|
||||
"type='QPushButton' unnamed='1' visible='1'}"))
|
||||
# close bookmarks
|
||||
clickButton(waitForObject(":Add Bookmark.OK_QPushButton"))
|
||||
# choose bookmarks from command combobox
|
||||
|
||||
@@ -7,6 +7,6 @@ HOOK_SUB_PROCESSES=false
|
||||
IMPLICITAUTSTART=0
|
||||
LANGUAGE=Python
|
||||
OBJECTMAP=../objects.map
|
||||
TEST_CASES=tst_build_new_project tst_cli_output_console tst_simple_debug
|
||||
TEST_CASES=tst_build_new_project tst_cli_output_console tst_simple_analyze tst_simple_debug
|
||||
VERSION=2
|
||||
WRAPPERS=Qt
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
source("../../shared/qtcreator.py")
|
||||
|
||||
workingDir = None
|
||||
|
||||
def main():
|
||||
global workingDir
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
targets = [QtQuickConstants.Targets.DESKTOP_474_GCC]
|
||||
if platform.system() in ('Windows', 'Microsoft'):
|
||||
targets.append(QtQuickConstants.Targets.DESKTOP_474_MSVC2008)
|
||||
# using a temporary directory won't mess up a potentially existing
|
||||
workingDir = tempDir()
|
||||
checkedTargets, projectName = createNewQtQuickApplication(workingDir)
|
||||
editor = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget")
|
||||
if placeCursorToLine(editor, "MouseArea.*", True):
|
||||
type(editor, '<Up>')
|
||||
type(editor, '<Return>')
|
||||
typeLines(editor, ['Timer {',
|
||||
'interval: 2000',
|
||||
'repeat: true',
|
||||
'running: true',
|
||||
'onTriggered: {',
|
||||
'var i;',
|
||||
'for (i = 1; i < 2500; ++i) {',
|
||||
'var j = i * i;',
|
||||
'console.log(j);'])
|
||||
invokeMenuItem("File", "Save All")
|
||||
availableConfigs = iterateBuildConfigs(len(checkedTargets), "Debug")
|
||||
if not availableConfigs:
|
||||
test.fatal("Haven't found a suitable Qt version (need Qt 4.7.4) - leaving without debugging.")
|
||||
for kit, config in availableConfigs:
|
||||
test.log("Selecting '%s' as build config" % config)
|
||||
selectBuildConfig(len(checkedTargets), kit, config)
|
||||
verifyBuildConfig(len(checkedTargets), kit, True, enableQmlDebug=True)
|
||||
# explicitly build before start debugging for adding the executable as allowed program to WinFW
|
||||
invokeMenuItem("Build", "Rebuild All")
|
||||
waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}",
|
||||
"buildQueueFinished(bool)")
|
||||
if not checkCompile():
|
||||
test.fatal("Compile had errors... Skipping current build config")
|
||||
continue
|
||||
allowAppThroughWinFW(workingDir, projectName, False)
|
||||
switchViewTo(ViewConstants.ANALYZE)
|
||||
selectFromCombo(":Analyzer Toolbar.AnalyzerManagerToolBox_QComboBox", "QML Profiler")
|
||||
clickButton(waitForObject(":Analyzer Toolbar.Start_QToolButton"))
|
||||
stopButton = waitForObject(":Qt Creator.Stop_QToolButton")
|
||||
elapsedLabel = waitForObject(":Analyzer Toolbar.Elapsed:_QLabel", 3000)
|
||||
waitFor('"Elapsed: 5" in str(elapsedLabel.text)', 20000)
|
||||
clickButton(stopButton)
|
||||
if safeClickTab("JavaScript"):
|
||||
model = waitForObject(":JavaScript.QmlProfilerV8ProfileTable_QmlProfiler::"
|
||||
"Internal::QmlProfilerEventsMainView").model()
|
||||
test.compare(model.rowCount(), 1) # Could change, see QTCREATORBUG-8994
|
||||
test.compare([str(model.index(0, column).data()) for column in range(6)],
|
||||
['<program>', '100.00 %', '0.000 \xc2\xb5s', '0.00 %', '0.000 \xc2\xb5s', 'Main Program'])
|
||||
if safeClickTab("Events"):
|
||||
model = waitForObject(":Events.QmlProfilerEventsTable_QmlProfiler::"
|
||||
"Internal::QmlProfilerEventsMainView").model()
|
||||
test.compare(model.rowCount(), 2) # Only two lines with Qt 4.7, more with Qt 4.8
|
||||
test.compare(dumpItems(model, column=0), ['<program>', 'main.qml:14'])
|
||||
test.compare(dumpItems(model, column=1), ['Binding', 'Signal'])
|
||||
test.compare(dumpItems(model, column=2), ['100.00 %', '100.00 %'])
|
||||
test.compare(dumpItems(model, column=4), ['1', '2'])
|
||||
test.compare(dumpItems(model, column=9), ['Main Program', 'triggered(): { var i; for (i = 1; i < 2500; ++i) '
|
||||
'{ var j = i * i; console.log(j); } }'])
|
||||
for i in [3, 5, 6, 7]:
|
||||
for item in dumpItems(model, column=i):
|
||||
test.verify(item.endswith(' ms'))
|
||||
test.verify(str(model.index(0, 8).data()).endswith(' ms'))
|
||||
test.xverify(str(model.index(1, 8).data()).endswith(' ms')) # QTCREATORBUG-8996
|
||||
deleteAppFromWinFW(workingDir, projectName, False)
|
||||
invokeMenuItem("File", "Exit")
|
||||
|
||||
def safeClickTab(tab):
|
||||
for bar in [":*Qt Creator.JavaScript_QTabBar",
|
||||
":*Qt Creator.Events_QTabBar"]:
|
||||
try:
|
||||
clickTab(waitForObject(bar, 1000), tab)
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
test.fail("Tab %s is not being shown." % tab)
|
||||
return False
|
||||
@@ -3,7 +3,7 @@ source("../../shared/qtcreator.py")
|
||||
import re
|
||||
|
||||
def main():
|
||||
global textChanged
|
||||
global tmpSettingsDir
|
||||
sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/text/textselection")
|
||||
qmlFile = os.path.join("qml", "textselection.qml")
|
||||
if not neededFilePresent(os.path.join(sourceExample, qmlFile)):
|
||||
@@ -15,7 +15,19 @@ def main():
|
||||
overrideInstallLazySignalHandler()
|
||||
installLazySignalHandler(":frame.templateDescription_QTextBrowser",
|
||||
"textChanged()","__handleTextChanged__")
|
||||
kits = getConfiguredKits()
|
||||
performTest(templateDir, qmlFile, True)
|
||||
enableMaddePlugin()
|
||||
invokeMenuItem("File", "Exit")
|
||||
waitForCleanShutdown()
|
||||
copySettingsToTmpDir(tmpSettingsDir, ['QtCreator.ini'])
|
||||
overrideStartApplication()
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
performTest(templateDir, qmlFile, False)
|
||||
invokeMenuItem("File", "Exit")
|
||||
|
||||
def performTest(templateDir, qmlFile, isMaddeDisabled):
|
||||
global textChanged
|
||||
kits = getConfiguredKits(isMaddeDisabled)
|
||||
test.log("Collecting potential project types...")
|
||||
availableProjectTypes = []
|
||||
invokeMenuItem("File", "New File or Project...")
|
||||
@@ -26,13 +38,15 @@ def main():
|
||||
comboBox = findObject("{name='comboBox' type='QComboBox' visible='1' "
|
||||
"window=':New_Core::Internal::NewDialog'}")
|
||||
targets = zip(*kits.values())[0]
|
||||
if (QtQuickConstants.getStringForTarget(QtQuickConstants.Targets.MAEMO5) not in targets
|
||||
and QtQuickConstants.getStringForTarget(QtQuickConstants.Targets.HARMATTAN) not in targets):
|
||||
test.compare(comboBox.currentText, "Desktop Templates")
|
||||
test.verify(not comboBox.enabled, "Verifying whether combobox is disabled.")
|
||||
else:
|
||||
maddeTargets = QtQuickConstants.getTargetsAsStrings([QtQuickConstants.Targets.MAEMO5,
|
||||
QtQuickConstants.Targets.HARMATTAN])
|
||||
maddeInTargets = len(set(targets) & set(maddeTargets)) > 0
|
||||
test.compare(comboBox.enabled, maddeInTargets, "Verifying whether combox is enabled.")
|
||||
test.compare(maddeInTargets, not isMaddeDisabled, "Verifying if kits are configured.")
|
||||
if maddeInTargets:
|
||||
test.compare(comboBox.currentText, "All Templates")
|
||||
test.verify(comboBox.enabled, "Verifying whether combobox is enabled.")
|
||||
else:
|
||||
test.compare(comboBox.currentText, "Desktop Templates")
|
||||
for category in [item.replace(".", "\\.") for item in dumpItems(catModel, projects)]:
|
||||
# skip non-configurable
|
||||
if "Import" in category:
|
||||
@@ -106,7 +120,17 @@ def main():
|
||||
test.fail("Found unexpected additional kit(s) %s on 'Kit Selection' page."
|
||||
% str(availableCheckboxes))
|
||||
clickButton(waitForObject("{text='Cancel' type='QPushButton' unnamed='1' visible='1'}"))
|
||||
invokeMenuItem("File", "Exit")
|
||||
|
||||
def enableMaddePlugin():
|
||||
invokeMenuItem("Help", "About Plugins...")
|
||||
pluginsTW = waitForObject(":Installed Plugins.categoryWidget_QTreeWidget")
|
||||
devSupport = ("{container=':Installed Plugins.categoryWidget_QTreeWidget' "
|
||||
"column='0' text='Device Support' type='QModelIndex'}")
|
||||
# children position + 1 because children will be counted beginning with 0
|
||||
maddePos = dumpItems(pluginsTW.model(), waitForObject(devSupport)).index('Madde') + 1
|
||||
mouseClick(waitForObject("{column='1' container=%s text='' type='QModelIndex' "
|
||||
"occurrence='%d'}" % (devSupport, maddePos)), 5, 5, 0, Qt.LeftButton)
|
||||
clickButton(":Installed Plugins.Close_QPushButton")
|
||||
|
||||
def __handleTextChanged__(object):
|
||||
global textChanged
|
||||
|
||||
@@ -20,10 +20,7 @@ def main():
|
||||
overrideStartApplication()
|
||||
startApplication("qtcreator" + SettingsPath)
|
||||
try:
|
||||
if languageName == "Chinese (China)" and platform.system() == 'Darwin':
|
||||
invokeMenuItem("文件(F)", "退出")
|
||||
else:
|
||||
invokeMenuItem(testData.field(lang, "File"), testData.field(lang, "Exit"))
|
||||
invokeMenuItem(testData.field(lang, "File"), testData.field(lang, "Exit"))
|
||||
test.passes("Creator was running in %s translation." % languageName)
|
||||
except:
|
||||
test.fail("Creator seems to be missing %s translation" % languageName)
|
||||
|
||||
Reference in New Issue
Block a user