diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.cpp b/src/plugins/genericprojectmanager/genericprojectmanager.cpp index 0ad966a7306d3e735fcba8d6f7b41d0e9243abf7..5f5737bf65e069ceb7354af657c0186590e12cf7 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.cpp +++ b/src/plugins/genericprojectmanager/genericprojectmanager.cpp @@ -32,8 +32,11 @@ #include "genericproject.h" #include <coreplugin/icore.h> +#include <coreplugin/messagemanager.h> #include <coreplugin/uniqueidmanager.h> +#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/session.h> #include <QtDebug> @@ -60,14 +63,21 @@ QString Manager::mimeType() const ProjectExplorer::Project *Manager::openProject(const QString &fileName) { - QFileInfo fileInfo(fileName); + if (!QFileInfo(fileName).isFile()) + return 0; - if (fileInfo.isFile()) { - GenericProject *project = new GenericProject(this, fileName); - return project; + ProjectExplorer::ProjectExplorerPlugin *projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance(); + foreach (ProjectExplorer::Project *pi, projectExplorer->session()->projects()) { + if (fileName == pi->file()->fileName()) { + Core::MessageManager *messageManager = Core::ICore::instance()->messageManager(); + messageManager->printToOutputPanePopup(tr("Failed opening project '%1': Project already open") + .arg(QDir::toNativeSeparators(fileName))); + return 0; + } } - return 0; + GenericProject *project = new GenericProject(this, fileName); + return project; } void Manager::registerProject(GenericProject *project) diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.h b/src/plugins/genericprojectmanager/genericprojectmanager.h index 6e213afc77d274835af10790da6f6eb683b24b64..1b99f008d1770c20a4d3d4f38f6a4b6e9da7e92b 100644 --- a/src/plugins/genericprojectmanager/genericprojectmanager.h +++ b/src/plugins/genericprojectmanager/genericprojectmanager.h @@ -37,7 +37,7 @@ namespace Internal { class GenericProject; -class Manager: public ProjectExplorer::IProjectManager +class Manager : public ProjectExplorer::IProjectManager { Q_OBJECT diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp index 1ec86aa4eac1a75915a6709a87b05e57f18142f7..d3342b30e918e5a697073a9ada693d74eec6dc3b 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp @@ -181,7 +181,7 @@ QString Qt4Manager::mimeType() const return QLatin1String(Qt4ProjectManager::Constants::PROFILE_MIMETYPE); } -ProjectExplorer::Project* Qt4Manager::openProject(const QString &fileName) +ProjectExplorer::Project *Qt4Manager::openProject(const QString &fileName) { Core::MessageManager *messageManager = Core::ICore::instance()->messageManager(); diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.h b/src/plugins/qt4projectmanager/qt4projectmanager.h index 199c4b98ee2b42a310c92f1f6194d26b51413f6d..2235a17f536d62aac98ebe28d5a0625360afbb23 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager.h +++ b/src/plugins/qt4projectmanager/qt4projectmanager.h @@ -79,7 +79,7 @@ public: int projectLanguage() const; virtual QString mimeType() const; - ProjectExplorer::Project* openProject(const QString &fileName); + ProjectExplorer::Project *openProject(const QString &fileName); // Context information used in the slot implementations ProjectExplorer::Node *contextNode() const;