forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/2.5'
This commit is contained in:
@@ -136,8 +136,8 @@ Project {
|
|||||||
Depends { name: "app_version_header" }
|
Depends { name: "app_version_header" }
|
||||||
Depends { name: "cpp" }
|
Depends { name: "cpp" }
|
||||||
Depends { name: "Qt"; submodules: ["gui", "network"] }
|
Depends { name: "Qt"; submodules: ["gui", "network"] }
|
||||||
Depends { name: "utils" }
|
Depends { name: "Utils" }
|
||||||
Depends { name: "extensionsystem" }
|
Depends { name: "ExtensionSystem" }
|
||||||
|
|
||||||
files: [
|
files: [
|
||||||
"src/app/main.cpp",
|
"src/app/main.cpp",
|
||||||
|
|||||||
6
src/libs/3rdparty/botan/botan.qbs
vendored
6
src/libs/3rdparty/botan/botan.qbs
vendored
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "botan"
|
name: "Botan"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
Depends { name: "cpp" }
|
Depends { name: "cpp" }
|
||||||
Depends { name: "qt"; submodules: 'core' }
|
Depends { name: "qt"; submodules: 'core' }
|
||||||
|
|||||||
10
src/libs/QtcLibrary.qbs
Normal file
10
src/libs/QtcLibrary.qbs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import qbs.base 1.0
|
||||||
|
|
||||||
|
DynamicLibrary {
|
||||||
|
destination: {
|
||||||
|
if (qbs.targetOS === "windows")
|
||||||
|
return "bin"
|
||||||
|
else
|
||||||
|
return "lib"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "aggregation"
|
name: "Aggregation"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "CPlusPlus"
|
name: "CPlusPlus"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "extensionsystem"
|
name: "ExtensionSystem"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
@@ -15,7 +15,7 @@ DynamicLibrary {
|
|||||||
|
|
||||||
Depends { name: "cpp" }
|
Depends { name: "cpp" }
|
||||||
Depends { name: "Qt"; submodules: ["core", "gui"] }
|
Depends { name: "Qt"; submodules: ["core", "gui"] }
|
||||||
Depends { name: "aggregation" }
|
Depends { name: "Aggregation" }
|
||||||
|
|
||||||
files: [
|
files: [
|
||||||
"plugindetailsview.ui",
|
"plugindetailsview.ui",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "GLSL"
|
name: "GLSL"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "LanguageUtils"
|
name: "LanguageUtils"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "QmlEditorWidgets"
|
name: "QmlEditorWidgets"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "QmlJS"
|
name: "QmlJS"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
@@ -15,8 +15,8 @@ DynamicLibrary {
|
|||||||
]
|
]
|
||||||
cpp.optimization: "fast"
|
cpp.optimization: "fast"
|
||||||
|
|
||||||
Depends { name: "utils" }
|
Depends { name: "Utils" }
|
||||||
Depends { name: "languageutils" }
|
Depends { name: "LanguageUtils" }
|
||||||
Depends { name: "cpp" }
|
Depends { name: "cpp" }
|
||||||
Depends { name: "Qt"; submodules: ['gui', 'script'] }
|
Depends { name: "Qt"; submodules: ['gui', 'script'] }
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "QmlJSDebugClient"
|
name: "QmlJSDebugClient"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "symbianutils"
|
name: "symbianutils"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
@@ -21,7 +21,7 @@ DynamicLibrary {
|
|||||||
|
|
||||||
Depends { name: "cpp" }
|
Depends { name: "cpp" }
|
||||||
Depends { name: "Qt"; submodules: ["network"]}
|
Depends { name: "Qt"; submodules: ["network"]}
|
||||||
Depends { name: "utils" }
|
Depends { name: "Utils" }
|
||||||
|
|
||||||
Group {
|
Group {
|
||||||
condition: qbs.targetOS == "linux" || qbs.targetOS == "mac"
|
condition: qbs.targetOS == "linux" || qbs.targetOS == "mac"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "utils"
|
name: "Utils"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
cpp.defines: ["QTCREATOR_UTILS_LIB"]
|
cpp.defines: ["QTCREATOR_UTILS_LIB"]
|
||||||
cpp.includePaths: [ ".", "..",
|
cpp.includePaths: [ ".", "..",
|
||||||
@@ -19,7 +19,7 @@ DynamicLibrary {
|
|||||||
|
|
||||||
Depends { name: "cpp" }
|
Depends { name: "cpp" }
|
||||||
Depends { name: "Qt"; submodules: ['gui', 'network', 'script'] }
|
Depends { name: "Qt"; submodules: ['gui', 'network', 'script'] }
|
||||||
Depends { name: "botan" }
|
Depends { name: "Botan" }
|
||||||
Depends { name: "app_version_header" }
|
Depends { name: "app_version_header" }
|
||||||
|
|
||||||
files: [
|
files: [
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import qbs.base 1.0
|
import qbs.base 1.0
|
||||||
|
import "../QtcLibrary.qbs" as QtcLibrary
|
||||||
|
|
||||||
DynamicLibrary {
|
QtcLibrary {
|
||||||
name: "zeroconf"
|
name: "zeroconf"
|
||||||
destination: "lib"
|
|
||||||
|
|
||||||
Depends { name: "cpp" }
|
Depends { name: "cpp" }
|
||||||
Depends { name: "Qt.network" }
|
Depends { name: "Qt.network" }
|
||||||
|
|||||||
@@ -4,6 +4,18 @@ import qbs.fileinfo 1.0 as FileInfo
|
|||||||
Product {
|
Product {
|
||||||
type: ["dynamiclibrary", "pluginSpec"]
|
type: ["dynamiclibrary", "pluginSpec"]
|
||||||
destination: "lib/qtcreator/plugins/Nokia"
|
destination: "lib/qtcreator/plugins/Nokia"
|
||||||
|
targetName: {
|
||||||
|
// see PluginSpecPrivate::loadLibrary()
|
||||||
|
if (qbs.debugInformation) {
|
||||||
|
switch (qbs.targetOS) {
|
||||||
|
case "windows":
|
||||||
|
return name + "d";
|
||||||
|
case "mac":
|
||||||
|
return name + "_debug";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
Depends { name: "pluginspec" }
|
Depends { name: "pluginspec" }
|
||||||
Depends { name: 'cpp' }
|
Depends { name: 'cpp' }
|
||||||
|
|||||||
@@ -434,7 +434,7 @@ QString BaseFileWizard::descriptionImage() const
|
|||||||
return d->m_parameters.descriptionImage();
|
return d->m_parameters.descriptionImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseFileWizard::runWizard(const QString &path, QWidget *parent, const QString &platform)
|
void BaseFileWizard::runWizard(const QString &path, QWidget *parent, const QString &platform, const QVariantMap &extraValues)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(!path.isEmpty(), return);
|
QTC_ASSERT(!path.isEmpty(), return);
|
||||||
|
|
||||||
@@ -500,7 +500,7 @@ void BaseFileWizard::runWizard(const QString &path, QWidget *parent, const QStri
|
|||||||
}
|
}
|
||||||
if (firstExtensionPageHit)
|
if (firstExtensionPageHit)
|
||||||
foreach (IFileWizardExtension *ex, extensions)
|
foreach (IFileWizardExtension *ex, extensions)
|
||||||
ex->firstExtensionPageShown(files);
|
ex->firstExtensionPageShown(files, extraValues);
|
||||||
if (accepted)
|
if (accepted)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ public:
|
|||||||
|
|
||||||
virtual QString descriptionImage() const;
|
virtual QString descriptionImage() const;
|
||||||
|
|
||||||
virtual void runWizard(const QString &path, QWidget *parent, const QString &platform);
|
virtual void runWizard(const QString &path, QWidget *parent, const QString &platform, const QVariantMap &extraValues);
|
||||||
virtual Core::FeatureSet requiredFeatures() const;
|
virtual Core::FeatureSet requiredFeatures() const;
|
||||||
virtual WizardFlags flags() const;
|
virtual WizardFlags flags() const;
|
||||||
|
|
||||||
|
|||||||
@@ -5,10 +5,9 @@ QtcPlugin {
|
|||||||
name: "Core"
|
name: "Core"
|
||||||
|
|
||||||
Depends { name: "qt"; submodules: ['core', 'gui', 'xml', 'network', 'script', 'sql', 'help'] }
|
Depends { name: "qt"; submodules: ['core', 'gui', 'xml', 'network', 'script', 'sql', 'help'] }
|
||||||
Depends { name: "utils" }
|
Depends { name: "Utils" }
|
||||||
Depends { name: "extensionsystem" }
|
Depends { name: "ExtensionSystem" }
|
||||||
Depends { name: "aggregation" }
|
Depends { name: "Aggregation" }
|
||||||
Depends { name: "pluginspec" }
|
|
||||||
|
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
".",
|
".",
|
||||||
@@ -240,9 +239,9 @@ QtcPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ProductModule {
|
ProductModule {
|
||||||
Depends { name: "aggregation" }
|
Depends { name: "Aggregation" }
|
||||||
Depends { name: "extensionsystem" }
|
Depends { name: "ExtensionSystem" }
|
||||||
Depends { name: "utils" }
|
Depends { name: "Utils" }
|
||||||
cpp.includePaths: [
|
cpp.includePaths: [
|
||||||
"../..",
|
"../..",
|
||||||
"../../libs",
|
"../../libs",
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
#include <coreplugin/featureprovider.h>
|
#include <coreplugin/featureprovider.h>
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QVariantMap>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QIcon;
|
class QIcon;
|
||||||
@@ -78,7 +79,7 @@ public:
|
|||||||
virtual FeatureSet requiredFeatures() const = 0;
|
virtual FeatureSet requiredFeatures() const = 0;
|
||||||
virtual WizardFlags flags() const = 0;
|
virtual WizardFlags flags() const = 0;
|
||||||
|
|
||||||
virtual void runWizard(const QString &path, QWidget *parent, const QString &platform) = 0;
|
virtual void runWizard(const QString &path, QWidget *parent, const QString &platform, const QVariantMap &variables) = 0;
|
||||||
|
|
||||||
bool isAvailable(const QString &platformName) const;
|
bool isAvailable(const QString &platformName) const;
|
||||||
QStringList supportedPlatforms() const;
|
QStringList supportedPlatforms() const;
|
||||||
|
|||||||
@@ -385,9 +385,10 @@ ICore::~ICore()
|
|||||||
|
|
||||||
void ICore::showNewItemDialog(const QString &title,
|
void ICore::showNewItemDialog(const QString &title,
|
||||||
const QList<IWizard *> &wizards,
|
const QList<IWizard *> &wizards,
|
||||||
const QString &defaultLocation)
|
const QString &defaultLocation,
|
||||||
|
const QVariantMap &extraVariables)
|
||||||
{
|
{
|
||||||
m_mainwindow->showNewItemDialog(title, wizards, defaultLocation);
|
m_mainwindow->showNewItemDialog(title, wizards, defaultLocation, extraVariables);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ICore::showOptionsDialog(const QString &group, const QString &page, QWidget *parent)
|
bool ICore::showOptionsDialog(const QString &group, const QString &page, QWidget *parent)
|
||||||
|
|||||||
@@ -81,7 +81,8 @@ public:
|
|||||||
|
|
||||||
static void showNewItemDialog(const QString &title,
|
static void showNewItemDialog(const QString &title,
|
||||||
const QList<IWizard *> &wizards,
|
const QList<IWizard *> &wizards,
|
||||||
const QString &defaultLocation = QString());
|
const QString &defaultLocation = QString(),
|
||||||
|
const QVariantMap &extraVariables = QVariantMap());
|
||||||
|
|
||||||
static bool showOptionsDialog(const QString &group = QString(),
|
static bool showOptionsDialog(const QString &group = QString(),
|
||||||
const QString &page = QString(),
|
const QString &page = QString(),
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include <QVariantMap>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QWizardPage;
|
class QWizardPage;
|
||||||
@@ -71,8 +72,9 @@ public:
|
|||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
/* Notification about the first extension page being shown. */
|
/* Notification about the first extension page being shown. */
|
||||||
virtual void firstExtensionPageShown(const QList<GeneratedFile> &files) {
|
virtual void firstExtensionPageShown(const QList<GeneratedFile> &files, const QVariantMap &extraValues) {
|
||||||
Q_UNUSED(files)
|
Q_UNUSED(files)
|
||||||
|
Q_UNUSED(extraValues)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -966,7 +966,8 @@ void MainWindow::setFocusToEditor()
|
|||||||
|
|
||||||
void MainWindow::showNewItemDialog(const QString &title,
|
void MainWindow::showNewItemDialog(const QString &title,
|
||||||
const QList<IWizard *> &wizards,
|
const QList<IWizard *> &wizards,
|
||||||
const QString &defaultLocation)
|
const QString &defaultLocation,
|
||||||
|
const QVariantMap &extraVariables)
|
||||||
{
|
{
|
||||||
// Scan for wizards matching the filter and pick one. Don't show
|
// Scan for wizards matching the filter and pick one. Don't show
|
||||||
// dialog if there is only one.
|
// dialog if there is only one.
|
||||||
@@ -1007,7 +1008,7 @@ void MainWindow::showNewItemDialog(const QString &title,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wizard->runWizard(path, this, selectedPlatform);
|
wizard->runWizard(path, this, selectedPlatform, extraVariables);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MainWindow::showOptionsDialog(const QString &category,
|
bool MainWindow::showOptionsDialog(const QString &category,
|
||||||
|
|||||||
@@ -141,7 +141,8 @@ public slots:
|
|||||||
|
|
||||||
void showNewItemDialog(const QString &title,
|
void showNewItemDialog(const QString &title,
|
||||||
const QList<IWizard *> &wizards,
|
const QList<IWizard *> &wizards,
|
||||||
const QString &defaultLocation = QString());
|
const QString &defaultLocation = QString(),
|
||||||
|
const QVariantMap &extraVariables = QVariantMap());
|
||||||
|
|
||||||
bool showOptionsDialog(const QString &category = QString(),
|
bool showOptionsDialog(const QString &category = QString(),
|
||||||
const QString &page = QString(),
|
const QString &page = QString(),
|
||||||
|
|||||||
@@ -805,7 +805,7 @@ void GdbEngine::interruptInferior()
|
|||||||
qDebug() << "INTERRUPT INFERIOR: " << state(); return);
|
qDebug() << "INTERRUPT INFERIOR: " << state(); return);
|
||||||
|
|
||||||
if (usesExecInterrupt()) {
|
if (usesExecInterrupt()) {
|
||||||
postCommand("-exec-interrupt");
|
postCommand("-exec-interrupt", Immediate);
|
||||||
} else {
|
} else {
|
||||||
showStatusMessage(tr("Stop requested..."), 5000);
|
showStatusMessage(tr("Stop requested..."), 5000);
|
||||||
showMessage(_("TRYING TO INTERRUPT INFERIOR"));
|
showMessage(_("TRYING TO INTERRUPT INFERIOR"));
|
||||||
|
|||||||
@@ -2577,10 +2577,12 @@ void ProjectExplorerPlugin::addNewFile()
|
|||||||
QTC_ASSERT(d->m_currentNode, return)
|
QTC_ASSERT(d->m_currentNode, return)
|
||||||
QString location = directoryFor(d->m_currentNode);
|
QString location = directoryFor(d->m_currentNode);
|
||||||
|
|
||||||
|
QVariantMap map;
|
||||||
|
map.insert(QLatin1String(Constants::PREFERED_PROJECT_NODE), d->m_currentNode->projectNode()->path());
|
||||||
Core::ICore::showNewItemDialog(tr("New File", "Title of dialog"),
|
Core::ICore::showNewItemDialog(tr("New File", "Title of dialog"),
|
||||||
Core::IWizard::wizardsOfKind(Core::IWizard::FileWizard)
|
Core::IWizard::wizardsOfKind(Core::IWizard::FileWizard)
|
||||||
+ Core::IWizard::wizardsOfKind(Core::IWizard::ClassWizard),
|
+ Core::IWizard::wizardsOfKind(Core::IWizard::ClassWizard),
|
||||||
location);
|
location, map);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectExplorerPlugin::addNewSubproject()
|
void ProjectExplorerPlugin::addNewSubproject()
|
||||||
@@ -2591,9 +2593,11 @@ void ProjectExplorerPlugin::addNewSubproject()
|
|||||||
if (d->m_currentNode->nodeType() == ProjectNodeType
|
if (d->m_currentNode->nodeType() == ProjectNodeType
|
||||||
&& d->m_currentNode->projectNode()->supportedActions(
|
&& d->m_currentNode->projectNode()->supportedActions(
|
||||||
d->m_currentNode->projectNode()).contains(ProjectNode::AddSubProject)) {
|
d->m_currentNode->projectNode()).contains(ProjectNode::AddSubProject)) {
|
||||||
|
QVariantMap map;
|
||||||
|
map.insert(QLatin1String(Constants::PREFERED_PROJECT_NODE), d->m_currentNode->projectNode()->path());
|
||||||
Core::ICore::showNewItemDialog(tr("New Subproject", "Title of dialog"),
|
Core::ICore::showNewItemDialog(tr("New Subproject", "Title of dialog"),
|
||||||
Core::IWizard::wizardsOfKind(Core::IWizard::ProjectWizard),
|
Core::IWizard::wizardsOfKind(Core::IWizard::ProjectWizard),
|
||||||
location);
|
location, map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -209,6 +209,9 @@ const char PROJECT_WIZARD_CATEGORY_DISPLAY[] = QT_TRANSLATE_NOOP("ProjectExplore
|
|||||||
const char IMPORT_WIZARD_CATEGORY[] = "T.Import";
|
const char IMPORT_WIZARD_CATEGORY[] = "T.Import";
|
||||||
const char IMPORT_WIZARD_CATEGORY_DISPLAY[] = QT_TRANSLATE_NOOP("ProjectExplorer", "Import Project");
|
const char IMPORT_WIZARD_CATEGORY_DISPLAY[] = QT_TRANSLATE_NOOP("ProjectExplorer", "Import Project");
|
||||||
|
|
||||||
|
// Wizard extra values
|
||||||
|
const char PREFERED_PROJECT_NODE[] = "ProjectExplorer.PreferedProjectNode";
|
||||||
|
|
||||||
// Build step lists ids:
|
// Build step lists ids:
|
||||||
const char BUILDSTEPS_CLEAN[] = "ProjectExplorer.BuildSteps.Clean";
|
const char BUILDSTEPS_CLEAN[] = "ProjectExplorer.BuildSteps.Clean";
|
||||||
const char BUILDSTEPS_BUILD[] = "ProjectExplorer.BuildSteps.Build";
|
const char BUILDSTEPS_BUILD[] = "ProjectExplorer.BuildSteps.Build";
|
||||||
|
|||||||
@@ -231,15 +231,23 @@ static QList<ProjectEntry> findDeployProject(const QList<ProjectEntry> &projects
|
|||||||
// the longest matching path (list containing"/project/subproject1" matching
|
// the longest matching path (list containing"/project/subproject1" matching
|
||||||
// common path "/project/subproject1/newuserpath").
|
// common path "/project/subproject1/newuserpath").
|
||||||
static int findMatchingProject(const QList<ProjectEntry> &projects,
|
static int findMatchingProject(const QList<ProjectEntry> &projects,
|
||||||
const QString &commonPath)
|
const QString &commonPath,
|
||||||
|
const QString &preferedProjectNode)
|
||||||
{
|
{
|
||||||
if (projects.isEmpty() || commonPath.isEmpty())
|
if (projects.isEmpty() || commonPath.isEmpty())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
const int count = projects.size();
|
||||||
|
if (!preferedProjectNode.isEmpty()) {
|
||||||
|
for (int p = 0; p < count; ++p) {
|
||||||
|
if (projects.at(p).node->path() == preferedProjectNode)
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int bestMatch = -1;
|
int bestMatch = -1;
|
||||||
int bestMatchLength = 0;
|
int bestMatchLength = 0;
|
||||||
bool bestMatchIsProFile = false;
|
bool bestMatchIsProFile = false;
|
||||||
const int count = projects.size();
|
|
||||||
for (int p = 0; p < count; p++) {
|
for (int p = 0; p < count; p++) {
|
||||||
// Direct match or better match? (note that the wizards' files are native).
|
// Direct match or better match? (note that the wizards' files are native).
|
||||||
const ProjectEntry &entry = projects.at(p);
|
const ProjectEntry &entry = projects.at(p);
|
||||||
@@ -268,7 +276,8 @@ static QString generatedProjectFilePath(const QList<Core::GeneratedFile> &files)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ProjectFileWizardExtension::firstExtensionPageShown(
|
void ProjectFileWizardExtension::firstExtensionPageShown(
|
||||||
const QList<Core::GeneratedFile> &files)
|
const QList<Core::GeneratedFile> &files,
|
||||||
|
const QVariantMap &extraValues)
|
||||||
{
|
{
|
||||||
initProjectChoices(generatedProjectFilePath(files));
|
initProjectChoices(generatedProjectFilePath(files));
|
||||||
|
|
||||||
@@ -302,7 +311,8 @@ void ProjectFileWizardExtension::firstExtensionPageShown(
|
|||||||
m_context->page->setAdditionalInfo(text);
|
m_context->page->setAdditionalInfo(text);
|
||||||
bestProjectIndex = -1;
|
bestProjectIndex = -1;
|
||||||
} else {
|
} else {
|
||||||
bestProjectIndex = findMatchingProject(m_context->projects, m_context->commonDirectory);
|
bestProjectIndex = findMatchingProject(m_context->projects, m_context->commonDirectory,
|
||||||
|
extraValues.value(QLatin1String(Constants::PREFERED_PROJECT_NODE)).toString());
|
||||||
m_context->page->setNoneLabel(tr("<None>"));
|
m_context->page->setNoneLabel(tr("<None>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public:
|
|||||||
void applyCodeStyle(Core::GeneratedFile *file) const;
|
void applyCodeStyle(Core::GeneratedFile *file) const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void firstExtensionPageShown(const QList<Core::GeneratedFile> &files);
|
void firstExtensionPageShown(const QList<Core::GeneratedFile> &files, const QVariantMap &extraValues);
|
||||||
void initializeVersionControlChoices();
|
void initializeVersionControlChoices();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -83,9 +83,15 @@ bool SubdirsProjectWizard::postGenerateFiles(const QWizard *w, const Core::Gener
|
|||||||
{
|
{
|
||||||
const SubdirsProjectWizardDialog *wizard = qobject_cast< const SubdirsProjectWizardDialog *>(w);
|
const SubdirsProjectWizardDialog *wizard = qobject_cast< const SubdirsProjectWizardDialog *>(w);
|
||||||
if (QtWizard::qt4ProjectPostGenerateFiles(wizard, files, errorMessage)) {
|
if (QtWizard::qt4ProjectPostGenerateFiles(wizard, files, errorMessage)) {
|
||||||
|
const QtProjectParameters params = wizard->parameters();
|
||||||
|
const QString projectPath = params.projectPath();
|
||||||
|
const QString profileName = Core::BaseFileWizard::buildFileName(projectPath, params.fileName, profileSuffix());
|
||||||
|
QVariantMap map;
|
||||||
|
map.insert(QLatin1String(ProjectExplorer::Constants::PREFERED_PROJECT_NODE), profileName);
|
||||||
Core::ICore::showNewItemDialog(tr("New Subproject", "Title of dialog"),
|
Core::ICore::showNewItemDialog(tr("New Subproject", "Title of dialog"),
|
||||||
Core::IWizard::wizardsOfKind(Core::IWizard::ProjectWizard),
|
Core::IWizard::wizardsOfKind(Core::IWizard::ProjectWizard),
|
||||||
wizard->parameters().projectPath());
|
wizard->parameters().projectPath(),
|
||||||
|
map);
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,8 +129,9 @@ void BaseCheckoutWizard::setId(const QString &id)
|
|||||||
d->id = id;
|
d->id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseCheckoutWizard::runWizard(const QString &path, QWidget *parent, const QString & /*platform*/)
|
void BaseCheckoutWizard::runWizard(const QString &path, QWidget *parent, const QString & /*platform*/, const QVariantMap &extraValues)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(extraValues)
|
||||||
// Create dialog and launch
|
// Create dialog and launch
|
||||||
d->parameterPages = createParameterPages(path);
|
d->parameterPages = createParameterPages(path);
|
||||||
Internal::CheckoutWizardDialog dialog(d->parameterPages, parent);
|
Internal::CheckoutWizardDialog dialog(d->parameterPages, parent);
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ public:
|
|||||||
|
|
||||||
virtual QString descriptionImage() const;
|
virtual QString descriptionImage() const;
|
||||||
|
|
||||||
virtual void runWizard(const QString &path, QWidget *parent, const QString &platform);
|
virtual void runWizard(const QString &path, QWidget *parent, const QString &platform, const QVariantMap &extraValues);
|
||||||
|
|
||||||
virtual Core::FeatureSet requiredFeatures() const;
|
virtual Core::FeatureSet requiredFeatures() const;
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,15 @@ def __handleProcessExited__(object, exitCode):
|
|||||||
processExited = True
|
processExited = True
|
||||||
|
|
||||||
def openQmakeProject(projectPath, targets=QtQuickConstants.Targets.DESKTOP):
|
def openQmakeProject(projectPath, targets=QtQuickConstants.Targets.DESKTOP):
|
||||||
|
cleanUpUserFiles(projectPath)
|
||||||
invokeMenuItem("File", "Open File or Project...")
|
invokeMenuItem("File", "Open File or Project...")
|
||||||
selectFromFileDialog(projectPath)
|
selectFromFileDialog(projectPath)
|
||||||
|
try:
|
||||||
|
# handle update generated files dialog
|
||||||
|
waitForObject("{type='QMessageBox' unnamed='1' visible='1' windowTitle='Update of Generated Files'}", 3000)
|
||||||
|
clickButton(waitForObject("{text='Yes' type='QPushButton' unnamed='1' visible='1'}"))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
selectFromCombo(waitForObject(":Qt Creator.Create Build Configurations:_QComboBox", 180000),
|
selectFromCombo(waitForObject(":Qt Creator.Create Build Configurations:_QComboBox", 180000),
|
||||||
"For Each Qt Version One Debug And One Release")
|
"For Each Qt Version One Debug And One Release")
|
||||||
__chooseTargets__(targets)
|
__chooseTargets__(targets)
|
||||||
|
|||||||
@@ -34,3 +34,9 @@ def checkSyntaxError(issuesView, expectedTextsArray, warnIfMoreIssues = True):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# copy example project (sourceExample is path to project) to <temp>/template dir
|
||||||
|
def prepareTemplate(sourceExample):
|
||||||
|
templateDir = os.path.abspath(tempDir() + "/template")
|
||||||
|
shutil.copytree(sourceExample, templateDir)
|
||||||
|
return templateDir
|
||||||
|
|
||||||
|
|||||||
1
tests/system/suite_CCOM/envvars
Normal file
1
tests/system/suite_CCOM/envvars
Normal file
@@ -0,0 +1 @@
|
|||||||
|
QT_PLATFORM_PLUGIN=nonesuch
|
||||||
13
tests/system/suite_CCOM/objects.map
Normal file
13
tests/system/suite_CCOM/objects.map
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
:Compile Output - Qt Creator_Core::Internal::OutputPaneToggleButton {occurrence='4' type='Core::Internal::OutputPaneToggleButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||||
|
:Issues - Qt Creator_Core::Internal::OutputPaneToggleButton {occurrence='1' type='Core::Internal::OutputPaneToggleButton' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||||
|
:Qt Creator.Compile Output_Core::OutputWindow {type='Core::OutputWindow' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='Compile Output'}
|
||||||
|
:Qt Creator.Create Build Configurations:_QComboBox {leftWidget=':Qt Creator.Create Build Configurations:_QLabel' type='QComboBox' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||||
|
:Qt Creator.Create Build Configurations:_QLabel {text='Create build configurations:' type='QLabel' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||||
|
:Qt Creator.Issues_QListView {type='QListView' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow' windowTitle='Issues'}
|
||||||
|
:Qt Creator.QtCreator.MenuBar_QMenuBar {name='QtCreator.MenuBar' type='QMenuBar' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||||
|
:Qt Creator.scrollArea_QScrollArea {name='scrollArea' type='QScrollArea' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||||
|
:Qt Creator_Core::Internal::MainWindow {type='Core::Internal::MainWindow' unnamed='1' visible='1' windowTitle?='*Qt Creator'}
|
||||||
|
:Qt Creator_QmlJSEditor::QmlJSTextEditorWidget {type='QmlJSEditor::QmlJSTextEditorWidget' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||||
|
:Qt Creator_Utils::NavigationTreeView {type='Utils::NavigationTreeView' unnamed='1' visible='1' window=':Qt Creator_Core::Internal::MainWindow'}
|
||||||
|
:scrollArea.Edit build configuration:_QComboBox {container=':Qt Creator.scrollArea_QScrollArea' leftWidget=':scrollArea.Edit build configuration:_QLabel' type='QComboBox' unnamed='1' visible='1'}
|
||||||
|
:scrollArea.Edit build configuration:_QLabel {container=':Qt Creator.scrollArea_QScrollArea' text='Edit build configuration:' type='QLabel' unnamed='1' visible='1'}
|
||||||
10
tests/system/suite_CCOM/suite.conf
Executable file
10
tests/system/suite_CCOM/suite.conf
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
AUT=qtcreator
|
||||||
|
CLASS=
|
||||||
|
CLASSPATH=
|
||||||
|
ENVVARS=envvars
|
||||||
|
HOOK_SUB_PROCESSES=false
|
||||||
|
IMPLICITAUTSTART=0
|
||||||
|
LANGUAGE=Python
|
||||||
|
TEST_CASES=tst_CCOM01 tst_CCOM02
|
||||||
|
VERSION=2
|
||||||
|
WRAPPERS=Qt
|
||||||
32
tests/system/suite_CCOM/tst_CCOM01/test.py
Executable file
32
tests/system/suite_CCOM/tst_CCOM01/test.py
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
source("../../shared/suites_qtta.py")
|
||||||
|
source("../../shared/qtcreator.py")
|
||||||
|
|
||||||
|
# entry of test
|
||||||
|
def main():
|
||||||
|
# prepare example project
|
||||||
|
sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/animation/basics/property-animation")
|
||||||
|
if not neededFilePresent(sourceExample):
|
||||||
|
return
|
||||||
|
# copy example project to temp directory
|
||||||
|
templateDir = prepareTemplate(sourceExample)
|
||||||
|
examplePath = templateDir + "/propertyanimation.pro"
|
||||||
|
startApplication("qtcreator" + SettingsPath)
|
||||||
|
# open example project
|
||||||
|
openQmakeProject(examplePath)
|
||||||
|
# build and wait until finished - on all (except Qt 4.7.0 (would fail)) build configurations
|
||||||
|
for config in iterateBuildConfigs(1, 0, "(?!.*4\.7\.0.*)"):
|
||||||
|
selectBuildConfig(1, 0, config)
|
||||||
|
# try to build project
|
||||||
|
test.log("Testing build configuration: " + config)
|
||||||
|
invokeMenuItem("Build", "Build All")
|
||||||
|
waitForSignal("{type='ProjectExplorer::BuildManager' unnamed='1'}", "buildQueueFinished(bool)")
|
||||||
|
# verify build successful
|
||||||
|
ensureChecked(waitForObject(":Compile Output - Qt Creator_Core::Internal::OutputPaneToggleButton"))
|
||||||
|
compileOutput = waitForObject(":Qt Creator.Compile Output_Core::OutputWindow")
|
||||||
|
if not test.verify(str(compileOutput.plainText).endswith("exited normally."),
|
||||||
|
"Verifying building of existing complex qt application."):
|
||||||
|
test.log(compileOutput.plainText)
|
||||||
|
# exit
|
||||||
|
invokeMenuItem("File", "Exit")
|
||||||
|
# no cleanup needed, as whole testing directory gets properly removed after test finished
|
||||||
|
|
||||||
32
tests/system/suite_CCOM/tst_CCOM02/test.py
Executable file
32
tests/system/suite_CCOM/tst_CCOM02/test.py
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
source("../../shared/suites_qtta.py")
|
||||||
|
source("../../shared/qtcreator.py")
|
||||||
|
|
||||||
|
# entry of test
|
||||||
|
def main():
|
||||||
|
# prepare example project
|
||||||
|
sourceExample = os.path.abspath(sdkPath + "/Examples/4.7/declarative/animation/basics/property-animation")
|
||||||
|
if not neededFilePresent(sourceExample):
|
||||||
|
return
|
||||||
|
# copy example project to temp directory
|
||||||
|
templateDir = prepareTemplate(sourceExample)
|
||||||
|
examplePath = templateDir + "/propertyanimation.pro"
|
||||||
|
startApplication("qtcreator" + SettingsPath)
|
||||||
|
# open example project
|
||||||
|
openQmakeProject(examplePath)
|
||||||
|
# create syntax error
|
||||||
|
doubleClickItem(":Qt Creator_Utils::NavigationTreeView", "propertyanimation.QML.qml.property-animation\\.qml", 5, 5, 0, Qt.LeftButton)
|
||||||
|
if not appendToLine(waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget"), "Image {", "SyntaxError"):
|
||||||
|
invokeMenuItem("File", "Exit")
|
||||||
|
return
|
||||||
|
# save all to invoke qml parsing
|
||||||
|
invokeMenuItem("File", "Save All")
|
||||||
|
# open issues list view
|
||||||
|
ensureChecked(waitForObject(":Issues - Qt Creator_Core::Internal::OutputPaneToggleButton"))
|
||||||
|
issuesView = waitForObject(":Qt Creator.Issues_QListView")
|
||||||
|
# verify that error is properly reported
|
||||||
|
test.verify(checkSyntaxError(issuesView, ["Syntax error"], True),
|
||||||
|
"Verifying QML syntax error while parsing complex qt quick application.")
|
||||||
|
# exit qt creator
|
||||||
|
invokeMenuItem("File", "Exit")
|
||||||
|
# no cleanup needed, as whole testing directory gets properly removed after test finished
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ def main():
|
|||||||
selectBuildConfig(1, 0, config)
|
selectBuildConfig(1, 0, config)
|
||||||
test.log("Testing build configuration: " + config)
|
test.log("Testing build configuration: " + config)
|
||||||
runAndCloseApp()
|
runAndCloseApp()
|
||||||
sendEvent("QCloseEvent", waitForObject(":Qt Creator_Core::Internal::MainWindow"))
|
invokeMenuItem("File", "Exit")
|
||||||
waitForCleanShutdown()
|
waitForCleanShutdown()
|
||||||
|
|
||||||
def init():
|
def init():
|
||||||
|
|||||||
Reference in New Issue
Block a user