forked from qt-creator/qt-creator
ProjectExplorer: Further clean up of IProjectPanelFactory
Rename to ProjectPanelFactory, hide list of factories from .h, rename include guards. Change-Id: I2e0befcaf847e5c3a0b493b58e7bcf3e9263f4f9 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
#include <cpptools/cppmodelmanager.h>
|
#include <cpptools/cppmodelmanager.h>
|
||||||
|
|
||||||
#include <projectexplorer/iprojectpanelfactory.h>
|
#include <projectexplorer/projectpanelfactory.h>
|
||||||
#include <projectexplorer/projectexplorer.h>
|
#include <projectexplorer/projectexplorer.h>
|
||||||
#include <projectexplorer/session.h>
|
#include <projectexplorer/session.h>
|
||||||
|
|
||||||
@@ -55,12 +55,12 @@ bool ClangCodeModelPlugin::initialize(const QStringList &arguments, QString *err
|
|||||||
Q_UNUSED(arguments)
|
Q_UNUSED(arguments)
|
||||||
Q_UNUSED(errorMessage)
|
Q_UNUSED(errorMessage)
|
||||||
|
|
||||||
auto panelFactory = new ProjectExplorer::IProjectPanelFactory();
|
auto panelFactory = new ProjectExplorer::ProjectPanelFactory();
|
||||||
panelFactory->setPriority(60);
|
panelFactory->setPriority(60);
|
||||||
panelFactory->setDisplayName(ClangProjectSettingsWidget::tr("Clang Settings"));
|
panelFactory->setDisplayName(ClangProjectSettingsWidget::tr("Clang Settings"));
|
||||||
panelFactory->setSimpleCreateWidgetFunction<ClangProjectSettingsWidget>(QIcon());
|
panelFactory->setSimpleCreateWidgetFunction<ClangProjectSettingsWidget>(QIcon());
|
||||||
|
|
||||||
ProjectExplorer::IProjectPanelFactory::registerFactory(panelFactory);
|
ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory);
|
||||||
|
|
||||||
ClangCodeModel::Internal::initializeClang();
|
ClangCodeModel::Internal::initializeClang();
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,7 @@
|
|||||||
#include "devicesupport/devicemanager.h"
|
#include "devicesupport/devicemanager.h"
|
||||||
#include "devicesupport/devicesettingspage.h"
|
#include "devicesupport/devicesettingspage.h"
|
||||||
#include "targetsettingspanel.h"
|
#include "targetsettingspanel.h"
|
||||||
#include "iprojectpanelfactory.h"
|
#include "projectpanelfactory.h"
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
# include "windebuginterface.h"
|
# include "windebuginterface.h"
|
||||||
@@ -321,7 +321,7 @@ ProjectExplorerPlugin::~ProjectExplorerPlugin()
|
|||||||
// Force sequence of deletion:
|
// Force sequence of deletion:
|
||||||
delete d->m_kitManager; // remove all the profile informations
|
delete d->m_kitManager; // remove all the profile informations
|
||||||
delete d->m_toolChainManager;
|
delete d->m_toolChainManager;
|
||||||
IProjectPanelFactory::destroyFactories();
|
ProjectPanelFactory::destroyFactories();
|
||||||
|
|
||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
@@ -471,31 +471,31 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
addAutoReleasedObject(new CurrentProjectFilter);
|
addAutoReleasedObject(new CurrentProjectFilter);
|
||||||
|
|
||||||
// ProjectPanelFactories
|
// ProjectPanelFactories
|
||||||
auto editorSettingsPanelFactory = new IProjectPanelFactory;
|
auto editorSettingsPanelFactory = new ProjectPanelFactory;
|
||||||
editorSettingsPanelFactory->setPriority(30);
|
editorSettingsPanelFactory->setPriority(30);
|
||||||
QString displayName = QCoreApplication::translate("EditorSettingsPanelFactory", "Editor");
|
QString displayName = QCoreApplication::translate("EditorSettingsPanelFactory", "Editor");
|
||||||
editorSettingsPanelFactory->setDisplayName(displayName);
|
editorSettingsPanelFactory->setDisplayName(displayName);
|
||||||
QIcon icon = QIcon(QLatin1String(":/projectexplorer/images/EditorSettings.png"));
|
QIcon icon = QIcon(QLatin1String(":/projectexplorer/images/EditorSettings.png"));
|
||||||
editorSettingsPanelFactory->setSimpleCreateWidgetFunction<EditorSettingsWidget>(icon);
|
editorSettingsPanelFactory->setSimpleCreateWidgetFunction<EditorSettingsWidget>(icon);
|
||||||
IProjectPanelFactory::registerFactory(editorSettingsPanelFactory);
|
ProjectPanelFactory::registerFactory(editorSettingsPanelFactory);
|
||||||
|
|
||||||
auto codeStyleSettingsPanelFactory = new IProjectPanelFactory;
|
auto codeStyleSettingsPanelFactory = new ProjectPanelFactory;
|
||||||
codeStyleSettingsPanelFactory->setPriority(40);
|
codeStyleSettingsPanelFactory->setPriority(40);
|
||||||
displayName = QCoreApplication::translate("CodeStyleSettingsPanelFactory", "Code Style");
|
displayName = QCoreApplication::translate("CodeStyleSettingsPanelFactory", "Code Style");
|
||||||
codeStyleSettingsPanelFactory->setDisplayName(displayName);
|
codeStyleSettingsPanelFactory->setDisplayName(displayName);
|
||||||
icon = QIcon(QLatin1String(":/projectexplorer/images/CodeStyleSettings.png"));
|
icon = QIcon(QLatin1String(":/projectexplorer/images/CodeStyleSettings.png"));
|
||||||
codeStyleSettingsPanelFactory->setSimpleCreateWidgetFunction<CodeStyleSettingsWidget>(icon);
|
codeStyleSettingsPanelFactory->setSimpleCreateWidgetFunction<CodeStyleSettingsWidget>(icon);
|
||||||
IProjectPanelFactory::registerFactory(codeStyleSettingsPanelFactory);
|
ProjectPanelFactory::registerFactory(codeStyleSettingsPanelFactory);
|
||||||
|
|
||||||
auto dependenciesPanelFactory = new IProjectPanelFactory;
|
auto dependenciesPanelFactory = new ProjectPanelFactory;
|
||||||
dependenciesPanelFactory->setPriority(50);
|
dependenciesPanelFactory->setPriority(50);
|
||||||
displayName = QCoreApplication::translate("DependenciesPanelFactory", "Dependencies");
|
displayName = QCoreApplication::translate("DependenciesPanelFactory", "Dependencies");
|
||||||
dependenciesPanelFactory->setDisplayName(displayName);
|
dependenciesPanelFactory->setDisplayName(displayName);
|
||||||
icon = QIcon(QLatin1String(":/projectexplorer/images/ProjectDependencies.png"));
|
icon = QIcon(QLatin1String(":/projectexplorer/images/ProjectDependencies.png"));
|
||||||
dependenciesPanelFactory->setSimpleCreateWidgetFunction<DependenciesWidget>(icon);
|
dependenciesPanelFactory->setSimpleCreateWidgetFunction<DependenciesWidget>(icon);
|
||||||
IProjectPanelFactory::registerFactory(dependenciesPanelFactory);
|
ProjectPanelFactory::registerFactory(dependenciesPanelFactory);
|
||||||
|
|
||||||
auto unconfiguredProjectPanel = new IProjectPanelFactory;
|
auto unconfiguredProjectPanel = new ProjectPanelFactory;
|
||||||
unconfiguredProjectPanel->setPriority(-10);
|
unconfiguredProjectPanel->setPriority(-10);
|
||||||
unconfiguredProjectPanel->setDisplayName(tr("Configure Project"));
|
unconfiguredProjectPanel->setDisplayName(tr("Configure Project"));
|
||||||
unconfiguredProjectPanel->setSupportsFunction([](Project *project){
|
unconfiguredProjectPanel->setSupportsFunction([](Project *project){
|
||||||
@@ -503,9 +503,9 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
});
|
});
|
||||||
icon = QIcon(QLatin1String(":/projectexplorer/images/unconfigured.png"));
|
icon = QIcon(QLatin1String(":/projectexplorer/images/unconfigured.png"));
|
||||||
unconfiguredProjectPanel->setSimpleCreateWidgetFunction<TargetSetupPageWrapper>(icon);
|
unconfiguredProjectPanel->setSimpleCreateWidgetFunction<TargetSetupPageWrapper>(icon);
|
||||||
IProjectPanelFactory::registerFactory(unconfiguredProjectPanel);
|
ProjectPanelFactory::registerFactory(unconfiguredProjectPanel);
|
||||||
|
|
||||||
auto targetSettingsPanelFactory = new IProjectPanelFactory;
|
auto targetSettingsPanelFactory = new ProjectPanelFactory;
|
||||||
targetSettingsPanelFactory->setPriority(-10);
|
targetSettingsPanelFactory->setPriority(-10);
|
||||||
displayName = QCoreApplication::translate("TargetSettingsPanelFactory", "Build & Run");
|
displayName = QCoreApplication::translate("TargetSettingsPanelFactory", "Build & Run");
|
||||||
targetSettingsPanelFactory->setDisplayName(displayName);
|
targetSettingsPanelFactory->setDisplayName(displayName);
|
||||||
@@ -516,7 +516,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
targetSettingsPanelFactory->setCreateWidgetFunction([](Project *project) {
|
targetSettingsPanelFactory->setCreateWidgetFunction([](Project *project) {
|
||||||
return new TargetSettingsPanelWidget(project);
|
return new TargetSettingsPanelWidget(project);
|
||||||
});
|
});
|
||||||
IProjectPanelFactory::registerFactory(targetSettingsPanelFactory);
|
ProjectPanelFactory::registerFactory(targetSettingsPanelFactory);
|
||||||
|
|
||||||
addAutoReleasedObject(new ProcessStepFactory);
|
addAutoReleasedObject(new ProcessStepFactory);
|
||||||
|
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ HEADERS += projectexplorer.h \
|
|||||||
xcodebuildparser.h \
|
xcodebuildparser.h \
|
||||||
propertiespanel.h \
|
propertiespanel.h \
|
||||||
panelswidget.h \
|
panelswidget.h \
|
||||||
iprojectpanelfactory.h
|
projectpanelfactory.h
|
||||||
|
|
||||||
SOURCES += projectexplorer.cpp \
|
SOURCES += projectexplorer.cpp \
|
||||||
abi.cpp \
|
abi.cpp \
|
||||||
@@ -286,7 +286,7 @@ SOURCES += projectexplorer.cpp \
|
|||||||
xcodebuildparser.cpp \
|
xcodebuildparser.cpp \
|
||||||
propertiespanel.cpp \
|
propertiespanel.cpp \
|
||||||
panelswidget.cpp \
|
panelswidget.cpp \
|
||||||
iprojectpanelfactory.cpp
|
projectpanelfactory.cpp
|
||||||
|
|
||||||
FORMS += processstep.ui \
|
FORMS += processstep.ui \
|
||||||
editorsettingspropertiespage.ui \
|
editorsettingspropertiespage.ui \
|
||||||
|
|||||||
@@ -85,7 +85,6 @@ QtcPlugin {
|
|||||||
"ipotentialkit.cpp",
|
"ipotentialkit.cpp",
|
||||||
"ipotentialkit.h",
|
"ipotentialkit.h",
|
||||||
"iprojectmanager.h",
|
"iprojectmanager.h",
|
||||||
"iprojectpanelfactory.cpp", "iprojectpanelfactory.h",
|
|
||||||
"itaskhandler.h",
|
"itaskhandler.h",
|
||||||
"kit.cpp", "kit.h",
|
"kit.cpp", "kit.h",
|
||||||
"kitchooser.cpp", "kitchooser.h",
|
"kitchooser.cpp", "kitchooser.h",
|
||||||
@@ -122,6 +121,7 @@ QtcPlugin {
|
|||||||
"projectmacroexpander.cpp", "projectmacroexpander.h",
|
"projectmacroexpander.cpp", "projectmacroexpander.h",
|
||||||
"projectmodels.cpp", "projectmodels.h",
|
"projectmodels.cpp", "projectmodels.h",
|
||||||
"projectnodes.cpp", "projectnodes.h",
|
"projectnodes.cpp", "projectnodes.h",
|
||||||
|
"projectpanelfactory.cpp", "projectpanelfactory.h",
|
||||||
"projecttreewidget.cpp", "projecttreewidget.h",
|
"projecttreewidget.cpp", "projecttreewidget.h",
|
||||||
"projectwindow.cpp", "projectwindow.h",
|
"projectwindow.cpp", "projectwindow.h",
|
||||||
"projectwizardpage.cpp", "projectwizardpage.h", "projectwizardpage.ui",
|
"projectwizardpage.cpp", "projectwizardpage.h", "projectwizardpage.ui",
|
||||||
|
|||||||
@@ -27,74 +27,71 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "iprojectpanelfactory.h"
|
#include "projectpanelfactory.h"
|
||||||
|
|
||||||
using namespace ProjectExplorer;
|
namespace ProjectExplorer {
|
||||||
|
|
||||||
QList<IProjectPanelFactory *> IProjectPanelFactory::s_factories;
|
static QList<ProjectPanelFactory *> s_factories;
|
||||||
|
|
||||||
IProjectPanelFactory::IProjectPanelFactory()
|
ProjectPanelFactory::ProjectPanelFactory()
|
||||||
: m_priority(0),
|
: m_priority(0),
|
||||||
m_supportsFunction(&supportsAllProjects)
|
m_supportsFunction([] (Project *) { return true; })
|
||||||
{}
|
{}
|
||||||
|
|
||||||
int IProjectPanelFactory::priority() const
|
int ProjectPanelFactory::priority() const
|
||||||
{
|
{
|
||||||
return m_priority;
|
return m_priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IProjectPanelFactory::setPriority(int priority)
|
void ProjectPanelFactory::setPriority(int priority)
|
||||||
{
|
{
|
||||||
m_priority = priority;
|
m_priority = priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString IProjectPanelFactory::displayName() const
|
QString ProjectPanelFactory::displayName() const
|
||||||
{
|
{
|
||||||
return m_displayName;
|
return m_displayName;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IProjectPanelFactory::setDisplayName(const QString &name)
|
void ProjectPanelFactory::setDisplayName(const QString &name)
|
||||||
{
|
{
|
||||||
m_displayName = name;
|
m_displayName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IProjectPanelFactory::supportsAllProjects(Project *)
|
void ProjectPanelFactory::registerFactory(ProjectPanelFactory *factory)
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void IProjectPanelFactory::registerFactory(IProjectPanelFactory *factory)
|
|
||||||
{
|
{
|
||||||
auto it = std::lower_bound(s_factories.begin(), s_factories.end(), factory,
|
auto it = std::lower_bound(s_factories.begin(), s_factories.end(), factory,
|
||||||
[](IProjectPanelFactory *a, IProjectPanelFactory *b) {
|
[](ProjectPanelFactory *a, ProjectPanelFactory *b) {
|
||||||
return (a->priority() == b->priority() && a < b) || a->priority() < b->priority();
|
return (a->priority() == b->priority() && a < b) || a->priority() < b->priority();
|
||||||
});
|
});
|
||||||
|
|
||||||
s_factories.insert(it, factory);
|
s_factories.insert(it, factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<IProjectPanelFactory *> IProjectPanelFactory::factories()
|
QList<ProjectPanelFactory *> ProjectPanelFactory::factories()
|
||||||
{
|
{
|
||||||
return s_factories;
|
return s_factories;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IProjectPanelFactory::destroyFactories()
|
void ProjectPanelFactory::destroyFactories()
|
||||||
{
|
{
|
||||||
qDeleteAll(s_factories);
|
qDeleteAll(s_factories);
|
||||||
s_factories.clear();
|
s_factories.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IProjectPanelFactory::supports(Project *project)
|
bool ProjectPanelFactory::supports(Project *project)
|
||||||
{
|
{
|
||||||
return m_supportsFunction(project);
|
return m_supportsFunction(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IProjectPanelFactory::setSupportsFunction(std::function<bool (Project *)> function)
|
void ProjectPanelFactory::setSupportsFunction(std::function<bool (Project *)> function)
|
||||||
{
|
{
|
||||||
m_supportsFunction = function;
|
m_supportsFunction = function;
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *IProjectPanelFactory::createWidget(Project *project)
|
QWidget *ProjectPanelFactory::createWidget(Project *project)
|
||||||
{
|
{
|
||||||
return m_createWidgetFunction(project);
|
return m_createWidgetFunction(project);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace ProjectExplorer
|
||||||
@@ -27,27 +27,24 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifndef IPROJECTPROPERTIES_H
|
#ifndef PROJECTPANELFACTORY_H
|
||||||
#define IPROJECTPROPERTIES_H
|
#define PROJECTPANELFACTORY_H
|
||||||
|
|
||||||
#include "projectexplorer_export.h"
|
#include "projectexplorer_export.h"
|
||||||
#include "propertiespanel.h"
|
#include "propertiespanel.h"
|
||||||
#include "panelswidget.h"
|
#include "panelswidget.h"
|
||||||
|
|
||||||
#include <QIcon>
|
|
||||||
#include <QWidget>
|
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
|
|
||||||
class Project;
|
class Project;
|
||||||
class ProjectExplorerPlugin;
|
class ProjectExplorerPlugin;
|
||||||
class Target;
|
|
||||||
|
|
||||||
class PROJECTEXPLORER_EXPORT IProjectPanelFactory
|
class PROJECTEXPLORER_EXPORT ProjectPanelFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IProjectPanelFactory();
|
ProjectPanelFactory();
|
||||||
|
|
||||||
// simple properties
|
// simple properties
|
||||||
QString displayName() const;
|
QString displayName() const;
|
||||||
@@ -55,11 +52,11 @@ public:
|
|||||||
int priority() const;
|
int priority() const;
|
||||||
void setPriority(int priority);
|
void setPriority(int priority);
|
||||||
|
|
||||||
// interface for users of IProjectPanelFactory
|
// interface for users of ProjectPanelFactory
|
||||||
bool supports(Project *project);
|
bool supports(Project *project);
|
||||||
QWidget *createWidget(ProjectExplorer::Project *project);
|
QWidget *createWidget(Project *project);
|
||||||
|
|
||||||
// interface for "implementations" of IProjectPanelFactory
|
// interface for "implementations" of ProjectPanelFactory
|
||||||
// by default all projects are supported, only set a custom supports function
|
// by default all projects are supported, only set a custom supports function
|
||||||
// if you need something different
|
// if you need something different
|
||||||
void setSupportsFunction(std::function<bool (Project *)> function);
|
void setSupportsFunction(std::function<bool (Project *)> function);
|
||||||
@@ -88,11 +85,10 @@ public:
|
|||||||
m_createWidgetFunction = function;
|
m_createWidgetFunction = function;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool supportsAllProjects(Project *);
|
// This takes ownership.
|
||||||
|
static void registerFactory(ProjectPanelFactory *factory);
|
||||||
|
|
||||||
static void registerFactory(IProjectPanelFactory *factory);
|
static QList<ProjectPanelFactory *> factories();
|
||||||
|
|
||||||
static QList<IProjectPanelFactory *> factories();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class ProjectExplorerPlugin;
|
friend class ProjectExplorerPlugin;
|
||||||
@@ -102,9 +98,8 @@ private:
|
|||||||
QString m_displayName;
|
QString m_displayName;
|
||||||
std::function<bool (Project *)> m_supportsFunction;
|
std::function<bool (Project *)> m_supportsFunction;
|
||||||
std::function<QWidget *(Project *)> m_createWidgetFunction;
|
std::function<QWidget *(Project *)> m_createWidgetFunction;
|
||||||
static QList<IProjectPanelFactory *> s_factories;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
|
||||||
#endif // IPROJECTPROPERTIES_H
|
#endif // PROJECTPANELFACTORY_H
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
#include "kitmanager.h"
|
#include "kitmanager.h"
|
||||||
#include "project.h"
|
#include "project.h"
|
||||||
#include "projectexplorer.h"
|
#include "projectexplorer.h"
|
||||||
#include "iprojectpanelfactory.h"
|
#include "projectpanelfactory.h"
|
||||||
#include "session.h"
|
#include "session.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ void ProjectWindow::projectUpdated(Project *p)
|
|||||||
QStringList ProjectWindow::tabDisplayNamesFor(Project *project)
|
QStringList ProjectWindow::tabDisplayNamesFor(Project *project)
|
||||||
{
|
{
|
||||||
QStringList subTabs;
|
QStringList subTabs;
|
||||||
foreach (IProjectPanelFactory *panelFactory, IProjectPanelFactory::factories()) {
|
foreach (ProjectPanelFactory *panelFactory, ProjectPanelFactory::factories()) {
|
||||||
if (panelFactory->supports(project))
|
if (panelFactory->supports(project))
|
||||||
subTabs << panelFactory->displayName();
|
subTabs << panelFactory->displayName();
|
||||||
}
|
}
|
||||||
@@ -214,9 +214,9 @@ void ProjectWindow::showProperties(int index, int subIndex)
|
|||||||
|
|
||||||
// Set up custom panels again:
|
// Set up custom panels again:
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
IProjectPanelFactory *fac = 0;
|
ProjectPanelFactory *fac = 0;
|
||||||
|
|
||||||
foreach (IProjectPanelFactory *panelFactory, IProjectPanelFactory::factories()) {
|
foreach (ProjectPanelFactory *panelFactory, ProjectPanelFactory::factories()) {
|
||||||
if (panelFactory->supports(project)) {
|
if (panelFactory->supports(project)) {
|
||||||
if (subIndex == pos) {
|
if (subIndex == pos) {
|
||||||
fac = panelFactory;
|
fac = panelFactory;
|
||||||
|
|||||||
Reference in New Issue
Block a user