diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp index 273b1ffbe8c40d836d210634d54d0c47005f8d96..1ccb3c063cd07642d4aff4ba4467a4f9ab7f3490 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp @@ -41,6 +41,9 @@ #include <qt4projectmanager/qt4project.h> #include <qt4projectmanager/qt4projectmanager.h> #include <qt4projectmanager/qt4projectmanagerconstants.h> +#include <projectexplorer/projectexplorer.h> +#include <projectexplorer/customwizard/customwizard.h> +#include <coreplugin/editormanager/editormanager.h> #include <QtGui/QIcon> @@ -196,10 +199,27 @@ Core::GeneratedFiles AbstractMobileAppWizard::generateFiles(const QWizard *wizar return app()->generateFiles(errorMessage); } +// TODO remove this workaround: +// SessionManager::projectContainsFile() incorrectly returns false if the +// file name in the .pro file (and thus also in m_projectFileCache) +// contains relative path segments ("../"). +inline static QString fileInCurrentProject(const QString &file) +{ + const QStringList filesInProject = + ProjectExplorer::ProjectExplorerPlugin::instance()->currentProject()->files( + ProjectExplorer::Project::ExcludeGeneratedFiles); + foreach (const QString &uncleanFile, filesInProject) + if (QDir::cleanPath(uncleanFile) == file) + return uncleanFile; + return QString(); +} + bool AbstractMobileAppWizard::postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l, QString *errorMessage) { - Q_UNUSED(w); + Q_UNUSED(w) + Q_UNUSED(l) + Q_UNUSED(errorMessage) Qt4Manager * const manager = ExtensionSystem::PluginManager::instance()->getObject<Qt4Manager>(); Q_ASSERT(manager); @@ -207,7 +227,14 @@ bool AbstractMobileAppWizard::postGenerateFiles(const QWizard *w, bool success = wizardDialog()->m_targetsPage->setupProject(&project); if (success) { project.saveSettings(); - success = postGenerateFilesInternal(l, errorMessage); + success = ProjectExplorer::CustomProjectWizard::postGenerateOpen(l, errorMessage); + if (success) { + const QString fileToOpen = fileInCurrentProject(fileToOpenPostGeneration()); + if (!fileToOpen.isEmpty()) { + Core::EditorManager::instance()->openEditor(fileToOpen, QString(), Core::EditorManager::ModeSwitch); + ProjectExplorer::ProjectExplorerPlugin::instance()->setCurrentFile(0, fileToOpen); + } + } } return success; } diff --git a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h index eb1bafaae025d501dc0e2be3419ce54391a457bb..b0fd8b4a85759225a87ad207ec6c6fc15ebae935 100644 --- a/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h +++ b/src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.h @@ -88,6 +88,9 @@ protected: private slots: void useProjectPath(const QString &projectName, const QString &projectPath); +protected: + virtual QString fileToOpenPostGeneration() const = 0; + private: virtual QWizard *createWizardDialog(QWidget *parent, const QString &defaultPath, const WizardPageList &extensionPages) const; @@ -102,8 +105,6 @@ private: virtual void projectPathChanged(const QString &path) const=0; virtual void prepareGenerateFiles(const QWizard *wizard, QString *errorMessage) const=0; - virtual bool postGenerateFilesInternal(const Core::GeneratedFiles &l, - QString *errorMessage)=0; }; } // namespace Internal diff --git a/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp b/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp index 7564a97abc852529c8a46e8a8e6fefd2ec688878..20390fc72a5926356c0454c90437aac0d3a5ded2 100644 --- a/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/html5appwizard.cpp @@ -40,11 +40,6 @@ #include "qt4projectmanagerconstants.h" -#include <projectexplorer/baseprojectwizarddialog.h> -#include <projectexplorer/customwizard/customwizard.h> -#include <projectexplorer/projectexplorer.h> -#include <coreplugin/editormanager/editormanager.h> - #include <QtCore/QCoreApplication> #include <QtGui/QIcon> @@ -134,16 +129,11 @@ void Html5AppWizard::prepareGenerateFiles(const QWizard *w, wizard->m_htmlSourcesPage->mainHtmlData()); } -bool Html5AppWizard::postGenerateFilesInternal(const Core::GeneratedFiles &l, - QString *errorMessage) +QString Html5AppWizard::fileToOpenPostGeneration() const { - const bool success = ProjectExplorer::CustomProjectWizard::postGenerateOpen(l, errorMessage); - const QString mainHtmlFile = m_d->app->path(Html5App::MainHtml); - if (success && !mainHtmlFile.isEmpty()) { - ProjectExplorer::ProjectExplorerPlugin::instance()->setCurrentFile(0, mainHtmlFile); - Core::EditorManager::instance()->openEditor(mainHtmlFile, QString(), Core::EditorManager::ModeSwitch); - } - return success; + return m_d->app->mainHtmlMode() == Html5App::ModeUrl ? + m_d->app->path(AbstractMobileApp::MainCpp) + : m_d->app->path(Html5App::MainHtml); } AbstractMobileApp *Html5AppWizard::app() const diff --git a/src/plugins/qt4projectmanager/wizards/html5appwizard.h b/src/plugins/qt4projectmanager/wizards/html5appwizard.h index 499b89ef46b60472a866afce60d63833ccaa8d26..9454faa9b86bef7f1ffa097ae969420a18dc67b6 100644 --- a/src/plugins/qt4projectmanager/wizards/html5appwizard.h +++ b/src/plugins/qt4projectmanager/wizards/html5appwizard.h @@ -47,6 +47,9 @@ public: Html5AppWizard(); virtual ~Html5AppWizard(); +protected: + QString fileToOpenPostGeneration() const; + private: static Core::BaseFileWizardParameters parameters(); @@ -56,8 +59,6 @@ private: virtual void projectPathChanged(const QString &path) const; virtual void prepareGenerateFiles(const QWizard *wizard, QString *errorMessage) const; - virtual bool postGenerateFilesInternal(const Core::GeneratedFiles &l, - QString *errorMessage); class Html5AppWizardPrivate *m_d; }; diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp index d8fbeea4ff456261dc4c6b1c1ec825493b0339ae..ac6407e1beda57330e0cb2ab317ae38afa40e492 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/mobileappwizard.cpp @@ -39,10 +39,6 @@ #include "qt4projectmanagerconstants.h" -#include <projectexplorer/customwizard/customwizard.h> -#include <projectexplorer/projectexplorer.h> -#include <coreplugin/editormanager/editormanager.h> - #include <QtCore/QCoreApplication> #include <QtGui/QIcon> @@ -123,10 +119,9 @@ void MobileAppWizard::prepareGenerateFiles(const QWizard *w, Q_UNUSED(errorMessage) } -bool MobileAppWizard::postGenerateFilesInternal(const Core::GeneratedFiles &l, - QString *errorMessage) +QString MobileAppWizard::fileToOpenPostGeneration() const { - return ProjectExplorer::CustomProjectWizard::postGenerateOpen(l, errorMessage); + return QString(); } AbstractMobileApp *MobileAppWizard::app() const diff --git a/src/plugins/qt4projectmanager/wizards/mobileappwizard.h b/src/plugins/qt4projectmanager/wizards/mobileappwizard.h index 0b3435debea04b31cf0fa9afb948820b98da8027..e2112f8470b2f4e82e8c119f98f1539fb4a195ee 100644 --- a/src/plugins/qt4projectmanager/wizards/mobileappwizard.h +++ b/src/plugins/qt4projectmanager/wizards/mobileappwizard.h @@ -47,6 +47,9 @@ public: MobileAppWizard(); virtual ~MobileAppWizard(); +protected: + QString fileToOpenPostGeneration() const; + private: static Core::BaseFileWizardParameters parameters(); @@ -56,8 +59,6 @@ private: virtual void projectPathChanged(const QString &path) const; virtual void prepareGenerateFiles(const QWizard *wizard, QString *errorMessage) const; - virtual bool postGenerateFilesInternal(const Core::GeneratedFiles &l, - QString *errorMessage); class MobileAppWizardPrivate *m_d; }; diff --git a/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp index 2c216bdaa8150f451b1e2170da70e6e7d746cf00..b3b5f31df48b26b85e60743711bfc9abae6eb0a6 100644 --- a/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp +++ b/src/plugins/qt4projectmanager/wizards/qtquickappwizard.cpp @@ -40,11 +40,6 @@ #include "qt4projectmanagerconstants.h" -#include <projectexplorer/baseprojectwizarddialog.h> -#include <projectexplorer/customwizard/customwizard.h> -#include <projectexplorer/projectexplorer.h> -#include <coreplugin/editormanager/editormanager.h> - #include <QtCore/QCoreApplication> #include <QtGui/QIcon> @@ -152,16 +147,9 @@ void QtQuickAppWizard::prepareGenerateFiles(const QWizard *w, } } -bool QtQuickAppWizard::postGenerateFilesInternal(const Core::GeneratedFiles &l, - QString *errorMessage) +QString QtQuickAppWizard::fileToOpenPostGeneration() const { - const bool success = ProjectExplorer::CustomProjectWizard::postGenerateOpen(l, errorMessage); - const QString mainQmlFile = m_d->app->path(QtQuickApp::MainQml); - if (success && !mainQmlFile.isEmpty()) { - ProjectExplorer::ProjectExplorerPlugin::instance()->setCurrentFile(0, mainQmlFile); - Core::EditorManager::instance()->openEditor(mainQmlFile, QString(), Core::EditorManager::ModeSwitch); - } - return success; + return m_d->app->path(QtQuickApp::MainQml); } AbstractMobileApp *QtQuickAppWizard::app() const diff --git a/src/plugins/qt4projectmanager/wizards/qtquickappwizard.h b/src/plugins/qt4projectmanager/wizards/qtquickappwizard.h index b1ad159e79b35ed34278422acb4b5565b031dd7a..7ad97e8c474f6ee9a989e9572a2d4f7a1a1fe47b 100644 --- a/src/plugins/qt4projectmanager/wizards/qtquickappwizard.h +++ b/src/plugins/qt4projectmanager/wizards/qtquickappwizard.h @@ -47,6 +47,9 @@ public: QtQuickAppWizard(); virtual ~QtQuickAppWizard(); +protected: + QString fileToOpenPostGeneration() const; + private: static Core::BaseFileWizardParameters parameters(); @@ -56,8 +59,6 @@ private: virtual void projectPathChanged(const QString &path) const; virtual void prepareGenerateFiles(const QWizard *wizard, QString *errorMessage) const; - virtual bool postGenerateFilesInternal(const Core::GeneratedFiles &l, - QString *errorMessage); class QtQuickAppWizardPrivate *m_d; };