New File Dialog: Choose right default project for adding

So far we used a heuristic that prefers .pro files in the same directory
as the new files. That fails if there are multiple .pro files in the
same directory. So instead introduce a mechanism to pass extra data
through the wizard.

Task-number: QTCREATORBUG-7157
Change-Id: I615f7292e16a0a6cb1e84f090016879f1038409f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
This commit is contained in:
Daniel Teske
2012-04-02 14:55:56 +02:00
parent 8d5d1f2f66
commit 6334684824
15 changed files with 52 additions and 21 deletions

View File

@@ -434,7 +434,7 @@ QString BaseFileWizard::descriptionImage() const
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);
@@ -493,7 +493,7 @@ void BaseFileWizard::runWizard(const QString &path, QWidget *parent, const QStri
}
if (firstExtensionPageHit)
foreach (IFileWizardExtension *ex, extensions)
ex->firstExtensionPageShown(files);
ex->firstExtensionPageShown(files, extraValues);
if (accepted)
break;
}

View File

@@ -158,7 +158,7 @@ public:
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 WizardFlags flags() const;

View File

@@ -37,6 +37,7 @@
#include <coreplugin/featureprovider.h>
#include <QObject>
#include <QVariantMap>
QT_BEGIN_NAMESPACE
class QIcon;
@@ -77,7 +78,7 @@ public:
virtual FeatureSet requiredFeatures() 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;
QStringList supportedPlatforms() const;

View File

@@ -385,9 +385,10 @@ ICore::~ICore()
void ICore::showNewItemDialog(const QString &title,
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)

View File

@@ -81,7 +81,8 @@ public:
static void showNewItemDialog(const QString &title,
const QList<IWizard *> &wizards,
const QString &defaultLocation = QString());
const QString &defaultLocation = QString(),
const QVariantMap &extraVariables = QVariantMap());
static bool showOptionsDialog(const QString &group = QString(),
const QString &page = QString(),

View File

@@ -37,6 +37,7 @@
#include <QObject>
#include <QList>
#include <QVariantMap>
QT_BEGIN_NAMESPACE
class QWizardPage;
@@ -71,8 +72,9 @@ public:
public slots:
/* 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(extraValues)
}
};

View File

@@ -937,7 +937,8 @@ void MainWindow::setFocusToEditor()
void MainWindow::showNewItemDialog(const QString &title,
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
// dialog if there is only one.
@@ -978,7 +979,7 @@ void MainWindow::showNewItemDialog(const QString &title,
break;
}
}
wizard->runWizard(path, this, selectedPlatform);
wizard->runWizard(path, this, selectedPlatform, extraVariables);
}
bool MainWindow::showOptionsDialog(const QString &category,

View File

@@ -137,7 +137,8 @@ public slots:
void showNewItemDialog(const QString &title,
const QList<IWizard *> &wizards,
const QString &defaultLocation = QString());
const QString &defaultLocation = QString(),
const QVariantMap &extraVariables = QVariantMap());
bool showOptionsDialog(const QString &category = QString(),
const QString &page = QString(),