diff --git a/src/plugins/coreplugin/coreimpl.cpp b/src/plugins/coreplugin/coreimpl.cpp index a97bb0a2f72..49da171636e 100644 --- a/src/plugins/coreplugin/coreimpl.cpp +++ b/src/plugins/coreplugin/coreimpl.cpp @@ -233,3 +233,7 @@ void CoreImpl::openFiles(const QStringList &arguments) m_mainwindow->openFiles(arguments); } +void CoreImpl::emitNewItemsDialogRequested() +{ + emit newItemsDialogRequested(); +} diff --git a/src/plugins/coreplugin/coreimpl.h b/src/plugins/coreplugin/coreimpl.h index 506f8c00236..9bafcee42b7 100644 --- a/src/plugins/coreplugin/coreimpl.h +++ b/src/plugins/coreplugin/coreimpl.h @@ -90,6 +90,8 @@ public: void openFiles(const QStringList &fileNames); + void emitNewItemsDialogRequested(); + private: MainWindow *m_mainwindow; friend class MainWindow; diff --git a/src/plugins/coreplugin/dialogs/iwizard.cpp b/src/plugins/coreplugin/dialogs/iwizard.cpp index 128a67aa3eb..ae8c5aaf6b4 100644 --- a/src/plugins/coreplugin/dialogs/iwizard.cpp +++ b/src/plugins/coreplugin/dialogs/iwizard.cpp @@ -28,6 +28,7 @@ **************************************************************************/ #include "iwizard.h" +#include "coreimpl.h" #include @@ -139,6 +140,9 @@ using namespace Core; template QList findWizards(Predicate predicate) { + // Hack: Trigger delayed creation of wizards + if (Core::Internal::CoreImpl *ci = qobject_cast(ICore::instance())) + ci->emitNewItemsDialogRequested(); // Filter all wizards const QList allWizards = IWizard::allWizards(); QList rc; @@ -151,6 +155,9 @@ template QList IWizard::allWizards() { + // Hack: Trigger delayed creation of wizards + if (Core::Internal::CoreImpl *ci = qobject_cast(ICore::instance())) + ci->emitNewItemsDialogRequested(); return ExtensionSystem::PluginManager::instance()->getObjects(); } diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 9463c552d12..c7338cdb1b5 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -885,7 +885,6 @@ QStringList MainWindow::showNewItemDialog(const QString &title, const QList &wizards, const QString &defaultLocation) { - emit m_coreImpl->newItemsDialogRequested(); // Scan for wizards matching the filter and pick one. Don't show // dialog if there is only one. IWizard *wizard = 0; diff --git a/src/plugins/projectexplorer/customwizard/customwizard.cpp b/src/plugins/projectexplorer/customwizard/customwizard.cpp index 03d2aa5f74b..33345c6db07 100644 --- a/src/plugins/projectexplorer/customwizard/customwizard.cpp +++ b/src/plugins/projectexplorer/customwizard/customwizard.cpp @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -350,9 +351,17 @@ QList CustomWizard::createWizards() case Internal::CustomWizardParameters::ParseOk: parameters->directory = dir.absolutePath(); if (CustomWizardPrivate::verbose) - verboseLog += parameters->toString(); - if (CustomWizard *w = createWizard(parameters, baseFileParameters)) + QTextStream(&verboseLog) + << "\n### Adding: " << baseFileParameters.id() << " / " << baseFileParameters.displayName() << '\n' + << baseFileParameters.category() << " / " <toString(); + if (CustomWizard *w = createWizard(parameters, baseFileParameters)) { rc.push_back(w); + } else { + qWarning("Custom wizard factory function failed for %s", qPrintable(baseFileParameters.id())); + } + break; case Internal::CustomWizardParameters::ParseDisabled: if (CustomWizardPrivate::verbose) qWarning("Ignoring disabled wizard %s...", qPrintable(dir.absolutePath())); @@ -360,6 +369,7 @@ QList CustomWizard::createWizards() case Internal::CustomWizardParameters::ParseFailed: qWarning("Failed to initialize custom project wizard in %s: %s", qPrintable(dir.absolutePath()), qPrintable(errorMessage)); + break; } } else { if (CustomWizardPrivate::verbose)