Commit c1bfc5d8 authored by hjk's avatar hjk

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's avatarTobias Hunger <tobias.hunger@qt.io>
parent 57144e28
/****************************************************************************
**
** 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
/****************************************************************************
**
** 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
......@@ -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))
{
......
......@@ -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;
......
......@@ -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
......
......@@ -45,7 +45,7 @@ namespace Internal {
class AutotoolsProjectFile : public Core::IDocument
{
public:
AutotoolsProjectFile(const QString &fileName);
AutotoolsProjectFile(const Utils::FileName &fileName);
};
} // namespace Internal
......
......@@ -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\
......
......@@ -20,8 +20,6 @@ QtcPlugin {
"autotoolsbuildconfiguration.h",
"autotoolsbuildsettingswidget.cpp",
"autotoolsbuildsettingswidget.h",
"autotoolsmanager.cpp",
"autotoolsmanager.h",
"autotoolsopenprojectwizard.cpp",
"autotoolsopenprojectwizard.h",
"autotoolsproject.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;
}
......@@ -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>
......
......@@ -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);
}
......@@ -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);
......
......@@ -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);
......
......@@ -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
......
......@@ -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;
......
......@@ -24,7 +24,6 @@
****************************************************************************/
#include "genericprojectfileseditor.h"
#include "genericprojectmanager.h"
#include "genericprojectconstants.h"
#include <coreplugin/editormanager/editormanager.h>
......
/****************************************************************************
**
** 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
/****************************************************************************
**
** 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
......@@ -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 \
......
......@@ -30,8 +30,6 @@ QtcPlugin {
"genericprojectconstants.h",
"genericprojectfileseditor.cpp",
"genericprojectfileseditor.h",
"genericprojectmanager.cpp",
"genericprojectmanager.h",
"genericprojectnodes.cpp",
"genericprojectnodes.h",
"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);
......
......@@ -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 \
......
......@@ -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",
......
......@@ -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;
}
......
......@@ -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());
......
......@@ -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;
......
/****************************************************************************
**
** 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);
}
}
/****************************************************************************
**
** 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;
};
}
......@@ -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)
{