forked from qt-creator/qt-creator
ProjectWindow: Remove special handling for TargetSettingsPanelWidget
Instead hide it in a standard IProjectPanelFactory Change-Id: I7e49b7be00e26c5f33e32d692079e2b82cbfe087 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
@@ -84,6 +84,11 @@ public:
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setCreateWidgetFunction(std::function<QWidget *(Project *)> function)
|
||||||
|
{
|
||||||
|
m_createWidgetFunction = function;
|
||||||
|
}
|
||||||
|
|
||||||
static bool supportsAllProjects(Project *);
|
static bool supportsAllProjects(Project *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -83,6 +83,7 @@
|
|||||||
#include "devicesupport/desktopdevicefactory.h"
|
#include "devicesupport/desktopdevicefactory.h"
|
||||||
#include "devicesupport/devicemanager.h"
|
#include "devicesupport/devicemanager.h"
|
||||||
#include "devicesupport/devicesettingspage.h"
|
#include "devicesupport/devicesettingspage.h"
|
||||||
|
#include "targetsettingspanel.h"
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
# include "windebuginterface.h"
|
# include "windebuginterface.h"
|
||||||
@@ -505,6 +506,19 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
unconfiguredProjectPanel->setSimpleCreateWidgetFunction<TargetSetupPageWrapper>(icon);
|
unconfiguredProjectPanel->setSimpleCreateWidgetFunction<TargetSetupPageWrapper>(icon);
|
||||||
addAutoReleasedObject(unconfiguredProjectPanel);
|
addAutoReleasedObject(unconfiguredProjectPanel);
|
||||||
|
|
||||||
|
auto targetSettingsPanelFactory = new IProjectPanelFactory;
|
||||||
|
targetSettingsPanelFactory->setPriority(-10);
|
||||||
|
displayName = QCoreApplication::translate("TargetSettingsPanelFactory", "Build & Run");
|
||||||
|
targetSettingsPanelFactory->setDisplayName(displayName);
|
||||||
|
targetSettingsPanelFactory->setSupportsFunction([](Project *project) {
|
||||||
|
return !project->targets().isEmpty()
|
||||||
|
|| project->requiresTargetPanel();
|
||||||
|
});
|
||||||
|
targetSettingsPanelFactory->setCreateWidgetFunction([](Project *project) {
|
||||||
|
return new TargetSettingsPanelWidget(project);
|
||||||
|
});
|
||||||
|
addAutoReleasedObject(targetSettingsPanelFactory);
|
||||||
|
|
||||||
addAutoReleasedObject(new ProcessStepFactory);
|
addAutoReleasedObject(new ProcessStepFactory);
|
||||||
|
|
||||||
addAutoReleasedObject(new AllProjectsFind);
|
addAutoReleasedObject(new AllProjectsFind);
|
||||||
|
@@ -37,7 +37,6 @@
|
|||||||
#include "projectexplorer.h"
|
#include "projectexplorer.h"
|
||||||
#include "session.h"
|
#include "session.h"
|
||||||
#include "iprojectproperties.h"
|
#include "iprojectproperties.h"
|
||||||
#include "targetsettingspanel.h"
|
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
|
|
||||||
#include <coreplugin/idocument.h>
|
#include <coreplugin/idocument.h>
|
||||||
@@ -165,9 +164,6 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project)
|
|||||||
bool projectHasTarget = hasTarget(project);
|
bool projectHasTarget = hasTarget(project);
|
||||||
m_hasTarget.insert(project, projectHasTarget);
|
m_hasTarget.insert(project, projectHasTarget);
|
||||||
|
|
||||||
if (projectHasTarget || project->requiresTargetPanel()) // Use the Targets page
|
|
||||||
subtabs << QCoreApplication::translate("TargetSettingsPanelFactory", "Build & Run");
|
|
||||||
|
|
||||||
// Add the project specific pages
|
// Add the project specific pages
|
||||||
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::getObjects<IProjectPanelFactory>();
|
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::getObjects<IProjectPanelFactory>();
|
||||||
Utils::sort(factories, &IProjectPanelFactory::prioritySort);
|
Utils::sort(factories, &IProjectPanelFactory::prioritySort);
|
||||||
@@ -216,18 +212,6 @@ void ProjectWindow::showProperties(int index, int subIndex)
|
|||||||
int pos = 0;
|
int pos = 0;
|
||||||
IProjectPanelFactory *fac = 0;
|
IProjectPanelFactory *fac = 0;
|
||||||
|
|
||||||
if (m_hasTarget.value(project) || project->requiresTargetPanel()) {
|
|
||||||
if (subIndex == 0) {
|
|
||||||
// Targets page
|
|
||||||
removeCurrentWidget();
|
|
||||||
TargetSettingsPanelWidget *panelWidget = new TargetSettingsPanelWidget(project);
|
|
||||||
m_currentWidget = panelWidget;
|
|
||||||
m_centralWidget->addWidget(m_currentWidget);
|
|
||||||
m_centralWidget->setCurrentWidget(m_currentWidget);
|
|
||||||
}
|
|
||||||
++pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::getObjects<IProjectPanelFactory>();
|
QList<IProjectPanelFactory *> factories = ExtensionSystem::PluginManager::getObjects<IProjectPanelFactory>();
|
||||||
Utils::sort(factories, &IProjectPanelFactory::prioritySort);
|
Utils::sort(factories, &IProjectPanelFactory::prioritySort);
|
||||||
foreach (IProjectPanelFactory *panelFactory, factories) {
|
foreach (IProjectPanelFactory *panelFactory, factories) {
|
||||||
|
Reference in New Issue
Block a user