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);
}
if (firstExtensionPageHit)
foreach (IFileWizardExtension *ex, extensions)
- ex->firstExtensionPageShown(files);
+ ex->firstExtensionPageShown(files, extraValues);
if (accepted)
break;
}
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;
#include <coreplugin/featureprovider.h>
#include <QObject>
+#include <QVariantMap>
QT_BEGIN_NAMESPACE
class QIcon;
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;
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)
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(),
#include <QObject>
#include <QList>
+#include <QVariantMap>
QT_BEGIN_NAMESPACE
class QWizardPage;
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)
}
};
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.
break;
}
}
- wizard->runWizard(path, this, selectedPlatform);
+ wizard->runWizard(path, this, selectedPlatform, extraVariables);
}
bool MainWindow::showOptionsDialog(const QString &category,
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(),
QTC_ASSERT(d->m_currentNode, return)
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::IWizard::wizardsOfKind(Core::IWizard::FileWizard)
+ Core::IWizard::wizardsOfKind(Core::IWizard::ClassWizard),
- location);
+ location, map);
}
void ProjectExplorerPlugin::addNewSubproject()
if (d->m_currentNode->nodeType() == ProjectNodeType
&& d->m_currentNode->projectNode()->supportedActions(
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::IWizard::wizardsOfKind(Core::IWizard::ProjectWizard),
- location);
+ location, map);
}
}
const char IMPORT_WIZARD_CATEGORY[] = "T.Import";
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:
const char BUILDSTEPS_CLEAN[] = "ProjectExplorer.BuildSteps.Clean";
const char BUILDSTEPS_BUILD[] = "ProjectExplorer.BuildSteps.Build";
// the longest matching path (list containing"/project/subproject1" matching
// common path "/project/subproject1/newuserpath").
static int findMatchingProject(const QList<ProjectEntry> &projects,
- const QString &commonPath)
+ const QString &commonPath,
+ const QString &preferedProjectNode)
{
if (projects.isEmpty() || commonPath.isEmpty())
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 bestMatchLength = 0;
bool bestMatchIsProFile = false;
- const int count = projects.size();
for (int p = 0; p < count; p++) {
// Direct match or better match? (note that the wizards' files are native).
const ProjectEntry &entry = projects.at(p);
}
void ProjectFileWizardExtension::firstExtensionPageShown(
- const QList<Core::GeneratedFile> &files)
+ const QList<Core::GeneratedFile> &files,
+ const QVariantMap &extraValues)
{
initProjectChoices(generatedProjectFilePath(files));
m_context->page->setAdditionalInfo(text);
bestProjectIndex = -1;
} 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>"));
}
void applyCodeStyle(Core::GeneratedFile *file) const;
public slots:
- void firstExtensionPageShown(const QList<Core::GeneratedFile> &files);
+ void firstExtensionPageShown(const QList<Core::GeneratedFile> &files, const QVariantMap &extraValues);
void initializeVersionControlChoices();
private:
{
const SubdirsProjectWizardDialog *wizard = qobject_cast< const SubdirsProjectWizardDialog *>(w);
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::IWizard::wizardsOfKind(Core::IWizard::ProjectWizard),
- wizard->parameters().projectPath());
+ wizard->parameters().projectPath(),
+ map);
} else {
return false;
}
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
d->parameterPages = createParameterPages(path);
Internal::CheckoutWizardDialog dialog(d->parameterPages, parent);
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;