summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-03-03 18:16:34 +0100
committerhjk <hjk@qt.io>2017-03-09 10:41:33 +0000
commitc1bfc5d8ec99e7874208ad2f4dc312b73f1817cd (patch)
tree140e487fb3758bd9edf96ff91f597b3729f380bb /src
parent57144e28da79bc8e9df00b0c7dfc5d054d066877 (diff)
downloadqt-creator-c1bfc5d8ec99e7874208ad2f4dc312b73f1817cd.tar.gz
ProjectExplorer: Follow up on too-much-magic in IProjectManager
Use a ProjectManager::registerProjectType<Project>(MimeType) function, removing cryptic IProjectManager object ownership. Change-Id: I212cd25bd4ee757022a8cb0decb4b8de3a112d12 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsmanager.cpp48
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsmanager.h52
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsproject.cpp3
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsproject.h2
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsprojectfile.cpp4
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsprojectfile.h2
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.pro2
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.qbs2
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsprojectplugin.cpp9
-rw-r--r--src/plugins/clearcase/clearcaseplugin.cpp2
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp10
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectmanager.h8
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp4
-rw-r--r--src/plugins/genericprojectmanager/genericproject.cpp13
-rw-r--r--src/plugins/genericprojectmanager/genericproject.h5
-rw-r--r--src/plugins/genericprojectmanager/genericprojectfileseditor.cpp1
-rw-r--r--src/plugins/genericprojectmanager/genericprojectmanager.cpp44
-rw-r--r--src/plugins/genericprojectmanager/genericprojectmanager.h43
-rw-r--r--src/plugins/genericprojectmanager/genericprojectmanager.pro2
-rw-r--r--src/plugins/genericprojectmanager/genericprojectmanager.qbs2
-rw-r--r--src/plugins/genericprojectmanager/genericprojectplugin.cpp5
-rw-r--r--src/plugins/nim/nim.pro2
-rw-r--r--src/plugins/nim/nim.qbs1
-rw-r--r--src/plugins/nim/nimplugin.cpp6
-rw-r--r--src/plugins/nim/project/nimproject.cpp7
-rw-r--r--src/plugins/nim/project/nimproject.h2
-rw-r--r--src/plugins/nim/project/nimprojectmanager.cpp45
-rw-r--r--src/plugins/nim/project/nimprojectmanager.h42
-rw-r--r--src/plugins/projectexplorer/jsonwizard/jsonkitspage.cpp9
-rw-r--r--src/plugins/projectexplorer/jsonwizard/jsonwizardscannergenerator.cpp4
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp54
-rw-r--r--src/plugins/projectexplorer/projectexplorer.pro2
-rw-r--r--src/plugins/projectexplorer/projectexplorer.qbs2
-rw-r--r--src/plugins/projectexplorer/projectmanager.h (renamed from src/plugins/projectexplorer/iprojectmanager.h)32
-rw-r--r--src/plugins/pythoneditor/pythoneditorplugin.cpp23
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp6
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.h2
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectfile.cpp6
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectfile.h2
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanager.cpp10
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanager.h7
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp8
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp10
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.h2
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp10
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeprojectmanager.h5
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp14
-rw-r--r--src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp2
-rw-r--r--src/plugins/qmlprojectmanager/qmlproject.cpp9
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectmanager.cpp44
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectmanager.h43
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectmanager.pro2
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectmanager.qbs1
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectplugin.cpp9
54 files changed, 153 insertions, 533 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsmanager.cpp b/src/plugins/autotoolsprojectmanager/autotoolsmanager.cpp
deleted file mode 100644
index 6e19e8516a..0000000000
--- a/src/plugins/autotoolsprojectmanager/autotoolsmanager.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Openismus GmbH.
-** Author: Peter Penz (ppenz@openismus.com)
-** Author: Patricia Santana Cruz (patriciasantanacruz@gmail.com)
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "autotoolsmanager.h"
-#include "autotoolsproject.h"
-#include "autotoolsprojectconstants.h"
-
-using namespace ProjectExplorer;
-
-namespace AutotoolsProjectManager {
-namespace Internal {
-
-Project *AutotoolsManager::openProject(const QString &fileName)
-{
- return new AutotoolsProject(fileName);
-}
-
-QString AutotoolsManager::mimeType() const
-{
- return QLatin1String(Constants::MAKEFILE_MIMETYPE);
-}
-
-} // namespace Internal
-} // namespace AutotoolsProjectManager
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsmanager.h b/src/plugins/autotoolsprojectmanager/autotoolsmanager.h
deleted file mode 100644
index 500a2599dd..0000000000
--- a/src/plugins/autotoolsprojectmanager/autotoolsmanager.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 Openismus GmbH.
-** Author: Peter Penz (ppenz@openismus.com)
-** Author: Patricia Santana Cruz (patriciasantanacruz@gmail.com)
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <projectexplorer/iprojectmanager.h>
-
-namespace AutotoolsProjectManager {
-namespace Internal {
-
-/**
- * @brief Implementation of ProjectExplorer::IProjectManager interface.
- *
- * An autotools project is identified by the MIME type text/x-makefile.
- * The project is represented by an instance of ProjectExplorer::Project,
- * which gets created by AutotoolsManager::openProject().
- */
-class AutotoolsManager : public ProjectExplorer::IProjectManager
-{
- Q_OBJECT
-
-public:
- ProjectExplorer::Project *openProject(const QString &fileName) override;
- QString mimeType() const override;
-};
-
-} // namespace Internal
-} // namespace AutotoolsProjectManager
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
index 1b986bd7ed..1733d5ec5d 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
@@ -28,7 +28,6 @@
#include "autotoolsproject.h"
#include "autotoolsbuildconfiguration.h"
#include "autotoolsprojectconstants.h"
-#include "autotoolsmanager.h"
#include "autotoolsprojectnode.h"
#include "autotoolsprojectfile.h"
#include "autotoolsopenprojectwizard.h"
@@ -69,7 +68,7 @@ using namespace AutotoolsProjectManager;
using namespace AutotoolsProjectManager::Internal;
using namespace ProjectExplorer;
-AutotoolsProject::AutotoolsProject(const QString &fileName) :
+AutotoolsProject::AutotoolsProject(const Utils::FileName &fileName) :
m_fileWatcher(new Utils::FileSystemWatcher(this)),
m_cppCodeModelUpdater(new CppTools::CppProjectUpdater(this))
{
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.h b/src/plugins/autotoolsprojectmanager/autotoolsproject.h
index 501fb9f98e..8b2d5ab788 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsproject.h
+++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.h
@@ -54,7 +54,7 @@ class AutotoolsProject : public ProjectExplorer::Project
Q_OBJECT
public:
- AutotoolsProject(const QString &fileName);
+ explicit AutotoolsProject(const Utils::FileName &fileName);
~AutotoolsProject() override;
QString displayName() const override;
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.cpp b/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.cpp
index 096ed7301a..49a3d1e6ff 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.cpp
@@ -32,11 +32,11 @@
namespace AutotoolsProjectManager {
namespace Internal {
-AutotoolsProjectFile::AutotoolsProjectFile(const QString &fileName)
+AutotoolsProjectFile::AutotoolsProjectFile(const Utils::FileName &fileName)
{
setId("Autotools.ProjectFile");
setMimeType(QLatin1String(Constants::MAKEFILE_MIMETYPE));
- setFilePath(Utils::FileName::fromString(fileName));
+ setFilePath(fileName);
}
} // namespace Internal
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.h b/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.h
index 2e1d9b54e9..8c41e19bd5 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.h
+++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectfile.h
@@ -45,7 +45,7 @@ namespace Internal {
class AutotoolsProjectFile : public Core::IDocument
{
public:
- AutotoolsProjectFile(const QString &fileName);
+ AutotoolsProjectFile(const Utils::FileName &fileName);
};
} // namespace Internal
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.pro b/src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.pro
index 2c259f6c61..3e30bf328c 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.pro
+++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.pro
@@ -2,7 +2,6 @@ include(../../qtcreatorplugin.pri)
HEADERS = autotoolsprojectplugin.h\
autotoolsopenprojectwizard.h\
- autotoolsmanager.h\
autotoolsprojectfile.h\
autotoolsprojectnode.h\
autotoolsproject.h\
@@ -17,7 +16,6 @@ HEADERS = autotoolsprojectplugin.h\
makefileparser.h
SOURCES = autotoolsprojectplugin.cpp\
autotoolsopenprojectwizard.cpp\
- autotoolsmanager.cpp\
autotoolsprojectfile.cpp\
autotoolsprojectnode.cpp\
autotoolsproject.cpp\
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.qbs b/src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.qbs
index af646ffa2e..8c76c5d41f 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.qbs
+++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.qbs
@@ -20,8 +20,6 @@ QtcPlugin {
"autotoolsbuildconfiguration.h",
"autotoolsbuildsettingswidget.cpp",
"autotoolsbuildsettingswidget.h",
- "autotoolsmanager.cpp",
- "autotoolsmanager.h",
"autotoolsopenprojectwizard.cpp",
"autotoolsopenprojectwizard.h",
"autotoolsproject.cpp",
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectplugin.cpp b/src/plugins/autotoolsprojectmanager/autotoolsprojectplugin.cpp
index d5815515af..c323754a65 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsprojectplugin.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectplugin.cpp
@@ -26,13 +26,15 @@
****************************************************************************/
#include "autotoolsprojectplugin.h"
-#include "autotoolsmanager.h"
+#include "autotoolsproject.h"
+#include "autotoolsprojectconstants.h"
#include "autotoolsbuildconfiguration.h"
#include "makestep.h"
#include "autogenstep.h"
#include "autoreconfstep.h"
#include "configurestep.h"
-#include "autotoolsprojectconstants.h"
+
+#include <projectexplorer/projectmanager.h>
#include <QStringList>
#include <QtPlugin>
@@ -53,7 +55,8 @@ bool AutotoolsProjectPlugin::initialize(const QStringList &arguments,
addAutoReleasedObject(new AutogenStepFactory);
addAutoReleasedObject(new ConfigureStepFactory);
addAutoReleasedObject(new AutoreconfStepFactory);
- addAutoReleasedObject(new AutotoolsManager);
+
+ ProjectExplorer::ProjectManager::registerProjectType<AutotoolsProject>(Constants::MAKEFILE_MIMETYPE);
return true;
}
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index a8bc76c3a5..c5beb51b43 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -52,7 +52,7 @@
#include <texteditor/textdocument.h>
#include <projectexplorer/session.h>
#include <projectexplorer/project.h>
-#include <projectexplorer/iprojectmanager.h>
+#include <projectexplorer/projectmanager.h>
#include <utils/algorithm.h>
#include <utils/synchronousprocess.h>
#include <utils/temporarydirectory.h>
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
index 46aaeb3347..844a8a95bb 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
@@ -155,13 +155,3 @@ void CMakeManager::rescanProject(Project *project)
cmakeProject->scanProjectTree();
cmakeProject->runCMake(); // by my experience: every rescan run requires cmake run too
}
-
-Project *CMakeManager::openProject(const QString &fileName)
-{
- return new CMakeProject(Utils::FileName::fromString(fileName));
-}
-
-QString CMakeManager::mimeType() const
-{
- return QLatin1String(Constants::CMAKEPROJECTMIMETYPE);
-}
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
index e8e42059ae..c1d19514ea 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
@@ -25,7 +25,7 @@
#pragma once
-#include <projectexplorer/iprojectmanager.h>
+#include <projectexplorer/project.h>
QT_BEGIN_NAMESPACE
class QAction;
@@ -36,15 +36,13 @@ namespace Internal {
class CMakeSettingsPage;
-class CMakeManager : public ProjectExplorer::IProjectManager
+class CMakeManager : public QObject
{
Q_OBJECT
+
public:
CMakeManager();
- ProjectExplorer::Project *openProject(const QString &fileName) override;
- QString mimeType() const override;
-
private:
void updateCmakeActions();
void clearCMakeCache(ProjectExplorer::Project *project);
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp
index b91b1a944c..1e972f9421 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp
@@ -45,6 +45,7 @@
#include <coreplugin/fileiconprovider.h>
#include <projectexplorer/kitmanager.h>
+#include <projectexplorer/projectmanager.h>
#include <projectexplorer/projecttree.h>
#include <utils/parameteraction.h>
@@ -64,6 +65,9 @@ bool CMakeProjectPlugin::initialize(const QStringList & /*arguments*/, QString *
addAutoReleasedObject(new Internal::CMakeSnippetProvider);
addAutoReleasedObject(new CMakeSettingsPage);
addAutoReleasedObject(new CMakeManager);
+
+ ProjectManager::registerProjectType<CMakeProject>(Constants::CMAKEPROJECTMIMETYPE);
+
addAutoReleasedObject(new CMakeBuildStepFactory);
addAutoReleasedObject(new CMakeRunConfigurationFactory);
addAutoReleasedObject(new CMakeBuildConfigurationFactory);
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index 0fb396598b..6c394c5cb1 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -54,6 +54,7 @@
using namespace Core;
using namespace ProjectExplorer;
+using namespace Utils;
namespace GenericProjectManager {
namespace Internal {
@@ -64,7 +65,7 @@ namespace Internal {
//
////////////////////////////////////////////////////////////////////////////////////
-GenericProject::GenericProject(const QString &fileName)
+GenericProject::GenericProject(const Utils::FileName &fileName)
: m_cppCodeModelUpdater(new CppTools::CppProjectUpdater(this))
{
setId(Constants::GENERICPROJECT_ID);
@@ -81,9 +82,9 @@ GenericProject::GenericProject(const QString &fileName)
m_includesFileName = QFileInfo(dir, m_projectName + ".includes").absoluteFilePath();
m_configFileName = QFileInfo(dir, m_projectName + ".config").absoluteFilePath();
- m_filesIDocument = new GenericProjectFile(this, m_filesFileName, GenericProject::Files);
- m_includesIDocument = new GenericProjectFile(this, m_includesFileName, GenericProject::Configuration);
- m_configIDocument = new GenericProjectFile(this, m_configFileName, GenericProject::Configuration);
+ m_filesIDocument = new GenericProjectFile(this, FileName::fromString(m_filesFileName), GenericProject::Files);
+ m_includesIDocument = new GenericProjectFile(this, FileName::fromString(m_includesFileName), GenericProject::Configuration);
+ m_configIDocument = new GenericProjectFile(this, FileName::fromString(m_configFileName), GenericProject::Configuration);
DocumentManager::addDocument(document());
DocumentManager::addDocument(m_filesIDocument);
@@ -461,14 +462,14 @@ Project::RestoreResult GenericProject::fromMap(const QVariantMap &map, QString *
//
////////////////////////////////////////////////////////////////////////////////////
-GenericProjectFile::GenericProjectFile(GenericProject *parent, QString fileName,
+GenericProjectFile::GenericProjectFile(GenericProject *parent, const Utils::FileName &fileName,
GenericProject::RefreshOptions options) :
m_project(parent),
m_options(options)
{
setId("Generic.ProjectFile");
setMimeType(Constants::GENERICMIMETYPE);
- setFilePath(Utils::FileName::fromString(fileName));
+ setFilePath(fileName);
}
IDocument::ReloadBehavior GenericProjectFile::reloadBehavior(ChangeTrigger state, ChangeType type) const
diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h
index 7dac99847b..12e02de5b1 100644
--- a/src/plugins/genericprojectmanager/genericproject.h
+++ b/src/plugins/genericprojectmanager/genericproject.h
@@ -48,7 +48,7 @@ class GenericProject : public ProjectExplorer::Project
Q_OBJECT
public:
- explicit GenericProject(const QString &filename);
+ explicit GenericProject(const Utils::FileName &filename);
~GenericProject() override;
QString filesFileName() const;
@@ -112,7 +112,8 @@ private:
class GenericProjectFile : public Core::IDocument
{
public:
- GenericProjectFile(GenericProject *parent, QString fileName, GenericProject::RefreshOptions options);
+ GenericProjectFile(GenericProject *parent, const Utils::FileName &fileName,
+ GenericProject::RefreshOptions options);
ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override;
bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override;
diff --git a/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp b/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp
index 9372153793..6a61790fd8 100644
--- a/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp
+++ b/src/plugins/genericprojectmanager/genericprojectfileseditor.cpp
@@ -24,7 +24,6 @@
****************************************************************************/
#include "genericprojectfileseditor.h"
-#include "genericprojectmanager.h"
#include "genericprojectconstants.h"
#include <coreplugin/editormanager/editormanager.h>
diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.cpp b/src/plugins/genericprojectmanager/genericprojectmanager.cpp
deleted file mode 100644
index 2d3784d6d6..0000000000
--- a/src/plugins/genericprojectmanager/genericprojectmanager.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "genericprojectmanager.h"
-#include "genericprojectconstants.h"
-#include "genericproject.h"
-
-namespace GenericProjectManager {
-namespace Internal {
-
-QString Manager::mimeType() const
-{
- return QLatin1String(Constants::GENERICMIMETYPE);
-}
-
-ProjectExplorer::Project *Manager::openProject(const QString &fileName)
-{
- return new GenericProject(fileName);
-}
-
-} // namespace Internal
-} // namespace GenericProjectManager
diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.h b/src/plugins/genericprojectmanager/genericprojectmanager.h
deleted file mode 100644
index d86df741f4..0000000000
--- a/src/plugins/genericprojectmanager/genericprojectmanager.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <projectexplorer/iprojectmanager.h>
-
-namespace GenericProjectManager {
-namespace Internal {
-
-class Manager : public ProjectExplorer::IProjectManager
-{
- Q_OBJECT
-
-public:
- virtual QString mimeType() const override;
- virtual ProjectExplorer::Project *openProject(const QString &fileName) override;
-};
-
-} // namespace Internal
-} // namespace GenericProjectManager
diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.pro b/src/plugins/genericprojectmanager/genericprojectmanager.pro
index 1d325cef32..b4a8cf0631 100644
--- a/src/plugins/genericprojectmanager/genericprojectmanager.pro
+++ b/src/plugins/genericprojectmanager/genericprojectmanager.pro
@@ -2,7 +2,6 @@ include(../../qtcreatorplugin.pri)
HEADERS = genericproject.h \
genericprojectplugin.h \
- genericprojectmanager.h \
genericprojectconstants.h \
genericprojectnodes.h \
genericprojectwizard.h \
@@ -12,7 +11,6 @@ HEADERS = genericproject.h \
filesselectionwizardpage.h
SOURCES = genericproject.cpp \
genericprojectplugin.cpp \
- genericprojectmanager.cpp \
genericprojectnodes.cpp \
genericprojectwizard.cpp \
genericprojectfileseditor.cpp \
diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.qbs b/src/plugins/genericprojectmanager/genericprojectmanager.qbs
index 1027e04f89..74fc022ec2 100644
--- a/src/plugins/genericprojectmanager/genericprojectmanager.qbs
+++ b/src/plugins/genericprojectmanager/genericprojectmanager.qbs
@@ -30,8 +30,6 @@ QtcPlugin {
"genericprojectconstants.h",
"genericprojectfileseditor.cpp",
"genericprojectfileseditor.h",
- "genericprojectmanager.cpp",
- "genericprojectmanager.h",
"genericprojectnodes.cpp",
"genericprojectnodes.h",
"genericprojectplugin.cpp",
diff --git a/src/plugins/genericprojectmanager/genericprojectplugin.cpp b/src/plugins/genericprojectmanager/genericprojectplugin.cpp
index 3141ecf255..fb69394ff5 100644
--- a/src/plugins/genericprojectmanager/genericprojectplugin.cpp
+++ b/src/plugins/genericprojectmanager/genericprojectplugin.cpp
@@ -26,7 +26,6 @@
#include "genericprojectplugin.h"
#include "genericbuildconfiguration.h"
-#include "genericprojectmanager.h"
#include "genericprojectwizard.h"
#include "genericprojectconstants.h"
#include "genericprojectfileseditor.h"
@@ -39,6 +38,7 @@
#include <coreplugin/actionmanager/command.h>
#include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/projectmanager.h>
#include <projectexplorer/projecttree.h>
#include <projectexplorer/selectablefilesmodel.h>
@@ -59,7 +59,8 @@ bool GenericProjectPlugin::initialize(const QStringList &, QString *errorMessage
{
Q_UNUSED(errorMessage)
- addAutoReleasedObject(new Manager);
+ ProjectManager::registerProjectType<GenericProject>(Constants::GENERICMIMETYPE);
+
addAutoReleasedObject(new ProjectFilesFactory);
addAutoReleasedObject(new GenericMakeStepFactory);
addAutoReleasedObject(new GenericBuildConfigurationFactory);
diff --git a/src/plugins/nim/nim.pro b/src/plugins/nim/nim.pro
index 90a8303725..85e3881e92 100644
--- a/src/plugins/nim/nim.pro
+++ b/src/plugins/nim/nim.pro
@@ -16,7 +16,6 @@ HEADERS += \
tools/nimlexer.h \
tools/sourcecodestream.h \
project/nimproject.h \
- project/nimprojectmanager.h \
project/nimprojectnode.h \
project/nimbuildconfiguration.h \
project/nimbuildconfigurationfactory.h \
@@ -47,7 +46,6 @@ SOURCES += \
editor/nimindenter.cpp \
tools/nimlexer.cpp \
project/nimproject.cpp \
- project/nimprojectmanager.cpp \
project/nimprojectnode.cpp \
project/nimbuildconfiguration.cpp \
project/nimbuildconfigurationfactory.cpp \
diff --git a/src/plugins/nim/nim.qbs b/src/plugins/nim/nim.qbs
index d894d2a30a..94ec0a0de4 100644
--- a/src/plugins/nim/nim.qbs
+++ b/src/plugins/nim/nim.qbs
@@ -45,7 +45,6 @@ QtcPlugin {
"nimcompilercleanstepconfigwidget.h", "nimcompilercleanstepconfigwidget.cpp", "nimcompilercleanstepconfigwidget.ui",
"nimcompilercleanstepfactory.h", "nimcompilercleanstepfactory.cpp",
"nimproject.h", "nimproject.cpp",
- "nimprojectmanager.h", "nimprojectmanager.cpp",
"nimprojectnode.h", "nimprojectnode.cpp",
"nimrunconfiguration.h", "nimrunconfiguration.cpp",
"nimrunconfigurationfactory.h", "nimrunconfigurationfactory.cpp",
diff --git a/src/plugins/nim/nimplugin.cpp b/src/plugins/nim/nimplugin.cpp
index 4017f5e950..d884e43f6a 100644
--- a/src/plugins/nim/nimplugin.cpp
+++ b/src/plugins/nim/nimplugin.cpp
@@ -31,7 +31,7 @@
#include "project/nimbuildconfigurationfactory.h"
#include "project/nimcompilerbuildstepfactory.h"
#include "project/nimcompilercleanstepfactory.h"
-#include "project/nimprojectmanager.h"
+#include "project/nimproject.h"
#include "project/nimrunconfigurationfactory.h"
#include "project/nimruncontrolfactory.h"
#include "project/nimtoolchainfactory.h"
@@ -41,6 +41,7 @@
#include "settings/nimsnippetprovider.h"
#include <coreplugin/fileiconprovider.h>
+#include <projectexplorer/projectmanager.h>
#include <projectexplorer/toolchainmanager.h>
#include <QtPlugin>
@@ -71,7 +72,6 @@ bool NimPlugin::initialize(const QStringList &arguments, QString *errorMessage)
addAutoReleasedObject(new NimSettings);
addAutoReleasedObject(new NimSnippetProvider);
addAutoReleasedObject(new NimEditorFactory);
- addAutoReleasedObject(new NimProjectManager);
addAutoReleasedObject(new NimBuildConfigurationFactory);
addAutoReleasedObject(new NimRunConfigurationFactory);
addAutoReleasedObject(new NimCompilerBuildStepFactory);
@@ -81,6 +81,8 @@ bool NimPlugin::initialize(const QStringList &arguments, QString *errorMessage)
addAutoReleasedObject(new NimCodeStylePreferencesFactory);
addAutoReleasedObject(new NimToolChainFactory);
+ ProjectExplorer::ProjectManager::registerProjectType<NimProject>(Constants::C_NIM_PROJECT_MIMETYPE);
+
return true;
}
diff --git a/src/plugins/nim/project/nimproject.cpp b/src/plugins/nim/project/nimproject.cpp
index bb3a8ef261..4794653c9e 100644
--- a/src/plugins/nim/project/nimproject.cpp
+++ b/src/plugins/nim/project/nimproject.cpp
@@ -26,7 +26,6 @@
#include "nimproject.h"
#include "nimbuildconfiguration.h"
#include "nimprojectnode.h"
-#include "nimprojectmanager.h"
#include "nimtoolchain.h"
#include "../nimconstants.h"
@@ -54,12 +53,12 @@ namespace Nim {
const int MIN_TIME_BETWEEN_PROJECT_SCANS = 4500;
-NimProject::NimProject(const QString &fileName)
+NimProject::NimProject(const FileName &fileName)
{
setId(Constants::C_NIMPROJECT_ID);
setDocument(new TextEditor::TextDocument);
- document()->setFilePath(FileName::fromString(fileName));
- QFileInfo fi = QFileInfo(fileName);
+ document()->setFilePath(fileName);
+ QFileInfo fi = fileName.toFileInfo();
QDir dir = fi.dir();
setRootProjectNode(new NimProjectNode(*this, FileName::fromString(dir.absolutePath())));
rootProjectNode()->setDisplayName(dir.dirName());
diff --git a/src/plugins/nim/project/nimproject.h b/src/plugins/nim/project/nimproject.h
index 385942dbe4..7ea82a0c81 100644
--- a/src/plugins/nim/project/nimproject.h
+++ b/src/plugins/nim/project/nimproject.h
@@ -39,7 +39,7 @@ class NimProject : public ProjectExplorer::Project
Q_OBJECT
public:
- explicit NimProject(const QString &fileName);
+ explicit NimProject(const Utils::FileName &fileName);
QString displayName() const override;
QStringList files(FilesMode) const override;
diff --git a/src/plugins/nim/project/nimprojectmanager.cpp b/src/plugins/nim/project/nimprojectmanager.cpp
deleted file mode 100644
index 3235b0f0de..0000000000
--- a/src/plugins/nim/project/nimprojectmanager.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) Filippo Cucchetto <filippocucchetto@gmail.com>
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "nimprojectmanager.h"
-#include "nimproject.h"
-
-#include "../nimconstants.h"
-
-using namespace ProjectExplorer;
-
-namespace Nim {
-
-QString NimProjectManager::mimeType() const
-{
- return QLatin1String(Constants::C_NIM_PROJECT_MIMETYPE);
-}
-
-Project *NimProjectManager::openProject(const QString &fileName)
-{
- return new NimProject(fileName);
-}
-
-}
diff --git a/src/plugins/nim/project/nimprojectmanager.h b/src/plugins/nim/project/nimprojectmanager.h
deleted file mode 100644
index a5336e465b..0000000000
--- a/src/plugins/nim/project/nimprojectmanager.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) Filippo Cucchetto <filippocucchetto@gmail.com>
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <projectexplorer/iprojectmanager.h>
-
-namespace Nim {
-
-class NimProjectManager : public ProjectExplorer::IProjectManager
-{
- Q_OBJECT
-
-public:
- QString mimeType() const override;
-
- ProjectExplorer::Project *openProject(const QString &fileName) override;
-};
-
-}
diff --git a/src/plugins/projectexplorer/jsonwizard/jsonkitspage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonkitspage.cpp
index 23576222a3..5faa5c3642 100644
--- a/src/plugins/projectexplorer/jsonwizard/jsonkitspage.cpp
+++ b/src/plugins/projectexplorer/jsonwizard/jsonkitspage.cpp
@@ -26,10 +26,10 @@
#include "jsonkitspage.h"
#include "jsonwizard.h"
-#include "../iprojectmanager.h"
#include "../kit.h"
#include "../project.h"
#include "../projectexplorer.h"
+#include "../projectmanager.h"
#include <coreplugin/featureprovider.h>
@@ -102,19 +102,16 @@ void JsonKitsPage::setPreferredFeatures(const QVariant &data)
void JsonKitsPage::setupProjectFiles(const JsonWizard::GeneratorFiles &files)
{
- Project *project = nullptr;
-
for (const JsonWizard::GeneratorFile &f : files) {
if (f.file.attributes() & GeneratedFile::OpenProjectAttribute) {
const QFileInfo fi(f.file.path());
const QString path = fi.absoluteFilePath();
- IProjectManager *manager = IProjectManager::managerForMimeType(Utils::mimeTypeForFile(fi));
- project = manager ? manager->openProject(path) : nullptr;
+ Project *project = ProjectManager::openProject(Utils::mimeTypeForFile(fi),
+ Utils::FileName::fromString(path));
if (project) {
if (setupProject(project))
project->saveSettings();
delete project;
- project = nullptr;
}
}
}
diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardscannergenerator.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardscannergenerator.cpp
index 88efc6f5e7..08d3ed1f88 100644
--- a/src/plugins/projectexplorer/jsonwizard/jsonwizardscannergenerator.cpp
+++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardscannergenerator.cpp
@@ -26,7 +26,7 @@
#include "jsonwizardscannergenerator.h"
#include "../projectexplorer.h"
-#include "../iprojectmanager.h"
+#include "../projectmanager.h"
#include "jsonwizard.h"
#include "jsonwizardfactory.h"
@@ -105,7 +105,7 @@ Core::GeneratedFiles JsonWizardScannerGenerator::fileList(Utils::MacroExpander *
for (auto it = result.begin(); it != result.end(); ++it) {
const QString relPath = project.relativeFilePath(it->path());
it->setBinary(binaryPattern.match(relPath).hasMatch());
- bool found = IProjectManager::managerForMimeType(Utils::mimeTypeForFile(relPath));
+ bool found = ProjectManager::canOpenProjectForMimeType(Utils::mimeTypeForFile(relPath));
if (found && !(onlyFirst && projectCount++))
it->setAttributes(it->attributes() | Core::GeneratedFile::OpenProjectAttribute);
}
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 081f7559eb..fbddc1a7a2 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -41,6 +41,7 @@
#include "project.h"
#include "projectexplorersettings.h"
#include "projectexplorersettingspage.h"
+#include "projectmanager.h"
#include "removetaskhandler.h"
#include "kitfeatureprovider.h"
#include "kitmanager.h"
@@ -62,11 +63,11 @@
#include "codestylesettingspropertiespage.h"
#include "dependenciespanel.h"
#include "foldernavigationwidget.h"
-#include "iprojectmanager.h"
#include "appoutputpane.h"
#include "processstep.h"
#include "kitinformation.h"
#include "projectfilewizardextension.h"
+#include "projectmanager.h"
#include "projecttreewidget.h"
#include "projectwindow.h"
#include "runsettingspropertiespage.h"
@@ -340,7 +341,7 @@ public:
QStringList m_profileMimeTypes;
AppOutputPane *m_outputPane = nullptr;
- Utils::ObjectPool<IProjectManager> m_projectManagers;
+ QHash<QString, std::function<Project *(const Utils::FileName &)>> m_projectCreators;
QList<QPair<QString, QString> > m_recentProjects; // pair of filename, displayname
static const int m_maxRecentProjects = 25;
@@ -1472,15 +1473,13 @@ void ProjectExplorerPlugin::extensionsInitialized()
});
factory->addMimeType(QStringLiteral("inode/directory"));
- dd->m_projectManagers.forEachObject([&](IProjectManager *manager) {
- const QString mimeType = manager->mimeType();
+ for (const QString &mimeType : dd->m_projectCreators.keys()) {
factory->addMimeType(mimeType);
Utils::MimeType mime = Utils::mimeTypeForName(mimeType);
allGlobPatterns.append(mime.globPatterns());
filterStrings.append(mime.filterString());
-
dd->m_profileMimeTypes += mimeType;
- });
+ }
addAutoReleasedObject(factory);
@@ -1693,11 +1692,11 @@ ProjectExplorerPlugin::OpenProjectResult ProjectExplorerPlugin::openProjects(con
Utils::MimeType mt = Utils::mimeTypeForFile(fileName);
if (mt.isValid()) {
- if (IProjectManager *manager = IProjectManager::managerForMimeType(mt)) {
+ if (ProjectManager::canOpenProjectForMimeType(mt)) {
if (!QFileInfo(filePath).isFile()) {
appendError(errorString,
tr("Failed opening project \"%1\": Project is not a file").arg(fileName));
- } else if (Project *pro = manager->openProject(filePath)) {
+ } else if (Project *pro = ProjectManager::openProject(mt, Utils::FileName::fromString(filePath))) {
QObject::connect(pro, &Project::parsingFinished, [pro]() {
emit SessionManager::instance()->projectFinishedParsing(pro);
});
@@ -1785,8 +1784,8 @@ void ProjectExplorerPluginPrivate::determineSessionToRestoreAtStartup()
QStringList ProjectExplorerPlugin::projectFileGlobs()
{
QStringList result;
- foreach (const IProjectManager *ipm, ExtensionSystem::PluginManager::getObjects<IProjectManager>()) {
- Utils::MimeType mimeType = Utils::mimeTypeForName(ipm->mimeType());
+ for (const QString &mt : dd->m_projectCreators.keys()) {
+ Utils::MimeType mimeType = Utils::mimeTypeForName(mt);
if (mimeType.isValid()) {
const QStringList patterns = mimeType.globPatterns();
if (!patterns.isEmpty())
@@ -3386,11 +3385,11 @@ ProjectExplorerSettings ProjectExplorerPlugin::projectExplorerSettings()
QStringList ProjectExplorerPlugin::projectFilePatterns()
{
QStringList patterns;
- dd->m_projectManagers.forEachObject([&](IProjectManager *pm) {
- Utils::MimeType mt = Utils::mimeTypeForName(pm->mimeType());
+ for (const QString &mime : dd->m_projectCreators.keys()) {
+ Utils::MimeType mt = Utils::mimeTypeForName(mime);
if (mt.isValid())
patterns.append(mt.globPatterns());
- });
+ }
return patterns;
}
@@ -3407,17 +3406,32 @@ QList<QPair<QString, QString> > ProjectExplorerPlugin::recentProjects()
return dd->recentProjects();
}
-IProjectManager::IProjectManager()
+void ProjectManager::registerProjectCreator(const QString &mimeType,
+ const std::function<Project *(const Utils::FileName &)> &creator)
{
- dd->m_projectManagers.addObject(this);
+ dd->m_projectCreators[mimeType] = creator;
}
-IProjectManager *IProjectManager::managerForMimeType(const Utils::MimeType &mt)
+Project *ProjectManager::openProject(const Utils::MimeType &mt, const Utils::FileName &fileName)
{
- if (!mt.isValid())
- return nullptr;
- auto pred = [mt](IProjectManager *m) { return mt.matchesName(m->mimeType()); };
- return dd->m_projectManagers.findObject(pred);
+ if (mt.isValid()) {
+ for (const QString &mimeType : dd->m_projectCreators.keys()) {
+ if (mt.matchesName(mimeType))
+ return dd->m_projectCreators[mimeType](fileName);
+ }
+ }
+ return nullptr;
+}
+
+bool ProjectManager::canOpenProjectForMimeType(const Utils::MimeType &mt)
+{
+ if (mt.isValid()) {
+ for (const QString &mimeType : dd->m_projectCreators.keys()) {
+ if (mt.matchesName(mimeType))
+ return true;
+ }
+ }
+ return false;
}
} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro
index 65c86e5a7b..d05aec8848 100644
--- a/src/plugins/projectexplorer/projectexplorer.pro
+++ b/src/plugins/projectexplorer/projectexplorer.pro
@@ -59,7 +59,7 @@ HEADERS += projectexplorer.h \
projectexplorerconstants.h \
projectexplorersettings.h \
project.h \
- iprojectmanager.h \
+ projectmanager.h \
currentprojectfilter.h \
allprojectsfind.h \
buildstep.h \
diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs
index 4a0ed91714..7fd2062e9d 100644
--- a/src/plugins/projectexplorer/projectexplorer.qbs
+++ b/src/plugins/projectexplorer/projectexplorer.qbs
@@ -82,7 +82,6 @@ Project {
"importwidget.cpp", "importwidget.h",
"ioutputparser.cpp", "ioutputparser.h",
"ipotentialkit.h",
- "iprojectmanager.h",
"itaskhandler.h",
"kit.cpp", "kit.h",
"kitchooser.cpp", "kitchooser.h",
@@ -117,6 +116,7 @@ Project {
"projectfilewizardextension.cpp", "projectfilewizardextension.h",
"projectimporter.cpp", "projectimporter.h",
"projectmacroexpander.cpp", "projectmacroexpander.h",
+ "projectmanager.h",
"projectmodels.cpp", "projectmodels.h",
"projectnodes.cpp", "projectnodes.h",
"projectpanelfactory.cpp", "projectpanelfactory.h",
diff --git a/src/plugins/projectexplorer/iprojectmanager.h b/src/plugins/projectexplorer/projectmanager.h
index 0e4d5f0733..1e90f958c1 100644
--- a/src/plugins/projectexplorer/iprojectmanager.h
+++ b/src/plugins/projectexplorer/projectmanager.h
@@ -27,26 +27,32 @@
#include "projectexplorer_export.h"
-#include <QObject>
-
-namespace Utils { class MimeType; }
+namespace Utils {
+class FileName;
+class MimeType;
+} // Utils
namespace ProjectExplorer {
class Project;
-class PROJECTEXPLORER_EXPORT IProjectManager : public QObject
+class PROJECTEXPLORER_EXPORT ProjectManager
{
- Q_OBJECT
-
public:
- IProjectManager();
- // Finds a IProjectManager matching the passed MimeType.
- static IProjectManager *managerForMimeType(const Utils::MimeType &mt);
-
- virtual QString mimeType() const = 0;
- // FileName is a canonical path of a checked-to-exist file.
- virtual Project *openProject(const QString &fileName) = 0;
+ static bool canOpenProjectForMimeType(const Utils::MimeType &mt);
+ static Project *openProject(const Utils::MimeType &mt, const Utils::FileName &fileName);
+
+ template <typename T>
+ static void registerProjectType(const QString &mimeType)
+ {
+ ProjectManager::registerProjectCreator(mimeType, [](const Utils::FileName &fileName) {
+ return new T(fileName);
+ });
+ }
+
+private:
+ static void registerProjectCreator(const QString &mimeType,
+ const std::function<Project *(const Utils::FileName &)> &);
};
} // namespace ProjectExplorer
diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp
index 328cd59c92..67b13c5a0a 100644
--- a/src/plugins/pythoneditor/pythoneditorplugin.cpp
+++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp
@@ -43,10 +43,10 @@
#include <projectexplorer/runconfiguration.h>
#include <projectexplorer/runconfigurationaspects.h>
#include <projectexplorer/project.h>
+#include <projectexplorer/projectmanager.h>
+#include <projectexplorer/projectnodes.h>
#include <projectexplorer/runnables.h>
#include <projectexplorer/target.h>
-#include <projectexplorer/iprojectmanager.h>
-#include <projectexplorer/projectnodes.h>
#include <texteditor/texteditorconstants.h>
@@ -77,7 +77,6 @@ const char PythonProjectContext[] = "PythonProjectContext";
class PythonRunConfiguration;
class PythonProjectFile;
-class PythonProject;
static QString scriptFromId(Core::Id id)
{
@@ -92,7 +91,7 @@ static Core::Id idFromScript(const QString &target)
class PythonProject : public Project
{
public:
- explicit PythonProject(const QString &filename);
+ explicit PythonProject(const Utils::FileName &filename);
QString displayName() const override { return m_projectName; }
@@ -123,11 +122,11 @@ private:
class PythonProjectFile : public Core::IDocument
{
public:
- PythonProjectFile(PythonProject *parent, QString fileName) : m_project(parent)
+ PythonProjectFile(PythonProject *parent, const FileName &fileName) : m_project(parent)
{
setId("Generic.ProjectFile");
setMimeType(PythonMimeType);
- setFilePath(FileName::fromString(fileName));
+ setFilePath(fileName);
}
ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override
@@ -350,13 +349,6 @@ PythonRunConfigurationWidget::PythonRunConfigurationWidget(PythonRunConfiguratio
setEnabled(runConfiguration->isEnabled());
}
-class PythonProjectManager : public IProjectManager
-{
-public:
- QString mimeType() const override { return QLatin1String(PythonMimeType); }
- Project *openProject(const QString &fileName) override { return new PythonProject(fileName); }
-};
-
class PythonRunConfigurationFactory : public IRunConfigurationFactory
{
public:
@@ -427,7 +419,7 @@ private:
}
};
-PythonProject::PythonProject(const QString &fileName)
+PythonProject::PythonProject(const FileName &fileName)
{
setId(PythonProjectId);
setDocument(new PythonProjectFile(this, fileName));
@@ -858,7 +850,8 @@ bool PythonEditorPlugin::initialize(const QStringList &arguments, QString *error
Q_UNUSED(arguments)
Q_UNUSED(errorMessage)
- addAutoReleasedObject(new PythonProjectManager);
+ ProjectManager::registerProjectType<PythonProject>(PythonMimeType);
+
addAutoReleasedObject(new PythonEditorFactory);
addAutoReleasedObject(new PythonRunConfigurationFactory);
addAutoReleasedObject(new PythonRunControlFactory);
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index 31023041ed..82fe5d6310 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -116,8 +116,8 @@ private:
// QbsProject:
// --------------------------------------------------------------------
-QbsProject::QbsProject(const QString &fileName) :
- m_projectName(QFileInfo(fileName).completeBaseName()),
+QbsProject::QbsProject(const FileName &fileName) :
+ m_projectName(fileName.toFileInfo().completeBaseName()),
m_qbsProjectParser(0),
m_qbsUpdateFutureInterface(0),
m_parsingScheduled(false),
@@ -766,7 +766,7 @@ void QbsProject::updateDocuments(const QSet<QString> &files)
}
QSet<IDocument *> toAdd;
foreach (const QString &f, filesToAdd)
- toAdd.insert(new QbsProjectFile(this, f));
+ toAdd.insert(new QbsProjectFile(this, FileName::fromString(f)));
DocumentManager::addDocuments(toAdd.toList());
m_qbsDocuments.unite(toAdd);
diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h
index 00bf5f2993..6e966c56f0 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.h
+++ b/src/plugins/qbsprojectmanager/qbsproject.h
@@ -58,7 +58,7 @@ class QbsProject : public ProjectExplorer::Project
Q_OBJECT
public:
- explicit QbsProject(const QString &filename);
+ explicit QbsProject(const Utils::FileName &filename);
~QbsProject() override;
QString displayName() const override;
diff --git a/src/plugins/qbsprojectmanager/qbsprojectfile.cpp b/src/plugins/qbsprojectmanager/qbsprojectfile.cpp
index 21455d7e4a..59dbff968f 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectfile.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectfile.cpp
@@ -31,12 +31,12 @@
namespace QbsProjectManager {
namespace Internal {
-QbsProjectFile::QbsProjectFile(QbsProject *parent, QString fileName) : Core::IDocument(parent),
+QbsProjectFile::QbsProjectFile(QbsProject *parent, const Utils::FileName &fileName) : Core::IDocument(parent),
m_project(parent)
{
setId("Qbs.ProjectFile");
- setMimeType(QLatin1String(Constants::MIME_TYPE));
- setFilePath(Utils::FileName::fromString(fileName));
+ setMimeType(Constants::MIME_TYPE);
+ setFilePath(fileName);
}
Core::IDocument::ReloadBehavior QbsProjectFile::reloadBehavior(ChangeTrigger state, ChangeType type) const
diff --git a/src/plugins/qbsprojectmanager/qbsprojectfile.h b/src/plugins/qbsprojectmanager/qbsprojectfile.h
index 80cf70113b..b0879fcee2 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectfile.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectfile.h
@@ -35,7 +35,7 @@ class QbsProject;
class QbsProjectFile : public Core::IDocument
{
public:
- QbsProjectFile(QbsProject *parent, QString fileName);
+ QbsProjectFile(QbsProject *parent, const Utils::FileName &fileName);
ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override;
bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override;
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
index 853077e86c..e9eff1f483 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp
@@ -100,16 +100,6 @@ QbsManager::~QbsManager()
m_instance = nullptr;
}
-QString QbsManager::mimeType() const
-{
- return QLatin1String(QmlJSTools::Constants::QBS_MIMETYPE);
-}
-
-ProjectExplorer::Project *QbsManager::openProject(const QString &fileName)
-{
- return new QbsProject(fileName);
-}
-
QString QbsManager::profileForKit(const ProjectExplorer::Kit *k)
{
if (!k)
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.h b/src/plugins/qbsprojectmanager/qbsprojectmanager.h
index 458690565c..ec0ab7a6ab 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanager.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.h
@@ -27,8 +27,6 @@
#include "qbsprojectmanager_global.h"
-#include <projectexplorer/iprojectmanager.h>
-
#include <QList>
#include <QString>
#include <QVariantMap>
@@ -45,7 +43,7 @@ namespace Internal {
class DefaultPropertyProvider;
class QbsLogSink;
-class QbsManager : public ProjectExplorer::IProjectManager
+class QbsManager : public QObject
{
Q_OBJECT
@@ -53,9 +51,6 @@ public:
QbsManager();
~QbsManager();
- QString mimeType() const override;
- ProjectExplorer::Project *openProject(const QString &fileName) override;
-
// QBS profiles management:
static QString profileForKit(const ProjectExplorer::Kit *k);
void setProfileForKit(const QString &name, const ProjectExplorer::Kit *k);
diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp
index 3d7c299474..f6ca67c018 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp
@@ -46,14 +46,18 @@
#include <coreplugin/icore.h>
#include <coreplugin/idocument.h>
#include <coreplugin/fileiconprovider.h>
+
#include <projectexplorer/buildmanager.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorer.h>
-#include <projectexplorer/projecttree.h>
#include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/projectmanager.h>
+#include <projectexplorer/projecttree.h>
#include <projectexplorer/session.h>
#include <projectexplorer/target.h>
+
#include <qtsupport/qtsupportconstants.h>
+#include <qmljstools/qmljstoolsconstants.h>
#include <utils/fileutils.h>
#include <utils/qtcassert.h>
@@ -87,6 +91,8 @@ bool QbsProjectManagerPlugin::initialize(const QStringList &arguments, QString *
Core::FileIconProvider::registerIconOverlayForSuffix(ProjectExplorer::Constants::FILEOVERLAY_QT, "qbs");
+ ProjectManager::registerProjectType<QbsProject>(QmlJSTools::Constants::QBS_MIMETYPE);
+
//create and register objects
addAutoReleasedObject(new QbsManager);
addAutoReleasedObject(new QbsBuildConfigurationFactory);
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
index 16a00a5f70..7d23622385 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
@@ -77,7 +77,7 @@ namespace Internal {
class QmakeProjectFile : public Core::IDocument
{
public:
- QmakeProjectFile(const QString &filePath);
+ explicit QmakeProjectFile(const FileName &fileName);
ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override;
bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override;
@@ -158,11 +158,11 @@ QDebug operator<<(QDebug d, const QmakeProjectFiles &f)
// ----------- QmakeProjectFile
-QmakeProjectFile::QmakeProjectFile(const QString &filePath)
+QmakeProjectFile::QmakeProjectFile(const FileName &fileName)
{
setId("Qmake.ProFile");
- setMimeType(QLatin1String(QmakeProjectManager::Constants::PROFILE_MIMETYPE));
- setFilePath(FileName::fromString(filePath));
+ setMimeType(QmakeProjectManager::Constants::PROFILE_MIMETYPE);
+ setFilePath(fileName);
}
Core::IDocument::ReloadBehavior QmakeProjectFile::reloadBehavior(ChangeTrigger state, ChangeType type) const
@@ -190,7 +190,7 @@ static QList<QmakeProject *> s_projects;
QmakeProject manages information about an individual Qt 4 (.pro) project file.
*/
-QmakeProject::QmakeProject(const QString &fileName) :
+QmakeProject::QmakeProject(const FileName &fileName) :
m_projectFiles(new QmakeProjectFiles),
m_qmakeVfs(new QMakeVfs),
m_cppCodeModelUpdater(new CppTools::CppProjectUpdater(this))
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h
index 1be48a4f18..fb96fbc266 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.h
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.h
@@ -60,7 +60,7 @@ class QMAKEPROJECTMANAGER_EXPORT QmakeProject : public ProjectExplorer::Project
Q_OBJECT
public:
- explicit QmakeProject(const QString &proFile);
+ explicit QmakeProject(const Utils::FileName &proFile);
~QmakeProject() final;
QmakeProFile *rootProFile() const;
diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp
index d2d9cce65e..4a54beadd5 100644
--- a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp
@@ -53,16 +53,6 @@ using namespace TextEditor;
namespace QmakeProjectManager {
-QString QmakeManager::mimeType() const
-{
- return QLatin1String(QmakeProjectManager::Constants::PROFILE_MIMETYPE);
-}
-
-ProjectExplorer::Project *QmakeManager::openProject(const QString &fileName)
-{
- return new QmakeProject(fileName);
-}
-
Node *QmakeManager::contextNode()
{
return ProjectTree::currentNode();
diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.h b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.h
index 170343a531..b7869f9374 100644
--- a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.h
+++ b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.h
@@ -27,7 +27,6 @@
#include "qmakeprojectmanager_global.h"
-#include <projectexplorer/iprojectmanager.h>
#include <projectexplorer/projectnodes.h>
namespace Core { class IEditor; }
@@ -41,14 +40,12 @@ class ToolChain;
namespace QmakeProjectManager {
-class QMAKEPROJECTMANAGER_EXPORT QmakeManager : public ProjectExplorer::IProjectManager
+class QMAKEPROJECTMANAGER_EXPORT QmakeManager : public QObject
{
Q_OBJECT
public:
void notifyChanged(const Utils::FileName &name);
- QString mimeType() const override;
- ProjectExplorer::Project *openProject(const QString &fileName) override;
// Context information used in the slot implementations
static ProjectExplorer::Node *contextNode();
diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp
index df5b0c8741..a771f344d5 100644
--- a/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp
@@ -45,18 +45,22 @@
#include "profilehighlighter.h"
#include <coreplugin/icore.h>
-#include <projectexplorer/buildmanager.h>
-#include <projectexplorer/session.h>
-#include <projectexplorer/projecttree.h>
-#include <projectexplorer/target.h>
#include <coreplugin/coreconstants.h>
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/actioncontainer.h>
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h>
+
+#include <projectexplorer/buildmanager.h>
+#include <projectexplorer/session.h>
+#include <projectexplorer/projectmanager.h>
+#include <projectexplorer/projecttree.h>
+#include <projectexplorer/target.h>
+
#include <texteditor/texteditoractionhandler.h>
#include <texteditor/texteditorconstants.h>
+
#include <utils/hostosinfo.h>
#include <utils/parameteraction.h>
@@ -82,6 +86,8 @@ bool QmakeProjectManagerPlugin::initialize(const QStringList &arguments, QString
m_qmakeProjectManager = new QmakeManager;
addAutoReleasedObject(m_qmakeProjectManager);
+ ProjectManager::registerProjectType<QmakeProject>(QmakeProjectManager::Constants::PROFILE_MIMETYPE);
+
ProjectExplorer::KitManager::registerKitInformation(new QmakeKitInformation);
IWizardFactory::registerFactoryCreator([] {
diff --git a/src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp b/src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp
index c716c4117b..f740378580 100644
--- a/src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp
+++ b/src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp
@@ -256,7 +256,7 @@ bool BaseQmakeProjectWizardDialog::writeUserFile(const QString &proFileName) con
if (!m_targetSetupPage)
return false;
- QmakeProject *pro = new QmakeProject(proFileName);
+ QmakeProject *pro = new QmakeProject(Utils::FileName::fromString(proFileName));
bool success = m_targetSetupPage->setupProject(pro);
if (success)
pro->saveSettings();
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index 909f6d14c7..3bfae5970e 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -30,19 +30,20 @@
#include "qmlprojectrunconfiguration.h"
#include "qmlprojectconstants.h"
#include "qmlprojectnodes.h"
-#include "qmlprojectmanager.h"
#include <coreplugin/icontext.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h>
#include <coreplugin/documentmanager.h>
-#include <qtsupport/baseqtversion.h>
-#include <qtsupport/qtkitinformation.h>
-#include <qmljs/qmljsmodelmanagerinterface.h>
+
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/kitmanager.h>
#include <projectexplorer/target.h>
+
+#include <qtsupport/baseqtversion.h>
+#include <qtsupport/qtkitinformation.h>
#include <qtsupport/qtsupportconstants.h>
+#include <qmljs/qmljsmodelmanagerinterface.h>
#include <utils/algorithm.h>
diff --git a/src/plugins/qmlprojectmanager/qmlprojectmanager.cpp b/src/plugins/qmlprojectmanager/qmlprojectmanager.cpp
deleted file mode 100644
index 363bbbc162..0000000000
--- a/src/plugins/qmlprojectmanager/qmlprojectmanager.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "qmlprojectmanager.h"
-#include "qmlprojectconstants.h"
-#include "qmlproject.h"
-
-namespace QmlProjectManager {
-namespace Internal {
-
-QString Manager::mimeType() const
-{
- return QLatin1String(Constants::QMLPROJECT_MIMETYPE);
-}
-
-ProjectExplorer::Project *Manager::openProject(const QString &fileName)
-{
- return new QmlProject(Utils::FileName::fromString(fileName));
-}
-
-} // namespace Internal
-} // namespace QmlProjectManager
diff --git a/src/plugins/qmlprojectmanager/qmlprojectmanager.h b/src/plugins/qmlprojectmanager/qmlprojectmanager.h
deleted file mode 100644
index fca006db9b..0000000000
--- a/src/plugins/qmlprojectmanager/qmlprojectmanager.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <projectexplorer/iprojectmanager.h>
-
-namespace QmlProjectManager {
-namespace Internal {
-
-class Manager: public ProjectExplorer::IProjectManager
-{
- Q_OBJECT
-
-public:
- QString mimeType() const override;
- ProjectExplorer::Project *openProject(const QString &fileName) override;
-};
-
-} // namespace Internal
-} // namespace QmlProjectManager
diff --git a/src/plugins/qmlprojectmanager/qmlprojectmanager.pro b/src/plugins/qmlprojectmanager/qmlprojectmanager.pro
index 8545eee471..a28281a17d 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectmanager.pro
+++ b/src/plugins/qmlprojectmanager/qmlprojectmanager.pro
@@ -7,7 +7,6 @@ DEFINES += QMLPROJECTMANAGER_LIBRARY
HEADERS += qmlproject.h \
qmlprojectenvironmentaspect.h \
qmlprojectplugin.h \
- qmlprojectmanager.h \
qmlprojectconstants.h \
qmlprojectnodes.h \
qmlprojectfile.h \
@@ -20,7 +19,6 @@ HEADERS += qmlproject.h \
SOURCES += qmlproject.cpp \
qmlprojectenvironmentaspect.cpp \
qmlprojectplugin.cpp \
- qmlprojectmanager.cpp \
qmlprojectnodes.cpp \
qmlprojectfile.cpp \
qmlprojectrunconfiguration.cpp \
diff --git a/src/plugins/qmlprojectmanager/qmlprojectmanager.qbs b/src/plugins/qmlprojectmanager/qmlprojectmanager.qbs
index a138a95bd9..a033afb338 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectmanager.qbs
+++ b/src/plugins/qmlprojectmanager/qmlprojectmanager.qbs
@@ -19,7 +19,6 @@ QtcPlugin {
"qmlprojectconstants.h",
"qmlprojectenvironmentaspect.cpp", "qmlprojectenvironmentaspect.h",
"qmlprojectfile.cpp", "qmlprojectfile.h",
- "qmlprojectmanager.cpp", "qmlprojectmanager.h",
"qmlprojectmanager_global.h",
"qmlprojectmanagerconstants.h",
"qmlprojectnodes.cpp", "qmlprojectnodes.h",
diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp
index 7ce0b2c9ed..a1a3666c50 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp
@@ -24,7 +24,6 @@
****************************************************************************/
#include "qmlprojectplugin.h"
-#include "qmlprojectmanager.h"
#include "qmlproject.h"
#include "qmlprojectrunconfigurationfactory.h"
#include "fileformat/qmlprojectfileformat.h"
@@ -32,7 +31,9 @@
#include <coreplugin/fileiconprovider.h>
#include <coreplugin/icore.h>
-#include <qtsupport/qtsupportconstants.h>
+#include <projectexplorer/projectmanager.h>
+
+#include <qmljstools/qmljstoolsconstants.h>
#include <QtPlugin>
@@ -40,6 +41,8 @@
#include <QMessageBox>
#include <QPushButton>
+using namespace ProjectExplorer;
+
namespace QmlProjectManager {
QmlProjectPlugin::QmlProjectPlugin()
@@ -53,9 +56,9 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage)
{
Q_UNUSED(errorMessage)
- addAutoReleasedObject(new Internal::Manager);
addAutoReleasedObject(new Internal::QmlProjectRunConfigurationFactory);
+ ProjectManager::registerProjectType<QmlProject>(QmlJSTools::Constants::QMLPROJECT_MIMETYPE);
Core::FileIconProvider::registerIconOverlayForSuffix(":/qmlproject/images/qmlproject.png", "qmlproject");
return true;
}